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

llama.cpp b11126: оптимизация matmul-ядер Vulkan для IQ4_XS

4.0/10

В релизе llama.cpp b11126 добавлены оптимизированные вычислительные ядра умножения матриц MMQ/MMV для квантования IQ4_XS на бекенде Vulkan. Разработчики устранили неиспользуемое ветвление LOAD_VEC_A != 8 при загрузке данных в разделяемую память (shmem) и скорректировали пути выполнения шейдеров. При этом режим MMVQ для формата IQ4_XS был принудительно отключен на видеокартах Intel из-за зафиксированной регрессии скорости генерации токенов (tg) на 27,3% на Intel Arc A770.

Специализированные ядра matmul для IQ4_XS

В бэкенде Vulkan для формата квантования IQ4_XS добавлены специализированные ядра матричного умножения MMV и MMQ, позволившие отказаться от медленного универсального пути с промежуточной конвертацией во float. Оптимизация загрузки данных в разделяемую память (shmem) устранила неиспользуемую ветку `LOAD_VEC_A != 8`, так как для IQ4_XS в таблице `lut_load_vec_a` жестко зафиксирована длина вектора 8. При этом использование MMVQ для IQ4_XS было отключено на видеокартах Intel из-за падения скорости генерации токенов на 27,3% на ускорителях A770.

Показатели эффективности

Блокировка MMVQ для IQ4_XS на графических процессорах Intel предотвращает деградацию производительности генерации токенов на 27,3% на ускорителе A770. Для остальных поддерживаемых Vulkan-устройств внедренные ядра MMQ/MMV оптимизируют пропускную способность операций над весами IQ4_XS за счет очистки логики загрузки векторов в shmem.

Источники