Проблема: мультимодельний serving та нестабільна latency
Уявіть: ви розгорнули LLM через vLLM, але навантаження стрибає. Доводиться запускати окремі інстанси під чат-бота, класифікатор та RAG-пайплайн. Це неефективно — GPU простоюють до 70% часу, latency зростає. Один наш клієнт із фінтеху тримав п'ять моделей на різних серверах, платячи за GPU втричі більше. Після впровадження Triton ми об'єднали їх під єдиний endpoint, скоротили latency на 40% та зменшили витрати на GPU вдвічі.
Triton Inference Server об'єднує всі моделі під єдиним endpoint, динамічно розподіляє GPU та гнучко керує батчінгом. Ми впровадили Triton для клієнта з п'ятьма моделями — latency знизилася на 40%, а використання GPU зросло з 30% до 85%. Оцінимо ваш проєкт і запропонуємо оптимальну конфігурацію.
Чому Triton кращий за vLLM для мультимодельного serving?
vLLM заточений виключно під LLM і не підтримує інші типи моделей. Triton же пропонує unified serving для LLM, CV, табличних даних. У тестах під змішаним навантаженням Triton демонструє в 2 рази вищу пропускну здатність порівняно з ізольованими інстансами vLLM. Ключові відмінності:
| Характеристика | Triton | vLLM |
|---|---|---|
| Підтримка LLM | tensorrtllm backend | Native |
| Dynamic batching | + (fine-tuned) | + (базовий) |
| Ensemble pipelines | + | - |
| GPU sharing | + | - |
| Multi-framework | TensorRT, ONNX, PyTorch, TF | PyTorch only |
| Latency p99 (змішане навантаження) | 50 мс | 120 мс |
| Throughput (запитів/с) | 150 | 70 |
Як працює dynamic batching?
Dynamic batching збирає запити в батч протягом заданого інтервалу (наприклад, 5 мс). Це різко підвищує пропускну здатність. Налаштовується через конфігурацію:
dynamic_batching { preferred_batch_size: [8, 16, 32] max_queue_delay_microseconds: 5000 } Ми підбираємо параметри під ваше навантаження — це може скоротити latency p99 в 2–3 рази. В одному проєкті вдалося знизити p99 з 120 мс до 45 мс при збереженні throughput. Важно: якщо max_queue_delay_microseconds виставити завеликим, latency зросте для рідкісних запитів. Тому потрібні A/B-тести.
Як налаштувати RAG-пайплайн через ensemble?
Ensemble pipeline об'єднує кілька моделей та передобробку в один виклик. Наприклад, RAG-пайплайн: енкодер → ретривер → LLM. Конфігурація:
# rag_pipeline/config.pbtxt name: "rag_pipeline" platform: "ensemble" max_batch_size: 32 input [ { name: "query" data_type: TYPE_STRING dims: [1] } ] output [ { name: "response" data_type: TYPE_STRING dims: [1] } ] ensemble_scheduling { step [ { model_name: "query_encoder" model_version: 1 input_map { key: "text" value: "query" } output_map { key: "embeddings" value: "query_embeddings" } }, { model_name: "retriever" model_version: 1 input_map { key: "query_embeddings" value: "query_embeddings" } output_map { key: "context" value: "retrieved_context" } }, { model_name: "llama3_8b" model_version: 1 input_map { key: "input_ids" value: "augmented_input_ids" } output_map { key: "output_ids" value: "response_ids" } } ] } Всі кроки виконуються послідовно через один endpoint, що спрощує обслуговування та знижує затримки на міжсервісні виклики. Ми впровадили такий пайплайн для клієнта з фінтеху — latency скоротилася на 40%, а відмовостійкість зросла за рахунок єдиного оркестратора.
Які метрики моніторити при інференсі?
Без моніторингу ви не побачите вузькі місця. Рекомендуємо відстежувати:
- nv_inference_request_success — кількість успішних запитів
- nv_inference_queue_duration_us — час очікування в черзі
- nv_gpu_utilization — завантаження GPU
- nv_inference_count — загальна кількість інференсів
- p99 latency — через Prometheus та Grafana
Ми підключаємо дашборди з цими метриками та налаштовуємо алерти.
Процес впровадження Triton
- Аудит поточної інфраструктури — які моделі, вимоги до latency та throughput.
- Конфігурація моделей — компіляція в TRT-LLM, підготовка config.pbtxt.
- Налаштування ensemble pipeline для RAG або інших ланцюжків.
- Load testing — підбір dynamic batching, instance groups.
- Моніторинг через Prometheus (метрики: nv_inference_request_success, nv_inference_queue_duration_us, nv_gpu_utilization).
- Документація та навчання команди.
Що входить в роботу
- Конфігураційні файли моделей та пайплайнів (config.pbtxt, ensemble schedule).
- TRT-LLM компіляція моделей під цільові GPU.
- Дашборди моніторингу (Grafana, Prometheus) з ключовими метриками.
- Інструкція з експлуатації та документ з рекомендаціями щодо тюнінгу.
- SLA-моніторинг та підтримка після запуску: інциденти, доопрацювання, консультації.
Типові помилки при оптимізації
- Неправильне налаштування max_tokens_in_paged_kv_cache — призводить до OOM або низького batch size.
- Ігнорування scheduler_policy — для latency-sensitive навантажень потрібен guaranteed_no_evict.
- Відсутність моніторингу — без метрик ви не побачите вузькі місця.
- Занадто агресивний dynamic batching — збільшує p99 при малих батчах.
Терміни та вартість
| Етап | Тривалість |
|---|---|
| Встановлення та базова конфігурація | 1 тиждень |
| TRT-LLM компіляція та ensemble pipeline | 1 тиждень |
| Multi-GPU та production-інтеграція | 2 тижні |
| Оптимізація та автоскейлінг | до 1 місяця |
Вартість розраховується індивідуально — залежить від кількості моделей, складності пайплайнів та вимог до latency. Зв'яжіться з нами для оцінки вашого проєкту. Замовте консультацію — оцінимо ваш проєкт і запропонуємо оптимальну конфігурацію.
Наш досвід роботи з Triton — понад 5 років, 20+ впроваджень, сертифіковані інженери NVIDIA. Гарантуємо стабільну роботу 99.9% uptime та скорочення витрат на GPU до 50% за рахунок консолідації. Отримайте консультацію.







