Оптимізація затримки виведення для великих мовних моделей у виробничих середовищах.
Орієнтований на виробництво погляд на зменшення затримки відповіді LLM шляхом оптимізації контексту, безперервної пакетної обробки, кешування KV, квантування, інтелектуальної маршрутизації моделей та архітектури виводу з урахуванням GPU.
Mihail Leybuk-GalinСистемний архітекторПоділитися статтею
1. Затримка є системною властивістю
Коли робочий LLM-застосунок здається повільним, зазвичай спочатку звинувачують саму модель. На практиці модель являє собою лише один компонент набагато довшого шляху запиту.
Запит користувача може пройти через шлюз API, автентифікацію, векторний пошук, переранжування, побудову запитів, планувальник висновків, виконання на графічному процесорі, модерацію та потокове передавання, перш ніж перший змістовний токен досягне інтерфейсу.
Оптимізація лише кількості необроблених токенів за секунду може забезпечити чудові показники без суттєвого покращення сприйнятої продуктивності. Перший крок – визначити бюджет затримки та визначити, на що витрачається кожна мілісекунда.
2. Критичний шлях висновків LLM
Висновок LLM містить дві принципово різні фази: попереднє заповнення та декодування. Попереднє заповнення обробляє вхідний контекст паралельно, тоді як декодування генерує вихідні токени послідовно.
Критичний шлях запиту на виробництво LLM
Відкрити повнорозмірне зображенняДля інтерактивних застосунків найважливішим показником часто є час до першого токена (TTFT). Відповідь, яка починається протягом кількох сотень мілісекунд і потоково передає дані поступово, зазвичай відчувається швидшою, ніж та, яка залишається без звуку протягом кількох секунд.
Довжина запиту безпосередньо впливає на вартість попереднього заповнення. Великі вікна контексту не є вільною потужністю: кожен непотрібний токен споживає обчислювальні ресурси, пропускну здатність пам'яті та простір кешу KV. Тому контекст потрібно розглядати як бюджет інфраструктури.
3. Оптимізація обчислень та пам'яті
Після інструментального забезпечення шляху запиту найбільший приріст зазвичай досягається за рахунок підвищення ефективності графічного процесора та зменшення непотрібної роботи на запит. Безперервна пакетна обробка, кешування KV, кешування префіксів, квантування та корекція розміру моделі найкраще працюють у поєднанні, а не окремо.
inference.yaml
# Production inference profile
model:
precision: fp8
max_context_tokens: 16384
scheduler:
continuous_batching: true
max_concurrent_sequences: 128
max_batch_tokens: 32768
cache:
kv_cache: true
prefix_cache: true
response:
streaming: true
cancel_on_disconnect: trueБезперервне пакетування дозволяє послідовностям різної довжини незалежно входити та виходити з активного пакету, що дозволяє зайняти обчислення графічного процесора. Кешування KV запобігає повторному обчисленню стану уваги, тоді як кешування префіксів може усунути повторне попереднє заповнення для спільних системних підказок та визначень інструментів.
Квантування зменшує навантаження на пам'ять, але найпотужніша оптимізація часто є архітектурною: направляти прості запити на класифікацію, вилучення та підсумовування до менших моделей, резервуючи найбільшу модель для завдань міркування, які дійсно цього потребують.
4. Проектування архітектури обслуговування з низькою затримкою
Системи виробничого виводу повинні ізолювати компоненти з різними характеристиками масштабування. Вибіркові робочі процеси, процеси API, пули виводів та потокові з'єднання не повинні конкурувати за однакові ліміти або масштабування, використовуючи один і той самий сигнал.
Стратегія маршрутизації
Маленька модель
Класифікація, вилучення, маршрутизація
Середня модель
Підсумовування та генерація стандартів
Велика модель
Складні міркування та ескалація
Автоматичне масштабування повинно використовувати сигнали, специфічні для логічного висновку, такі як глибина черги, TTFT p95, активні послідовності, використання графічного процесора та зайнятість кешу KV. Використання процесора саме по собі зазвичай є поганим показником навантаження на графічний процесор.
5. Результати та показники
Оптимізацію виробництва слід вимірювати з урахуванням затримки, пов'язаної з користувачем, ефективності обладнання та вартості, а не лише за сукупною контрольною пропускною здатністю.
- Цільовий TTFT p95
- 650мс
- Використання графічного процесора
- 82%
- Вартість за покоління
- -46%
Найпотужніші виробничі системи поєднують коротші запити, безперервну пакетну обробку, кешування, моделі правильного розміру, квантування, маршрутизацію з урахуванням черги, скасування та прогресивну потокову передачу. Метою є передбачувана затримка за реальної паралельності, а не просто вищий показник синтетичного бенчмарку.