
M2 Max에서 Nemotron Puzzle 75B를 원활하게 실행하는 방법
요약
M2 Max 환경에서 Nemotron Puzzle 75B 모델을 mlx-lm으로 구동하는 방법을 비교 분석했습니다. 4비트와 5비트 전문가 양자화 방식을 테스트한 결과, 메모리 한계 도달 시 5비트 방식이 성능 저하를 보였습니다. 정확한 구현을 위해 블록별 설정 지원 및 BF16 출력 헤드 사용이 필수적입니다.
핵심 포인트
- 4비트 vs 5비트 비교: 5비트는 메모리 압박으로 인해 성능 하락 가능성 있음.
- 정확도 향상 핵심: NVIDIA 참조값과 일치시키기 위해 경계값 처리(BF16/FP32)가 중요함.
- 필수 구현 요소: 블록별 설정 지원, 텐서 재매핑, BF16 출력 헤드 사용이 권장됨.
요약: mlx-lm에 네이티브 nemotron_h_puzzle 지원을 추가한 후 (PR #1535), 64GB M2 Max에서 4비트 대 5비트 전문가 양자화(둘 다 6비트 밀집 레이어, BF16 출력 헤드, 그룹 크기 64 사용)를 비교했습니다. 결과 (동일한 프롬프트, 작업당 5개 시드, temp 1.0 / top_p 0.95):
| 4-bit experts | 5-bit experts | |
|---|---|---|
| Dense paths | 6-bit | 6-bit |
| Output head | BF16 | BF16 |
| Checkpoint | 42.03 GiB | 49.88 GiB |
| Peak MLX memory | 49.68 GB | 58.12 GB |
| Average generation | 14.27 tok/s | 10.53 tok/s |
| Local task checks | 24/30 | 21/30 |
| Long-context retrieval | 4/5 | 0/5 |
저는 5비트가 성능이 더 낮은 이유는 5비트 체크포인트가 64GB 한계에 정확히 도달하기 때문에, KV + 작업 집합(working set)이 증가하면서 메모리 압박으로 인해 문제가 생기는 것 같습니다. 만약 96/128GB를 가지고 계시다면, 5비트가 다르게 작동할 수 있습니다. 테스트해 보신 분들의 수치를 공유해주시면 좋겠습니다.
실행에 필요한 과정: mlx-lm의 기존 Nemotron-H 코드는 블록별 설정 지원(blockwise config support), 텐서 재매핑(tensor remapping), 그리고 NVIDIA의 FP32 norm/router 동작을 일치시키는 것이 필요했습니다. 짜증 나는 버그: 첫 번째 레이어 SSM 출력이 동일한 입력에도 불구하고 코사인 유사도 0.8832로 NVIDIA의 참조값과 불일치했습니다. 근본 원인: NVIDIA는 BF16으로 softplus(dt + dt_bias)를 계산하고 나중에 FP32로 승격시키지만, mlx-lm의 공유 SSM 경로는 그 전에 승격시킵니다. 이 경계값을 일치시키자 코사인 유사도가 0.999998까지 향상되었습니다. BF16 출력 헤드는 필수입니다: 4비트로 131k 어휘(vocab)의 lm_head를 양자화했더니 반복적인 쓰레기만 생성했습니다. BF16으로 복원하니 문제가 해결되었고 (약 2.1 GiB 비용 발생).
제출자: /u/These_Meaning_3883 to r/LocalLLaMA [link] [comments]
AI 자동 생성 콘텐츠
본 콘텐츠는 r/OpenAI Codex (search)의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기