O projeto llama.cpp lançou a versão b10532, introduzindo uma etapa de pré-processamento no backend do Metal que desquantiza os caches de Chave-Valor (KV) quantizados para F16 antes de executar o Flash Attention.
- O novo kernel desquantiza tensores KV Q8_0 em um buffer temporário contíguo F16, permitindo o uso dos kernels existentes do Flash Attention F16 em vez da desquantização no próprio kernel.
- O suporte foi estendido para cobrir todos os tipos de KV quantizados suportados pelo Metal, incluindo Q4_0, Q4_1, Q5_0 e Q5_1.
- Para modelos baseados em MLA onde V é uma visualização de K, a implementação ignora a desquantização redundante de V e lê V do buffer F16 de K.
- A verificação em um M2 Ultra mostrou que a perplexidade para Qwen2.5-0.5B com KV q8_0 corresponde exatamente à referência F16 (PPL 1,0008).
Esta alteração permite a execução eficiente do Flash Attention em dispositivos Metal ao aproveitar buffers contíguos F16 para caches de KV quantizados, garantindo paridade de precisão com as implementações padrão de F16.