Привет, 👐 меня зовут Александр, я TL ML Engineer. Последние пару лет я активно занимаюсь 𝗠𝗼𝗱𝗲𝗹 𝗜𝗻𝗳𝗲𝗿𝗲𝗻𝗰𝗲 больших (малых) моделей, таких как LLM, StableDiffusion, Qwen и другие.
В этой сфере появляется ценный опыт, которым хочу делиться, а также найти единомышленников, которые сталкиваются с похожими задачами:
- Оптимизация больших моделей (память, latency, throughput);
- Деплой в продакшн;
- Работа с GPU (CUDA, Triton 🧜, C++).
Буду стараться делиться:
- Современными инструментами и подходами для ускорения inference;
- Полезными статьями и ссылками на зарубежные ресурсы;
- Примерами решений сложных задач из моего опыта.
А какие проблемы с inference моделей возникали у вас?
В этой сфере появляется ценный опыт, которым хочу делиться, а также найти единомышленников, которые сталкиваются с похожими задачами:
- Оптимизация больших моделей (память, 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?
🎒 𝗦𝘁𝗮𝗿𝘁𝗲𝗱 𝗽𝗮𝗰𝗸 у нас такой:
- PyTorch модель в формате .pth, решающая mission impossible задачу;
- k8s кластер. Если не работали с ним, можно читать как удобное пространство для работы с ресурсами и сервисами на этих ресурсах. Можно и на ноуте развернуть Docker или minikube;
- Ноды с GPU. Это могут быть любые GPU под инфреренс - A2, A100, H100 и другие.
- Написать 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.
А как вы деплоите свои модели? Делитесь опытом в комментариях!
TL;DR: Прочитайте вот это → Neptune.ai: ML Model Serving Best Tools
Must-have фичи, без которых не обойтись:
Большинство инструментов обещают всё это на своих красивых лендингах, но на практике, как всегда, всё в деталях. Поэтому я буду отмечать только то, чего у них нет или где они слабы.
Категории инструментов для 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. Альтернативы с таким же уровнем производительности и функциональности просто нет. А если есть - пишите свои примеры в комментах.
После предыдущего поста про выбор inference engine многие спрашивали - почему именно 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