Qwen3.5-397B 모델의 자동 연구: M5 Max에서 20.34 tok/s를 달성하기 위한 36번의 실험
Autoresearch on Qwen3.5-397B, 36 experiments to reach 20.34 tok/s on M5 Max, honest results
핵심 요약
M5 Max 환경에서 Qwen3.5-397B 모델의 추론 속도를 최적화하여 기존 대비 4.67배 향상된 20.34 tok/s를 달성한 실험 결과입니다.
- 성능 최적화 — M5 Max 환경에서 소프트웨어 최적화만으로 추론 속도를 20.34 tok/s까지 끌어올림
- 자동화 연구 — Claude Code를 활용해 며칠 만에 36번의 실험을 수행하며 병목 현상을 체계적으로 해결
- 하드웨어 한계 — SSD 스트리밍 방식의 MoE 추론을 구현했으나, Apple Neural Engine은 활용하지 못함
- 실험적 성격 — 생산용이 아닌 속도 향상을 위한 연구 프로젝트로, 범용성에는 한계가 있음
지난 일주일 동안 제 M5 Max 128GB에서 Qwen3.5-397B를 더 빠르게 돌리기 위해 노력했습니다. Dan Woods(@danveloper)의 원래 베이스라인은 M3 Max에서 4.36 tok/s였습니다. M5 Max에서는 더 나은 하드웨어 덕분에 시작점이 이미 10.61 tok/s였습니다. 제 최적화로 20.34 tok/s까지 끌어올렸는데, 소프트웨어만으로 약 2배, Dan의 원래 결과보다는 4.67배 빨라진 수치입니다.
하드웨어: MacBook Pro M5 Max, 128GB 통합 메모리, 40코어 GPU
모델 구성: Qwen3.5-397B-A17B, Q3-GGUF 전문가(Unsloth IQ3_XXS/IQ4_XS 혼합 정밀도), Q8_0 임베딩, Q6_K LM 헤드. 디코드: 20.34 tok/s. 프리필: 5.52 tok/s. 모델은 디스크에서 209GB를 차지하며, 128GB RAM보다 4배 더 커서 모든 데이터가 SSD에서 스트리밍됩니다.
실제 실행 스크린샷은 아래에 있습니다. 페이지 캐시가 예열되면 개별 토큰이 20+ tok/s에 도달하는 것을 볼 수 있습니다!
방법론: 저는 Dan Woods가 개발한 자동 연구 루프 방법론(github.com/danveloper/flash-moe)을 사용하여 Claude Code(Anthropic)로 M5 Max에서 실험을 체계적으로 실행하고 평가했습니다. 각 실험은 다음 단계로 넘어가기 전에 결과가 기록되었으며, 성능 저하를 포착하기 위해 퍼플렉서티 임계값을 통한 자동 품질 게이트를 적용했습니다. 인간과 AI의 협업: 저는 연구를 지휘하고 하드웨어를 제공했으며 모든 과학적 결정을 내렸습니다. Claude Code는 제 지시에 따라 구현 및 벤치마킹을 수행했습니다. 덕분에 몇 주가 걸릴 작업을 며칠 만에 36번의 실험으로 끝낼 수 있었습니다. 전체 논문 PDF는 저장소에서 확인할 수 있습니다.
기반 기술: Dan Woods의 원본 flash-moe 논문(github.com/danveloper/flash-moe)과 Anemll의 포크(github.com/Anemll/flash-moe)를 기반으로 합니다. Apple Silicon에서 SSD 스트리밍을 통해 Qwen3.5-397B를 실행하기 위한 순수 C/Metal 추론 엔진입니다. Anemll 포크는 이 결과에 필수적이었던 Q3-GGUF 전문가 지원을 추가했습니다. 제 작업은 그 위에 추가적인 Metal 수준의 최적화를 더했습니다.
자동 연구 중에 한 가지 분명해진 점은, 벽 하나를 뚫을 때마다 또 다른 벽이 나타난다는 것입니다. SSD I/O가 병목 현상이었고, 그다음은 GPU 인코딩 오버헤드, 그다음은 프로젝션 커널이었습니다. 전형적인 이동 병목 현상 문제죠.
실제로 효과가 있었던 것:
참고: 일부 최적화는 서로 상호 작용하기 때문에 이득이 완벽하게 합산되지는 않습니다.
실패한 것(78% 폐기율):
- NAX 오프로딩, 타일 패딩 오버헤드가 이득을 상쇄함
솔직한 한계:
- 단일 하드웨어 플랫폼이라 결과가 일반화되지 않을 수 있음
- 이 프로젝트는 속도 연구 프로젝트이지, 프로덕션 품질을 보장하는 것이 아님
향후 작업: 한 가지 놀라운 발견: Apple의 Neural Engine(ANE)은 내내 완전히 유휴 상태였으며 0W를 소비했습니다. 38 TOPS의 연산 능력이 사용되지 않고 있었습니다. 문제는 MoE 추론이 어떤 전문가를 활성화할지 동적으로 결정해야 하는데, ANE는 정적으로 사전 컴파일된 그래프에서만 작동한다는 점입니다. 배치 프리필에 대한 기회는 있을 수 있습니다. 전체 분석은 논문에 있습니다.
논문 + 릴리스: https://github.com/iluvclubs/flash-moe/releases/tag/v1.0


