Граница эффективности инференса LLM: как сдвинуть её в свою пользу
The efficient frontier of LLM inference

Baseten объясняет, как инженеры по инференсу LLM балансируют между задержкой, пропускной способностью и качеством. Статья разделяет методы на две категории: те, что позволяют выбрать точку на границе эффективности (размер батча, стратегии параллелизма, квантование), и те, что расширяют саму границу (оптимизация ядер, спекулятивное декодирование, разделение prefill и decode). Рассматриваются практические компромиссы и то, как новые техники, такие как EAGLE-3 и DFlash, повышают общую эффективность.
На практике эффективная граница очень изрезана: вместо гладкой непрерывной линии между результатами небольшие изменения могут иметь большое влияние.
- kgeist
Я сейчас пытаюсь написать движок инференса, который сочетает преимущества llama.cpp (один бинарник для развёртывания, хорошая поддержка гетерогенных не-датацентровых вычислений, широкая поддержка квантования) с преимуществами vLLM/SGlang (такие вещи, как нормальный paged attention для лучшего использования VRAM и высокой конкурентности).
Оборудование для дата-центров дорогое, и его не хватает, но llama.cpp медленный/неоптимизированный для конкурентного использования, в то время как vLLM/SGLang легко падают на нестандартных конфигурациях (например, если вы делаете pipeline parallelism для RTX5090+RTX4090, они случайным образом падают с включённым RAM-кэшированием или выбирают неправильные ядра, потому что обычно предполагают, что каждый ранг — это устройство одного типа; они также не поддерживают Q5-Q6).
Для меня самое интересное — оптимизировать инференс при отсутствии хорошего дата-центрового оборудования и понять, как это лучше всего сделать. Я запускаю ИИ-сервер в офисе, и пока я обнаружил, что эти техники наиболее важны для конкурентного использования на дешёвом железе: pipeline parallelism (чтобы учесть PCIe), RAM-кэширование (чтобы быстро восстанавливать контексты в VRAM), спекулятивное декодирование (включая доменно-специфичные n-граммы, они уже могут значительно ускорить генерацию кода без оверхэда draft-модели), хорошие ядра, высоко оптимизированные под конкретное устройство, поддержка Q5-Q6 (почти так же хорошо, как Q8), FP8-контексты (чтобы вместить больше контекста), paged attention (для лучшего использования VRAM), кэширование префиксов, непрерывный батчинг (это по умолчанию везде).
Пока что основная […]
- jumploops
> Спекулятивное декодирование — это процесс угадывания, какие токены может сгенерировать модель, а затем проверки этих догадок.
Как компьютерный инженер, я всегда нахожу интересным видеть оптимизации, применяемые на разных уровнях стека.
Спекулятивное выполнение стало довольно популярным в 90-х и в итоге использовалось практически в каждом x86-дизайне.
Затем в середине 2000-х статья Speculator[0] применила эту концепцию к распределённым системам, и мы до сих пор видим работу в этом направлении[1][2].
Всё новое — это хорошо забытое старое (:
[0]https://www.cs.princeton.edu/courses/archive/fall07/cos518/p...
[1]https://www.usenix.org/system/files/osdi25-shen-weihai.pdf
[2] https://www.microsoft.com/en-us/research/publication/distrib...
- amelius
Как вы можете быть уверены, что остаётесь на границе эффективности, когда меняете параметр?
Я думаю, эта презентация говорит больше о том, какие ручки можно крутить и в каком направлении сдвинется результат (он может быть хуже, чем у конкурента), чем о самих границах.
- armcat
Думаю, скоро мы сможем включить сюда стратегию «рекурсивной глубины», которую использует Astra, которая (я подозреваю) использует рекурсивные изменения внутреннего состояния в трансформере, а не полный прямой проход + сэмплирование, как это традиционно было в случае с thinking/CoT. Похожий метод использовался здесь (но в другом контексте — кодирование инструментов внутри весов трансформера для быстрого выполнения): https://www.percepta.ai/blog/can-llms-be-computers
- copperwire
Квантование и спекулятивное декодирование принесли значительную экономию для наших меньших моделей. Всё ещё в погоне за идеальным соотношением цена/производительность.