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 устраняют ошибки аллокации и стабилизируют распределенное исполнение моделей.