llama.cpp 프로젝트는 Metal에서 GGML_OP_NORM 및 GGML_OP_RMS_NORM 연산에 대한 중요한 수정 사항을 포함하는 버전 b10321을 출시했습니다. 이 업데이트는 스레드 그룹 크기가 부분 SIMD 그룹을 남기도록 설정되었을 때, 누락된 부분 합계로 인해 평균과 분산 계산이 잘못되는 문제를 해결합니다.
- 행 길이가 SIMD 그룹 크기의 배수가 아닐 때 버그가 발생하여 교차-SIMD 그룹 축소 시 마지막 레인의 기여도가 무시되었습니다.
- 수정 사항으로 스레드 그룹 크기를 가장 가까운 정수 배수의 SIMD 그룹 크기까지 올림하여, 과도한 유휴 레인 없이 모든 부분 합계가 올바르게 집계되도록 보장합니다.
- M3 Pro에서의 테스트 결과, NORM 및 RMS_NORM 테스트가 각각 50/50 및 51/51로 통과했으며, 이전 실패(25/50 및 26/51)와 대비됩니다.
- 이번 릴리스는 macOS(Apple Silicon 및 Intel), iOS, Linux(CPU, Vulkan, ROCm, OpenVINO, SYCL), Android, Windows(CPU, CUDA, Vulkan, OpenCL, ROCm, OpenVINO, SYCL, HIP), openEuler에 대한 바이너리를 제공합니다.
이 업데이트는 벡터화 계수로 나누어 떨어지지 않는 채널 차원을 사용하는 모델에 필수적인 비표준 벡터 길이에 대한 정규화 연산의 수치적 정확성을 보장합니다.