Перейти к содержанию

llama.cpp v0.5.0: оптимизация бэкендов Metal, CUDA, Vulkan и спекулятивного декодирования

5.0/10

В релизе llama.cpp v0.5.0 фокус сделан на аппаратных оптимизациях бэкендов, расширении архитектурной поддержки и стабильности инференс-сервера. Обновление включает ускорение CUDA `conv2d` через implicit GEMM, поддержку графов CUDA для фазы драфтинга MTP, слияние операторов MoE и SSM_CONV в бэкенде Metal, а также реализацию разреженного Flash Attention для Vulkan. Кроме того, добавлена поддержка спекулятивного декодирования DFlash для HunyuanOCR, оптимизации квантования IQ2/IQ3 для HIP и бинарные ядра OpenCL для DP4A.

Методы оптимизации

Инференс ускорен за счет аппаратных оптимизаций вычислений: свертки CUDA `conv2d` переведены на неявные матричные умножения (implicit GEMM), а накладные расходы на запуск драфт-моделей в спекулятивном декодировании MTP снижены интеграцией CUDA Graphs. В бэкенде Metal внедрены шаблоны слияния операторов для MoE и SSM_CONV, бэкенд Vulkan получил ядра sparse Flash Attention и оптимизации под Intel Xe, а в HIP реализованы алгоритмы SWAR для инструкций `__vsub4` и `__vcmpne4` при распаковке весов IQ2/IQ3.

Эффективность и влияние на стек

Использование CUDA Graphs при MTP-драфтинге и специализированных ядер ускоряет спекулятивную генерацию и снижает задержку на токен в агентских пайплайнах без увеличения объема памяти. Исправления состояний разбиения тензорного параллелизма для fused QKV устраняют ошибки аллокации и стабилизируют распределенное исполнение моделей.