llama.cpp b10997: оптимизация тайлинга MoE-ядер для AMD RDNA3.5¶
4.0/10
В релизе llama.cpp b10997 эвристика выбора тайлов `ncols_opt` для MoE-моделей в бэкенде HIP расширена на графическую архитектуру AMD RDNA3.5. Тестирование на процессоре AMD Ryzen AI MAX+ 388 с графикой AMD Radeon 8060S (gfx1151, 20 CU) показало прирост скорости матричного умножения на 16.198% для модели LFM2.5-8B-A1B-UD в квантовании Q4_K_M и на 6.189% для Qwen1.5-MoE-A2.7B в формате Q2_K (средний прирост по пулу тестов составил +11.081%). При этом влияние на скорость генерации токенов (tg128) оказалось незначительным: нулевое изменение для Q4_K MoE и ускорение на +2.188% для Q2_K MoE.
Метод оптимизации¶
В файле `ggml/src/ggml-cuda/mmq.cu` макрос условия диспетчеризации тайлов `GGML_CUDA_CC_IS_RDNA3_0` заменен на `GGML_CUDA_CC_IS_RDNA3`, что позволило применить оптимизированную эвристику вычисления `ncols_opt` для MoE на RDNA3.5. Изменение затронуло только логику выбора размера тайла для разреженных матричных операций MoE (`MUL_MAT_ID`), тогда как диспетчеризация плотных матриц осталась без изменений. Корректность работы подтверждена полным прохождением тестов `MUL_MAT` и `MUL_MAT_ID` в наборе `test-backend-ops` для типов квантования q4_K, q5_K, q4_0 и q5_0.
Показатели эффективности¶
Оптимизация обеспечивает ускорение выполнения матричных вычислений MoE до +16.198% на архитектуре RDNA3.5, транслируясь в скромный прирост скорости генерации токенов от 0% до +2.188% на сессию.