Как оптимизируется инференс
Что проверяют
Понимаете ли вы, что оптимизация начинается с цели: латентность одного запроса, пропускная способность или стоимость, и что каждая техника чем-то платит за скорость. Следом обычно спрашивают, как вы проверяли, что после квантизации качество не просело.
Как отвечать
Сначала измерение: профилируйте, где уходит время (препроцессинг, forward, сеть, постобработка), и смотрите p50 и p99, а не среднее. Дальше уровни:
- модель: дистилляция в модель-студента, прунинг, архитектура поменьше. На табличных данных градиентный бустинг часто быстрее и не хуже нейросети;
- числовой формат: FP16 или BF16 на GPU почти не стоят качества, INT8 делают через post-training quantization на калибровочной выборке, для LLM распространены 4-битные схемы вроде GPTQ и AWQ. Если качество падает, помогает quantization-aware training;
- компиляция графа: экспорт в ONNX и запуск в ONNX Runtime, TensorRT на NVIDIA, OpenVINO на процессорах Intel,
torch.compileв PyTorch. Слияние операций и подстройка под железо дают выигрыш без изменения весов; - сервинг: динамический батчинг в Triton Inference Server или Ray Serve собирает запросы в батч за миллисекунды и заметно поднимает пропускную способность ценой небольшой задержки;
- LLM отдельно: KV-кэш, continuous batching и PagedAttention в vLLM, speculative decoding, ограничение длины контекста;
- вокруг модели: кэш ответов на повторяющиеся входы, заранее посчитанные эмбеддинги, препроцессинг на GPU, никаких Python-циклов в горячем пути.
Результат проверяйте на отложенной выборке и в A/B-тесте: качество должно остаться в заданном допуске.
Где спотыкаются
Называют квантизацию и не могут сказать, как проверили качество. Без сравнения метрик до и после ответ звучит как пересказ статьи.
Меряют среднюю латентность одного запроса на прогретой модели. Батчинг поднимает пропускную способность, но может ухудшить p99, а первые запросы после старта без прогрева и компиляции бывают в разы медленнее.
Оптимизируют саму модель, когда узкое место в другом: в токенизации на чистом Python, сериализации JSON или чтении картинок с диска. Профилирование до правок экономит недели работы.