Проект 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 при малом количестве строк.