Оптимизация MMVQ для NVIDIA Volta в llama.cpp b11335: ускорение V100 на 3,17%¶
4.0/10
В релизе llama.cpp b11335 для видеокарт архитектуры NVIDIA Volta (sm_70) была назначена конфигурационная таблица варпов MMVQ_PARAMETERS_TURING вместо неоптимального отката к профилю GENERIC. На ускорителе Tesla V100 32GB PCIe в задаче декодирования одиночного батча (tg128) модели Qwen3.8-27B в квантовании Q4_K_M зафиксирован прирост скорости инференса на +1,091 tok/s (+3,17%, t = +49,0). Оптимизация полностью сохраняет исходное качество генерации: перплексия осталась побитово идентичной (6.3697 ± 0.04066 на датасете wiki.test.raw).
Механизм оптимизации¶
Ранее архитектура sm_70 не имела собственной таблицы параметров MMVQ и переходила в ветку GENERIC, где K-кванты для batch-1 декодирования (ncols_dst == 1) запускались с конфигурацией nwarps=4. Перенаправление селектора sm_70 на существующую таблицу TURING устанавливает для K-квантов в операции vec_dot более эффективный режим nwarps=2 (параметр cubin EIATTR_MAX_THREADS). При этом ядра для форматов Q4_0 и Q8_0 продолжают корректно исполняться с nwarps=4.
Прирост производительности¶
Патч дает чистый выигрыш в скорости декодирования на +3,17% (+1,091 tok/s) на GPU Tesla V100 без роста расхода видеопамяти и без необходимости пересборки весов модели.