Оптимизация инференса
Ускорение работы языковых моделей всегда упирается в баланс между скоростью, стоимостью и сохранением качества. Ссмотрим на базовые метрики: - TTFT (время ожидания первого слова), - TPOT (скорость выдачи каждого следующего слова), - Throughput (общая пропускная способность сервера). Методы оптимизации разделяем на 4 группы — от безопасных до рисковых.
1. Инфраструктура и Serving (буст скорости) Эти методы меняют механику обработки запросов на сервере. Не трогают мозги модели, поэтому риск потерять в качестве равен нулю. Continuous batching: умное объединение входящих запросов в пачки на лету. Растит пропускную способность сервера в разы. Prefix caching: сохранение частых системных промптов и инструкций в памяти GPU. Ускоряет выдачу первого слова и снижает стоимость. Chunked prefill: разбиение длинных входящих текстов на части, чтобы сервер выдавал токены ровно и без оседаний по времени. P/D disaggregation: разделение видеокарт по ролям (одни только читают промпт, другие — только генерируют ответ). Помогает строго выдерживать SLO.
2. Логика приложения (экономия ресурсов) Методы, которые перехватывают или перенаправляют запросы ещё до того, как они полностью загрузят LLM. Семантический кэш: если похожий по смыслу вопрос уже задавали, система сразу отдаёт готовый ответ с задержкой около нуля. Роутинг и каскад моделей: простые запросы уходят дешёвой и быстрой модели, а сложные — флагману.
3. Умное декодирование (генерации без потерь) Методы, меняющие сам процесс сэмплирования и выдачи токенов. Speculative decoding / EAGLE: маленькая «черновая» модель набрасывает варианты следующих слов, а большая модель проверяет их за один шаг. Ответ получается идентичным оригинальному, но скорость печати заметно вырастает.
4. Сжатие и замена модели (экономия VRAM) Здесь оптимизируем сами веса или меняем архитектуру. Это даёт самый сильный прирост по памяти, но требует обязательного тестирования (Eval). FP8 (веса и KV-кэш): сжимает занимаемую память в 2 раза и ускоряет работу. INT4 (AWQ / GPTQ): сжимает модель почти в 4 раза, позволяя запускать тяжелые сетки на более дешевых GPU. Дистилляция и переход на малую модель: замена огромной универсальной модели на компактную, обученную под конкретную задачу. Дает ускорение в 2–10 раз.