С 20 до 600 RPS: Как мы ускорили ML модель в 30 раз?

Моей недавней задачей было развертывание ML-модели для детекции промпт-инъекций и небезопасного контента.

Каждый пользовательский запрос должен проверяться на наличие промпт-инъкции перед тем как он уйдет в LLM. Если тормозит модель - тормозит весь сервис.

Проблема: Наш исходный сервис с моделью упирался в потолок ~20 RPS. Для платформы такого масштаба это был блокер.

Процесс: Мы экспериментировали с разными стратегиями деплоя, включая высокоуровневые обертки вроде PyTriton для быстрого прототипирования. Однако, чтобы выжать максимум производительности и обеспечить бесшовную интеграцию в наш прод, мы решили уйти от абстракций в пользу нативной реализации на NVIDIA Triton.

Ключевые драйверы оптимизации: 🚀 Dynamic Batching в NVIDIA Triton : Самый значительный скачок в производительности дало включение динамического батчинга. Эта связка позволила нам эффективно утилизировать наши GPU V100, обрабатывая запросы параллельно.

⚙️ Тюнинг сервиса и ресурсов: Одной лишь мощности GPU недостаточно. Мы оптимизировали логику Python-сервиса вокруг модели и тонко настроили аллокацию ресурсов (лимиты CPU/памяти, реплики), чтобы слой приложения не стал узким местом для ускоренной модели.

Результат: Мы добились 30-кратного роста пропускной способности при сохранении низкой задержки: • Throughput: Вырос с ~20 RPS до ~600 RPS. • Latency: 92ms (p50) / 220ms (p95). Теперь сервис уверенно держит пиковые нагрузки, не требуя избыточных GPU-ресурсов.

#MLOps #NvidiaTriton #TensorRT

С 20 до 600 RPS:  Как мы ускорили ML модель в 30 раз? | Сетка — социальная сеть от hh.ru