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

Argus: Claude Code 세션 비용 및 동작을 디버깅하기 위한 VS Code 확장
개발자가 VS Code 확장 프로그램 Argus를 만들었습니다. Claude Code JSONL 트랜스크립트를 구문 분석하여 실시간 타임라인에 각 단계별 토큰/비용 분석, 캐시 적중률, 재시도 루프, 중복 읽기, 컨텍스트 압박 플래그를 제공합니다.

오픈소스 클로드 스킬이 B2B SaaS 성장 지식을 일관된 AI 추론을 위해 구조화합니다
한 개발자가 9천만 달러 연간 반복 수익 파트너십 교훈, 1,800건의 사용자 인터뷰, 5개의 SaaS 사례 연구를 구조화된 지식으로 정리한 오픈소스 Claude Skill을 만들어, 제품-시장 적합성 검증 및 시장 진출 계획과 같은 복잡한 워크플로우에서 Claude의 출력 품질을 향상시켰습니다.

Shipwright: Claude Code 기반 오픈소스 프로젝트 관리 도구
Shipwright는 Claude Code에서 실행되는 오픈소스 프로젝트 관리 도구로, 44가지 스킬, 7개의 전문화된 에이전트, 16개의 워크플로우를 갖추고 있습니다. 이진 품질 게이트와 복구 플레이북을 포함하며, 엔지니어링 작업 시작 전 자격 증명 레지스트리 감사와 자동화 플랫폼 평가에 사용되었습니다.

컨텍스트 모드: Claude 코드를 위한 도구 출력 압축 MCP 서버
컨텍스트 모드는 Claude Code와 도구 출력 사이에 위치하는 MCP 서버로, 샌드박스에서 이를 처리하고 요약만 반환합니다. MCP 출력 315KB를 5.4KB로 줄여, 속도 저하가 시작되기 전 세션 시간을 약 30분에서 약 3시간으로 연장합니다.