M3 Max 36GB에서 oMLX vs Rapid-MLX vs Splash vs MTPLX 성능 비교: Qwen3.6-35B-A3B
요약
M3 Max MacBook Pro 환경에서 Qwen 모델(27B 및 MoE)을 구동하는 네 가지 로컬 추론 엔진(oMLX, Rapid-MLX, Splash, MTPLX)의 성능을 비교 분석했습니다. 테스트 결과, 모델 유형과 시나리오에 따라 최적의 엔진이 달라지며, 특히 긴 프롬프트 처리에서 큰 차이를 보였습니다.
핵심 포인트
- MoE 모델에서는 Rapid-MLX가 가장 빠른 속도를 보여주었습니다.
- 밀집(Dense) 모델은 Splash와 MTPLX가 비슷한 최고 성능을 기록했습니다.
- oMLX는 밀집 모델에서 상대적으로 느리지만, MoE 모델에서는 준수한 성능을 보였습니다.
- 엔진 선택 시 사용 목적과 최적화된 모델 유형을 고려하는 것이 중요합니다.
안녕하세요. 어제 지역 시장에서 구형 재고품인 14인치 M3 Max MacBook Pro (14 코어 CPU / 30 코어 GPU / 36 GB / 1 TB)를 약 $2,498에 구입했습니다. 그리고 밤새도록 제가 사용하는 두 모델에 대해 어떤 로컬 추론(local inference) 소프트웨어가 실제로 가장 빠른지 테스트했습니다.
네 가지 엔진을 모두 사용했으며, 모두 최신 버전입니다: oMLX 0.7.0, Rapid-MLX 0.15.5, Splash 1.2.1, MTPLX 2.12.2. macOS 27 Golden Gate를 사용했습니다.
모델은 Qwen3.8-27B-4bit (dense)와 Qwen3.6-35B-A3B-4bit (MoE)입니다.
먼저 말씀드릴 것이 있습니다: 네 가지 엔진 모두에서 정확히 동일한 가중치 파일(weight file)을 사용하지는 않습니다. Rapid와 MTPLX는 자체 MTP가 증강된 4비트 빌드를 실행하고, Splash는 자체 DFlash2 초안을 페어링하며, oMLX는 순수한 mlx-community 4비트를 사용했습니다. 기본 모델은 같지만, 마무리(finishing)가 다르며, 이것이 각 앱이 의도한 사용 방식입니다.
테스트 방법: 각 엔진을 localhost에서 서비스하고, 온도는 0으로 설정하며, 생각하는 과정(thinking)은 비활성화했습니다. 지속적인 테스트에서는 동일한 짧은 산문 프롬프트로 3회 실행하여 256 출력 토큰의 중앙값을 측정했습니다. 그다음에는 약 130 / 1500 / 5500 토큰 크기 스윕을 진행했습니다. 발열(thermals) 테스트를 위해 노트북 스탠드를 사용했고, 모든 엔진+모델 조합 사이에 3분씩, 그리고 두 테스트 단계 사이에는 2분씩 기다렸으며, 각 엔진의 KV 캐시를 순서대로 비웠습니다 (oMLX, MTPLX 및 Rapid-MLX는 재시작 간에 캐시를 유지하므로 일상 사용에는 좋지만, 벤치마크를 두 번 할 경우 오해할 수 있습니다). 전체 과정을 처음부터 끝까지 다시 실행했고, 그 결과가 6% 이내의 범위로 나왔습니다.
디코드(Decode), 일반 산문 프롬프트, 3회 실행 중앙값:
엔진 Qwen3.8-27B Qwen3.6-35B-A3B
Rapid-MLX 27.7 tok/s 110.2 tok/s
oMLX 17.9 tok/s 104.2 tok/s
Splash 31.7 tok/s 77.0 tok/s
MTPLX 31.5 tok/s 79.0 tok/s
더 긴 크기의 채우기 프롬프트(filler prompts)에서도 동일합니다 (반복적인 텍스트는 추측 디코딩(speculative decoding)을 더 좋게 보이게 하므로, 이는 최상의 경우로 간주하십시오):
엔진 27B @ 1.5K MoE @ 1.5K MoE @ 5.5K
Rapid-MLX 31.3 tok/s 118.2 tok/s 117.9 tok/s
oMLX 17.9 tok/s 101.1 tok/s 95.6 tok/s
Splash 52.2 tok/s 238.0 tok/s 100.9 tok/s
MTPLX 30.2 tok/s 78.6 tok/s 69.8 tok/s
제가 얻은 결론:
모델별 절대 최고 속도: MoE는 Rapid-MLX가, 밀집(dense) 모델은 Splash가 가장 빠릅니다 (31.7 vs MTPLX 31.5로 실질적인 동률). oMLX는 밀집 모델에서 17.9 tok/s로 크게 뒤처지지만, MoE에서는 리더들과 거의 비슷한 수준입니다.
만약 차이가 무시할 만큼 작다면, 기능에 따라 선택하면 됩니다. Splash와 MTPLX는 밀집 모델에서 동일하며, Rapid과 oMLX는 MoE에서 동일합니다. 저는 Rapid-MLX를 유지했는데, 그 이유는 MoE가 제가 매일 사용하는 모델이고 거기서 가장 빠르기 때문입니다.
밀집(dense) 수치는 합리적입니다: 토큰당 약 16GB의 가중치와 300 GB/s의 메모리 대역폭을 고려할 때 상한선이 약 18 tok/s 근처에 있으며, oMLX가 바로 그 지점에 위치합니다. 다른 엔진들은 추측 디코딩을 통해 이 수치를 넘어섰으며, 이것이 그들의 수치가 생성되는 텍스트의 종류에 따라 변하는 이유이기도 합니다. MoE에서의 Splash는 1.5K 채우기 프롬프트에서 238 tok/s였고 5.5K에서는 101 tok/s였던 반면, Rapid은 약 118 tok/s를 유지했습니다.5초, 밀집 모델에서 ~34초 (프리필(prefill)이 각각 1.2-1.3k tok/s vs
5.5K 프롬프트의 첫 토큰 생성 시간: MoE에서 약 4150-170 tok/s).83 GB이며 가장 가벼운 빌드조차 96 GB 이상을 요구하고, 이 엔진들 중 어느 것도 해당 아키텍처의 전문가(experts)를 SSD에서 스트리밍할 수 없습니다.
지속적인 추론(sustained inference) 시 소음이 심합니다. 생성하는 동안 팬이 돌아갑니다. 제 책상에서는 작동하지만, 도서관에서는 사용하지 않을 것입니다.
또한 Qwen3.8-Flash-Next (125B)도 시도해 보았습니다. 36GB로는 불가능했습니다. 4비트 가중치만 해도 약 74
제한 사항: 노트북 한 대, 밤샘 작업, 세 번의 실행 중앙값(median) 그리고 위에서 언급된 다양한 가중치 빌드들. 제 프롬프트도 간단해서 아직 긴 에이전트 세션은 아니었습니다.
요약하자면: 36 GB M3 Max 환경에서 Qwen3.6-35B-A3B는 Rapid-MLX로 약 110 tok/s를 기록했고, Qwen3.8-27B는 Splash(MTPLX가 근소하게 뒤처짐)로 약 31.7 tok/s를 기록했습니다. 가장 많이 실행할 모델을 선택하는 것이 좋으며, 125B Flash-Next는 96 GB 이상이 필요합니다.
제출자: /u/Hyungsun
[링크] [댓글]
AI 자동 생성 콘텐츠
본 콘텐츠는 Reddit AI Engineering의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기