에이전트와 개발

llama.cpp, MiniMax-M3 NVFP4 출력 깨짐 수정하고 텐서 분할 제한

llama.cpp가 10월 25일 b11857, b11858, b11860, b11861 빌드를 내놨다. MiniMax-M3의 NVFP4 양자화 스케일 누락을 고쳤고, MoE amax 재조정을 쓰는 아키텍처 중 amax 그래프를 만드는 것에서는 -sm tensor 옵션을 거부하도록 했다.

루카스 ·

llama.cpp 프로젝트가 2026년 10월 25일 b11857, b11858, b11860, b11861 빌드를 공개했다. 이 가운데 b11861은 MiniMax-M3 모델을 NVFP4 양자화로 돌릴 때 출력이 깨지던 문제(#31063)를 고쳤고, b11858은 전문가 혼합(MoE) amax 재조정을 쓰는 아키텍처 중 amax 그래프를 만드는 것에서 -sm tensor 옵션을 거부하도록 했다.1,2

b11861(10월 25일 04:13 게시)의 원인은 스케일 값이 계산 그래프에 전달되지 않은 것이다. llama-model.cpp의 공통 스케일 처리는 전문가별 NVFP4 scale2 텐서(ffn_{up,gate,down}_exps_s)와, 밀집 FFN 및 공유 전문가용 텐서별 MXFP8 스케일을 읽어 들인다. 그런데 minimax-m3.cpp가 이 값들을 그래프에 넘기지 않았다.

build_moe_ffn()은 이 인자의 기본값이 nullptr이라서 build_lora_mm_id()가 w_s 분기를 통째로 건너뛰었다. 그 결과 라우팅된 전문가의 가중치가 전역 스케일 배수만큼 커져 잔차를 압도했고, 출력은 의미 없는 토큰의 나열이 됐다. M3.1 Flash에서는 G 값이 약 15123으로 보고됐다.

수정은 호출 지점 세 곳에서 스케일 텐서를 모두 전달하도록 바꿨다. flint 등 NVFP4를 지원하는 다른 MoE 모델이 쓰는 방식과 같다.1

b11858(03:38 게시)은 MoE amax 재조정을 쓰는 아키텍처 중 amax 그래프를 만드는 것에서 -sm tensor 옵션을 거부하도록 했다(#31081). 이 연산은 행렬곱의 한 행 전체에 걸쳐 계산되는데, 축 0 분할로는 장치가 이를 계산할 수 없기 때문이다. 기존에는 Meta 분할 상태를 MIRRORED로 보고하는 처리가 있었으나, 이 처리로는 각 장치가 자기 조각의 부분 최댓값만 갖게 되므로 해당 처리를 삭제했다.2

b11857(03:20 게시)은 ggml의 MUL_MAT_ID 연산에서 인덱스 -1을 주면 계산을 건너뛰도록 허용했다(#26631).3

댓글

기사에 대한 의견이나 틀린 내용 제보를 남겨 주세요.

댓글을 불러오고 있습니다.