Какие ускорения инференса достигаются
Что проверяют
Обычно это продолжение разговора о вашем проекте: какие методы вы применяли и какой выигрыш получили на самом деле. Интервьюер проверяет, умеете ли вы мерить, знаете ли реалистичные порядки величин и чем заплатили в качестве. Следом спрашивают: «Как мерили?» и «Сколько потеряли в метрике?».
Как отвечать
Назовите методы и типичный порядок выигрыша с оговоркой, что всё зависит от модели и железа:
- FP16 или BF16 на GPU: на картах с тензорными ядрами часто около двукратного ускорения относительно FP32 почти без потери качества;
- INT8-квантование: модель вчетверо меньше FP32 и нередко в два-четыре раза быстрее. Сначала пробуют post-training квантование, при заметной просадке переходят к обучению с учётом квантования (QAT). Для LLM применяют квантование весов в 4 бита;
- компиляторы и рантаймы: ONNX Runtime, TensorRT, OpenVINO,
torch.compile. Выигрыш за счёт слияния операций и подбора ядер под железо; - дистилляция: маленькая модель-ученик. Классический пример: DistilBERT на 40% меньше BERT и на 60% быстрее при сохранении около 97% качества;
- прунинг: неструктурированный почти не ускоряет без поддержки разреженных вычислений, реальный эффект дают структурированный прунинг и разреженность 2:4 на GPU начиная с Ampere;
- батчинг: растёт пропускная способность, но задержка отдельного запроса может вырасти. Для сервинга есть динамический батчинг в Triton, для LLM непрерывный батчинг в vLLM, плюс KV-кэш и спекулятивное декодирование.
Главное в ответе: ваши цифры и методика. Задержка p50 и p95, пропускная способность, одно и то же железо, прогрев, фиксированный размер батча, замер всего пайплайна вместе с предобработкой и постобработкой.
Где спотыкаются
Называют ускорение модели и забывают про остальной пайплайн. Если модель занимает треть времени запроса, её ускорение в четыре раза даёт выигрыш далеко не в четыре раза.
Не говорят о потере качества. Квантование без проверки на валидационной выборке может незаметно испортить редкие классы.
Путают пропускную способность и задержку: большой батч улучшает первую и ухудшает вторую, а пользователю важна задержка.