Flash-MoE: 순수 C/Metal로 MacBook Pro에서 397B 파라미터 Qwen 모델 실행하기

기술 구현
Flash-MoE는 3970억 개의 파라미터를 가진 Mixture-of-Experts 모델인 Qwen3.5-397B-A17B를 실행합니다. 이 모델은 60개의 트랜스포머 레이어로 구성되어 있습니다: 45개의 GatedDeltaNet(선형 어텐션) + 15개의 표준 전체 어텐션. 각 레이어에는 512개의 전문가가 있으며, 토큰당 K=4가 활성화되고 하나의 공유 전문가가 추가됩니다. 은닉 차원은 4096입니다.
성능 벤치마크
- 4비트 전문가, FMA 커널: 초당 4.36 토큰, 우수한 품질, 전체 도구 호출 지원, 디스크 209GB (현재 최고)
- 4비트 전문가, 기준선: 초당 3.90 토큰, 우수한 품질
- 2비트 전문가, OS 신뢰: 초당 5.74 토큰, 양호한 품질, 디스크 120GB (JSON/도구 호출 손상)
- 2비트 피크 단일 토큰: 초당 7.05 토큰, 양호한 품질 (도구 사용에 적합하지 않음)
참고: 2비트 양자화는 JSON 출력에서 "name" 대신 \name\을 생성하여 도구 호출을 신뢰할 수 없게 만듭니다. 4비트가 프로덕션 구성입니다.
하드웨어 요구사항
- 머신: Apple M3 Max 탑재 MacBook Pro
- 칩: 16코어 CPU (12P + 4E), 40코어 GPU, 16코어 ANE
- 메모리: 48 GB 통합 (~400 GB/s 대역폭)
- SSD: 1TB Apple Fabric, 순차 읽기 17.5 GB/s (측정값)
- macOS: 26.2 (Darwin 25.2.0)
핵심 기술
SSD 전문가 스트리밍
전문가 가중치(4비트 기준 209GB)는 GCD 디스패치 그룹을 통한 병렬 pread()로 NVMe SSD에서 요청 시 읽힙니다. 레이어당 활성화된 K=4 전문가만 로드됩니다(각각 ~6.75MB). OS 페이지 캐시는 커스텀 캐시 없이 캐싱을 관리하며("OS 신뢰" 원칙), 자연스럽게 ~71% 적중률을 달성합니다.
FMA 최적화 역양자화 커널
4비트 역양자화된 행렬-벡터 곱셈의 내부 루프는 수학을 (니블 * 스케일 + 바이어스) * x에서 fma(니블, 스케일*x, 바이어스*x)로 재배열합니다. 스케일*x와 바이어스*x를 사전 계산하면 GPU의 융합 곱셈-덧셈 유닛이 역양자화+곱셈을 한 번의 명령어로 수행할 수 있어, 순진한 구현보다 12% 더 빠른 성능을 제공합니다.
Metal 컴퓨트 셰이더
수작업으로 작성된 Metal 커널은 다음을 포함합니다:
- 4비트 및 2비트 역양자화된 행렬-벡터 곱셈 (타일화, SIMD 축소, 공유 입력 캐시, FMA 최적화)
- 융합 SwiGLU 활성화
- RMS 정규화 (2단계: 제곱합 축소 + 적용)
- 전체 어텐션 레이어를 위한 배치 GPU 어텐션 (Q@K^T, 소프트맥스, 점수@V)
- GPU RoPE (Q 디인터리브 및 K 정규화와 융합)
- MoE 결합 + 잔차 + 시그모이드 게이트 (융합 커널)
지연 GPU 전문가 계산
CMD3(전문가 순전파)는 대기 없이 제출됩니다. GPU는 CPU가 다음 레이어를 준비하는 동안 이를 실행합니다. 결합 + 잔차 + 정규화도 GPU에서 수행되어 다음 레이어의 어텐션 투영에 직접 공급됩니다.
선형 어텐션을 위한 Accelerate BLAS
GatedDeltaNet 순환은 64-헤드 × 128×128 상태 행렬 업데이트에 cblas_sscal, cblas_sgemv 및 cblas_sger를 사용하여 스칼라 코드보다 64% 더 빠른 성능을 달성합니다.
파이프라인 성능
4비트 기준 레이어당 평균: 4.28ms
- CMD3(이전) → CMD1: 어텐션 투영 + 델타-넷 [1.22ms GPU]
- CPU: 결과 플러시 [0.01ms CPU]
- CMD2: o_proj + 정규화 + 라우팅 + 공유 [0.55ms GPU]
- CPU: 소프트맥스 + topK 라우팅 [0.003ms]
- I/O: 병렬 pread K=4 전문가 [2.41ms SSD]
- CMD3: 전문가 순전파 + 결합 + 정규화 [0.04ms 인코딩, 지연됨]
아키텍처 제약
Apple Silicon에서 SSD DMA와 GPU 계산은 동일한 메모리 컨트롤러를 공유하며 효율적으로 중첩될 수 없습니다. GPU의 역양자화 커널은 ~418 GiB/s에서 대역폭 포화 상태입니다. 심지어 작은 백그라운드 SSD DMA도 메모리 컨트롤러 중재를 통해 불균형적으로 큰 GPU 지연 급증을 유발하여 직렬 파이프라인이 필요합니다.
📖 전체 소스 읽기: HN AI Agents
👀 See Also

Vibe Remote: 어디서나 Claude 코드에 접근할 수 있는 모바일 브리지
Vibe Remote는 휴대폰에서 Claude Code 개발 환경에 원격으로 접근할 수 있는 모바일 앱으로, 사용자가 Tailscale이나 복잡한 VPN 설정 없이도 로컬 설정, Git 기록, 파일 트리를 유지할 수 있게 해줍니다.

루델: 클로드 코드 세션을 위한 오픈소스 분석 도구
Rudel은 Claude Code 세션을 분석하는 오픈소스 분석 도구로, 1,573개의 실제 세션에서 1,500만 개 이상의 토큰과 27만 건 이상의 상호작용을 통찰합니다. 4%의 스킬 사용률, 26%의 중단률, 오류 연쇄 패턴과 같은 패턴을 밝혀냅니다.

포켓봇: iOS용 로컬 AI 자동 조종 장치, 앱 인텐트와 온디바이스 추론 활용
PocketBot은 iPhone의 Neural Engine에서 Metal을 통해 양자화된 3B Llama 모델을 로컬로 실행하는 iOS 앱으로, Apple의 AppIntents 및 CoreLocation 프레임워크를 사용하여 클라우드 데이터 전송 없이 이벤트 기반 자동화를 생성합니다.

클로드 코드의 읽기 도구가 이미지 해상도를 묵시적으로 낮추어 환각을 유발함
Claude Code의 `read` 도구는 모델이 이미지를 보기 전에 조용히 해상도를 낮추어, 스크린샷에서 텍스트를 추출할 때 출력 품질이 저하되고 인식하지 못한 환각 현상이 발생하게 됩니다.