Проект llama.cpp расширил свой универсальный ядро матричного умножения (MMA) с малым числом строк для поддержки дополнительных исходных типов данных, включая BF16, Q1_0, Q2_0, MXFP4, Q2_K, Q3_K, TQ2_0 и различные типы IQ. Это обновление позволяет оптимизированному ядру обрабатывать любой тип с 16-битным деquantizer'ом весов, применяя специфические пороговые значения по количеству строк на оборудовании M3 Ultra, где производительность начинает превышать текущие ядра.
- Новая поддержка охватывает BF16, Q1_0, Q2_0, MXFP4, Q2_K, Q3_K, TQ2_0 и типы IQ.
- Пороговые значения производительности различаются в зависимости от типа: 5 строк для TQ2_0, 4 для BF16, 3 для MXFP4/Q2_0/Q2_K/IQ4_NL и 2 для остальных.
- Результаты бенчмарков на M3 Ultra показывают соотношения производительности от 0.23 до 1.01 в зависимости от количества строк и перекрытия ядер.
Это изменение повышает эффективность вывода для более широкого диапазона форматов квантования за счёт использования возможностей ядра MMA при малом количестве строк.