O projeto llama.cpp lançou a versão b10321, que inclui uma correção crítica para as operações GGML_OP_NORM e GGML_OP_RMS_NORM no Metal. A atualização resolve um problema em que threadgroups dimensionados para deixar um grupo SIMD parcial resultavam em cálculos incorretos de média e variância devido à perda de somas parciais.
- O bug ocorria quando os comprimentos das linhas não eram múltiplos do tamanho do grupo SIMD, fazendo com que a contribuição da última lane fosse ignorada durante a redução entre grupos SIMD.
- A correção arredonda o tamanho do threadgroup para cima até o número inteiro mais próximo de grupos SIMD, garantindo que todas as somas parciais sejam agregadas corretamente sem lanes ociosas excessivas.
- Os resultados dos testes no M3 Pro mostram que os testes NORM e RMS_NORM passaram 50/50 e 51/51 respectivamente, em comparação com falhas anteriores (25/50 e 26/51).
- O lançamento fornece binários para macOS (Apple Silicon e Intel), iOS, Linux (CPU, Vulkan, ROCm, OpenVINO, SYCL), Android, Windows (CPU, CUDA, Vulkan, OpenCL, ROCm, OpenVINO, SYCL, HIP) e openEuler.
Esta atualização garante a correção numérica para operações de norma em comprimentos vetoriais não padrão, o que é essencial para modelos que usam dimensões de canal que não se dividem uniformemente pelo fator de vetorização.