inference
26 subscribers
3 photos
1 link
Автор @doubleuoziman
Download Telegram
Channel created
Привет, 👐 меня зовут Александр, я TL ML Engineer. Последние пару лет я активно занимаюсь 𝗠𝗼𝗱𝗲𝗹 𝗜𝗻𝗳𝗲𝗿𝗲𝗻𝗰𝗲 больших (малых) моделей, таких как LLM, StableDiffusion, Qwen и другие.

В этой сфере появляется ценный опыт, которым хочу делиться, а также найти единомышленников, которые сталкиваются с похожими задачами:
- Оптимизация больших моделей (память, latency, throughput);
- Деплой в продакшн;
- Работа с GPU (CUDA, Triton 🧜, C++).

Буду стараться делиться:
- Современными инструментами и подходами для ускорения inference;
- Полезными статьями и ссылками на зарубежные ресурсы;
- Примерами решений сложных задач из моего опыта.

А какие проблемы с inference моделей возникали у вас?
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4
Почему 𝗙𝗮𝘀𝘁𝗔𝗣𝗜 не спасет ваш 𝗠𝗼𝗱𝗲𝗹 𝗜𝗻𝗳𝗲𝗿𝗲𝗻𝗰𝗲? Разбираем ошибки ML-инженеров

🎒 𝗦𝘁𝗮𝗿𝘁𝗲𝗱 𝗽𝗮𝗰𝗸 у нас такой:
- PyTorch модель в формате .pth, решающая mission impossible задачу;
- k8s кластер. Если не работали с ним, можно читать как удобное пространство для работы с ресурсами и сервисами на этих ресурсах. Можно и на ноуте развернуть Docker или minikube;
- Ноды с GPU. Это могут быть любые GPU под инфреренс - A2, A100, H100 и другие.

Проблема: хотим иметь online сервис с моделью и ходить до него с помощью REST.

🦖 Какие есть варианты зедеплоить PyTorch модель:
- Написать FastAPI сервис и положить его на ноду с GPU с помощью nodeAffinity или nodeSelector;
- Собрать образ с каким - нибудь из early-bird фреймворков - TorchServe, Triton Inference Server, BentoML и так далее. Задеплоить этот образ в k8s;
- Развернуть в k8s какой - нибудь рантайм-движок для Model Inference со своим пасьянсом и менеджерить его.

❗️ У первых двух подходов есть 𝗸𝗲𝘆 𝗹𝗶𝗺𝗶𝘁𝗮𝘁𝗶𝗼𝗻𝘀 𝗮𝗻𝗱 𝗱𝗿𝗮𝘄𝗯𝗮𝗰𝗸𝘀:
- Допустим, у нас в продакшене 10 разных моделей, и мы хотим динамически их запускать в зависимости от нагрузки, но FastAPI + PyTorch на каждой ноде с GPU приведет к неэффективному расходу ресурсов: одна модель займет всю GPU, даже если работает всего 5% времени;
- Батчинг, асинхронный стриминг, скейлинг, GPU-оптимизации и многое другое — всё это не поддерживается;
- Из коробки никакой унификации сервисов достичь не получится, превратится все в кашу 🍜 из множества сервисов, которые не связаны друг с другом.

📌 Итого:
- FastAPI хорош для простых API, но если вам нужен эффективный Model Inference, то нужно иметь inference-движок для работы с GPU;
- NVIDIA Triton Inference Server не просто позволяет шарить GPU между моделями, но еще и поддерживает разные фреймворки (PyTorch, TensorRT, ONNX, XGBoost). В следующем посте разберемся, как это работает. Расскажу про преимущества Triton.

Как вы сейчас деплоите модели? Используете ли уже Triton?
Please open Telegram to view this post
VIEW IN TELEGRAM
3
Битва титанов: Как выбрать идеальный 𝗶𝗻𝗳𝗲𝗿𝗲𝗻𝗰𝗲-𝗲𝗻𝗴𝗶𝗻𝗲 для ваших 𝗗𝗲𝗲𝗽 𝗟𝗲𝗮𝗿𝗻𝗶𝗻𝗴 моделей?

TL;DR: Прочитайте вот это → Neptune.ai: ML Model Serving Best Tools

Must-have фичи, без которых не обойтись:
Нативная поддержка GPU
Железная отказоустойчивость
Высокая производительность
Низкая задержка (Low latency)
Высокая пропускная способность (High throughput)
Гибкость под любые задачи
Простота использования
Экономия на разработке и поддержке

Большинство инструментов обещают всё это на своих красивых лендингах, но на практике, как всегда, всё в деталях. Поэтому я буду отмечать только то, чего у них нет или где они слабы.

Категории инструментов для model serving
Model-serving runtime'ы
Упаковывают ML-модели в оптимизированные для инференса контейнеры, которые можно запустить на любом сервере.

🔹 𝗕𝗲𝗻𝘁𝗼𝗠𝗟
Под капотом использует Python, который не про высокую производительность (можем обсудить в комментариях)
Требует больше кода для запуска модели

🔹 𝗧𝗲𝗻𝘀𝗼𝗿𝗙𝗹𝗼𝘄 𝗦𝗲𝗿𝘃𝗶𝗻𝗴
Поддерживает только TensorFlow
Посредственная документация
Нет поддержки concurrent model execution

🔹 𝗧𝗼𝗿𝗰𝗵𝗦𝗲𝗿𝘃𝗲
Поддерживает только PyTorch
Нет поддержки concurrent model execution

🔹 𝗡𝘃𝗶𝗱𝗶𝗮 𝗧𝗿𝗶𝘁𝗼𝗻
Сложен в настройке
Работает только на GPU от Nvidia

Model-serving платформы
Фокусируются на деплое и масштабировании моделей.

🔹 KServe
🔹 Seldon Core
🔹 Решения от облачных провайдеров (не доступны в России)

О них расскажу в отдельном посте, так как они решают другие задачи, чем runtime'ы. Чаще всего это касается масштабирования и деплоя моделей.

📌 Итоги:
- Если вы используете разные фреймворки (PyTorch, TensorFlow и другие) или хотите попробовать LLM-фреймворки (vLLM, SGLang и т. д.), то вам нужен Triton.
- Если готовы разобраться с настройкой и использовать только GPU от Nvidia, все нюансы Triton можно закрыть.
- По мнению Neptune.ai: "Triton is the prime choice for teams with robust software skills needing the best performance on Nvidia GPUs. It has no contender for large-scale scenarios demanding high throughput and low latency, as it is the only tool offering concurrent model execution on inference-optimized runtimes."

📚 Полезные материалы для глубокого погружения:
- Детальный анализ фреймворков от Neptune.ai
- Крутое исследование от Biano AI (2021): раз, два

В следующем посте раскрою все секретные фичи Triton.

А как вы деплоите свои модели? Делитесь опытом в комментариях!
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥4
🧜 NVIDIA Triton: Почему топовые AI компании выбирают именно его для ML инференса?

После предыдущего поста про выбор inference engine многие спрашивали - почему именно Triton? Делюсь инсайдами из реального опыта использования.

🦖 Key Features, которые выделяют Triton:

🔹 Высокая производительность
Написан на C++, а не на Python;
Оптимизирован для работы с CUDA;
Минимальные накладные расходы на inference.
Результат: latency в 2-3 раза ниже чем у Python-решений.

🔹 Concurrent Model Execution
Несколько моделей на одной GPU;
Динамическое распределение памяти;
Эффективный scheduling между моделями.
Результат: утилизация GPU растет с 20% до 80-90%.

🔹 Dynamic Batching
Автоматическая агрегация запросов в батчи;
Настраиваемый timeout для батчей;
Поддержка dynamic batch size.
Результат: throughput увеличивается в 3-5 раз.

🔹 Гибкость и поддержка множества фреймворков
PyTorch, TensorFlow, ONNX;
TensorRT для максимальной оптимизации;
Новые фрейморки, такие как TensorRT-LLM;
Custom backends для своих решений на Python и C++.
Результат: не нужно переписывать модели под конкретный фреймворк.

🔹 Production-Ready Features
Версионирование моделей и хоть какой-то Model Registry;
Model ensemble, можем выстраивать цепочки из моделей в единый pipeline;
В целом добротный мониторинг;
gRPC из коробки;
Request и Response очереди;
и многое другое.
Результат: готовая инфраструктура для промышленного применения.

❗️ Важно помнить про ограничения:
Немного сложнее в использовании, тремя словами - steep learning curve;
Сложность в изначальной установке и настройке;
Vendor lock-in на NVIDIA.

📌 Итого:
Если у вас серьезные планы на ML в продакшене - инвестируйте время в изучение Triton. Альтернативы с таким же уровнем производительности и функциональности просто нет. А если есть - пишите свои примеры в комментах.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥2👻1