Проект llama.cpp добавил поддержку разреженного flash-внимания (FA) для бэкенда Metal, ориентированную на фазу префилла при выводе модели. Это обновление включает новое ядро, которое сжимает конечные записи маски в списки индексов по строкам и расширяет векторное ядро FA за счёт опционального сбора разреженных индексов.
- Реализация добавляет шлюз на стороне хоста для включения разреженного пути при n_kv_max > 0 и выполнении других условий.
- Исправлена ошибка адресации строк в ядрах разреженного flash-внимания, которая ранее приводила к сбоям в случаях с несколькими строками.
- Добавлены методы оптимизации для выполнения однопроходного сжатия разреженных индексов, избегая избыточного чтения маски за счёт хранения конечных позиций в регистрах каждого потока.
- Добавлены тестовые случаи и бенчмарки производительности для проверки размеров голов, типов квантования и различных параметров конфигурации.
Это изменение повышает эффективность для пользователей Metal за счёт снижения трафика памяти на этапе префилла при использовании подсказок разреженного внимания.