El proyecto llama.cpp lanzó la versión b10321, que incluye una corrección crítica para las operaciones GGML_OP_NORM y GGML_OP_RMS_NORM en Metal. La actualización resuelve un problema donde los threadgroups con tamaños que dejaban un grupo SIMD parcial resultaban en cálculos incorrectos de media y varianza debido a sumas parciales descartadas.
- El error ocurría cuando las longitudes de fila no eran múltiplos del tamaño del grupo SIMD, lo que hacía que la contribución del último canal se ignorara durante la reducción entre grupos SIMD.
- La corrección redondea el tamaño del threadgroup hacia arriba al número entero más cercano de grupos SIMD, asegurando que todas las sumas parciales se agreguen correctamente sin canales inactivos excesivos.
- Los resultados de prueba en M3 Pro muestran que las pruebas de NORM y RMS_NORM pasaron 50/50 y 51/51 respectivamente, en comparación con los fallos anteriores (25/50 y 26/51).
- El lanzamiento proporciona binarios para macOS (Apple Silicon e Intel), iOS, Linux (CPU, Vulkan, ROCm, OpenVINO, SYCL), Android, Windows (CPU, CUDA, Vulkan, OpenCL, ROCm, OpenVINO, SYCL, HIP) y openEuler.
Esta actualización garantiza la corrección numérica para las operaciones de norma en longitudes de vector no estándar, lo cual es esencial para modelos que utilizan dimensiones de canal que no se dividen uniformemente por el factor de vectorización.