slotstream: 48GB Mac에서 104GB Qwen3.8-Flash-Next 실행하기
slotstream은 Apple Silicon Mac 사용자가 모델의 전체 크기보다 훨씬 적은 RAM을 가진 하드웨어에서도 104GB Qwen3.8-Flash-Next (125B MoE, 4-bit) 모델을 실행할 수 있도록 해줍니다. 라우팅된 전문가(experts)를 SSD에서 관리형 메모리 풀로 스트리밍함으로써, 이 도구는 가용 메모리가 8.1 GB인 머신에서도 추론을 가능하게 하지만, 성능은 가용 RAM에 따라 확장됩니다.
성능 및 하드웨어 요구 사항
48 GB Mac (M5 Pro)에서 slotstream은 약 12 tokens/s의 warm decode 속도를 달성하며, 첫 번째 토큰까지의 cold start 시간은 약 3초입니다. 시스템은 탄력적으로 설계되어, 메모리 타겟을 33 GB, 전체 RAM의 70%, 또는 Metal working-set 제한 중 가장 낮은 값으로 자동 조정합니다.
RAM 계층별 예상 성능
| Memory | Estimated Speed |
|---|---|
| 16 GB | ~5 tok/s |
| 24 GB | ~8 tok/s |
| 32 GB | ~10 tok/s |
| 48 GB+ | ~12 tok/s |
디스크 공간이 주요 제약 사항입니다. 사용자는 모델 가중치를 저장하기 위해 약 110 GB의 여유 디스크 공간이 필요합니다. 가중치가 SSD에서 스트리밍되기 때문에 저장 매체의 속도가 성능에 직접적인 영향을 미칩니다. 외부 USB 디스크에서 모델을 실행하는 사용자는 초당 0.5 tokens/s만큼 낮은 속도를 보고했습니다.
기술 아키텍처: SSD 스트리밍
slotstream은 대규모 MoE (Mixture-of-Experts) 모델을 로드할 때 일반적으로 발생하는 메모리 고갈 문제를 방지합니다. 표준 mlx_lm.load()가 모델 전체를 메모리에 로드하려고 시도하는 반면, slotstream은 커스텀 스트리밍 방식을 사용합니다:
- Resident Components: dense trunk (3.8 GB)와 32 GB n-gram table은 메모리에 상주합니다.
- Expert Streaming: 68 GB의 라우팅된 전문가(experts) (레이어당 512개)는 모든 48개 레이어에서 공유되는 고정된 캐시 슬롯 풀에
pread를 사용하여 읽어옵니다. - Memory Elasticity: 시스템은 15초마다 가용 메모리를 재확인하여, 요청 사이의 전문가 캐시 크기를 조정함으로써 압박이 있을 때는 축소하고 리소스가 충분할 때는 확장합니다.
이 아키텍처는 캐시 크기에 관계없이 greedy decoding이 byte-identical하게 유지되도록 보장합니다. 즉, 할당된 RAM의 양을 변경하는 것은 추론 속도에만 영향을 미치며 출력 품질에는 영향을 미치지 않습니다.
설치 및 API 호환성
slotstream은 단일 Swift binary로 배포됩니다. macOS 14+ 및 Apple Silicon이 필요합니다.
배포
사용자는 curl 스크립트를 통해 도구를 설치할 수 있으며, 이 스크립트는 binary를 ~/.slotstream/bin에 배치합니다. 도구에는 104 GB의 가중치를 다운로드하기 전에 메모리 계획과 디스크 가용성을 미리 보기 위한 doctor 명령어가 포함되어 있습니다.
API 및 통합
serve 명령어는 port 11434에서 Ollama 및 OpenAI chat/generate 엔드포인트의 하위 집합을 구현합니다. 이를 통해 slotstream을 기존 Ollama 클라이언트, OpenAI SDK, 그리고 Open WebUI와 함께 사용할 수 있습니다. 지원되는 sampling options는 temperature, top_p, top_k, min_p, presence_penalty, seed, num_predict, 그리고 stop입니다.
현재 한계점
- Prefill Latency: 긴 프롬프트는 첫 번째 토큰이 생성되기 전에 전체 프롬프트가 처리되어야 하므로 시작이 느립니다. Prefill 속도는 ~50 tok/s (16 GB Mac)에서 ~125 tok/s (48 GB Mac) 사이입니다. 하지만 대화의 후속 턴은 이전 상태를를 재사용하므로, 채팅이 길어짐에 따라 첫 번째 토큰까지의 시간은 일정하게 유지됩니다.
- Hardware Validation: 48 GB M5 Pro를 기반으로 하지만, 작은 RAM 계층에 대한 성능 추정치는 실제 16 GB 또는 24 GB 하드웨어 테스트가 아닌 측정된 곡선에 기반합니다.
- OS Compatibility: 설치 프로그램은 macOS 14 및 15에서 테스트되었지만, 런타임은 이 버전들에서 완전히 검증되지 않았습니다.
커뮤니티 인사이트 및 반론
커뮤니티 논의는 로컬 LLM 접근의 민주화에 대한 열망과 파편화된 구현체들의 중복성 사이의 긴점 사이의 긴장을 강조합니다.
"There are already a handful of repos doing essentially exactly this... I'd much rather see people collaborate on one of these implementations... instead of producing yet another near-identical repo."
다른 사용자들은 초당 12 tokens/s가 사용 가능한 수준이지만, 전문가(experts) 스트리밍에 필요한 높은 디스크 I/O가 시간이 지남에 따라 SSD wear에 대한 우려를 불러일으킬 수 있다고 언급했습니다. 또한 8.1 GB 메모리 하한선은 입문용 하드웨어 사용자를 위한 중요한 지표입니다.
Sources
관련
- Dispatch
- 프로젝트
- Dispatch
- Dispatch
- Dispatch