SharpAI/SwiftLM

⚡ Native MLX Swift LLM inference server for Apple Silicon. OpenAI-compatible API, SSD streaming for 100B+ MoE models, TurboQuant KV cache compression, MACOS + iOS iPhone app.

그것은 무엇인가

SwiftLM은 Swift로 작성된 고성능 추론 서버로, Apple Silicon에서 MLX(Apple의 머신러닝 프레임워크) 모델을 실행합니다. 표준 OpenAI 호환 API(/v1/chat/completions)를 제공하므로 기존 클라이언트와 도구는 수정 없이 연결할 수 있습니다. 일반적인 Python 기반 스택과 달리 Python 런타임이나 GIL 없이 단일 네이티브 바이너리로 컴파일됩니다. README는 Apple Silicon에서의 베어메탈 성능을 강조합니다.

이것은 진지하고 활발하게 개발된 프로젝트로, 깊은 엔지니어링 세부 사항을 포함합니다: 벤치마크 테이블, 버그 수정 설명(32GB Mac에서 노출된 메모리 버그), 슬라이딩 윈도우 경계 버그 후 비트 동일 롤백을 제공하는 MTP 투기적 디코딩, 과대한 MoE 모델을 위한 --stream-experts SSD 스트리밍과 같은 성능 기능이 있습니다.

주요 기능 및 혁신

  1. OpenAI 호환 API — OpenAI 스타일 엔드포인트의 드롭인 대체. 모델은 Hugging Face에서 자동 다운로드됩니다(예: mlx-community/gemma-4-26b-a4b-it-4bit).

  2. MoE(Mixture-of-Experts) 최적화 — Gemma 4 26B와 같은 모델(토큰당 26B 파라미터 중 약 4B만 활성화)에서 SwiftLM은 활성 전문가만 읽어 동일한 메모리 사용량으로 밀집 27B 모델보다 5~6배 빠른 디코딩 속도를 달성합니다.

  3. TurboQuant — 핵심 기능: KV 캐시를 4배 압축합니다. Gemma 4-26B 4비트의 100K 컨텍스트에서 66.9 tok/s(기준 27.5 tok/s)(2.43배 속도 향상)을 제공하고 40K 컨텍스트에서 OS RAM을 48.7GB에서 18.2GB로 줄입니다. 8비트에서는 48.3 tok/s(바닐라 14.9)를 제공합니다(3.24배). README는 TurboQuant가 대역폭 제약 모델에서 MTP보다 종종 더 효과적임을 명시합니다.

  4. MTP(멀티 토큰 예측/투기적 디코딩) — 단계당 여러 토큰을 예측합니다. 8비트 모델(대역폭 제약)에서 MTP는 40K 컨텍스트에서 +20%, 100K에서 +51% 향상을 제공합니다. README는 MTP가 도움이 되지 않는 경우(4비트 MoE는 계산 제약이며 TurboQuant와 결합하면 계산이 오버헤드가 되어 손실)를 주의 깊게 설명합니다.

  5. SSD 스트리밍(--stream-experts) — 통합 메모리에 너무 큰 모델의 경우 SwiftLM은 NVMe SSD에서 직접 전문가 레이어를 스트리밍할 수 있습니다. 예: 126GB DeepSeek-V4-Flash가 64GB M5 Pro에서 TurboQuant를 사용하여 40K 컨텍스트에서 약 4.2 tok/s로 실행(없으면 0.32 tok/s).

  6. 긴 컨텍스트 지원 — 기본 Mac mini M6(32GB)에서 약 80.7K 토큰, M5 Pro에서 100K까지 테스트되었으며 KV 캐시 크기 조정과 --turbo-kv 장거리 리콜 수정(#175, #65)에 세심한 주의를 기울였습니다.

  7. 메모리 가드 및 정확성 — README는 32GB 머신이 숨겨진 버그를 노출시켰음을 문서화합니다(무제한 MLX 버퍼 캐시, Metal GPU 타임아웃으로 충돌하는 잘못된 KV 캐시 추정, preprocessor_config.json에 image_mean이 없는 경우 VLM 폴백, 청크 프리필 수정). 또한 DFlash(다른 투기적 디코딩 프로젝트)는 그리디 디코딩 고정으로 인해 Qwen3.6 프로덕션에 부적합하며 적절한 수정(Leviathan/Chen의 확률적 사후 샘플링)을 지적합니다.

왜 중요한가

  • 네이티브 Apple Silicon 성능 — Python 오버헤드 없음. 단일 바이너리가 Metal, 통합 메모리 및 M-시리즈 칩의 전체 대역폭을 사용합니다.
  • 메모리 효율성 — 대규모 MoE 모델(예: 26B)을 32GB Mac에서 실행 가능하게 하고 SSD 스트리밍을 통해 64GB에서 126GB 모델도 실행 가능하게 합니다.
  • 긴 컨텍스트에서의 속도 향상 — TurboQuant와 MTP는 벤치마크 기반의 신중한 방식으로 결합됩니다. README에는 언제 무엇을 사용해야 하는지에 대한 테이블이 포함됩니다(40K 이상의 8비트에는 --mtp, TurboQuant로 최대 처리량을 얻으려면 --turbo-kv, 24GB Mac에는 --stream-experts).

실용적인 사용 사례

  • Mac에서 LLM을 로컬로 실행하여 개발, 테스트 또는 OpenAI 호환 엔드포인트로 프로덕션 운영.
  • GPU 메모리가 제한된 랩톱/데스크톱에 배포(예: --stream-experts를 사용하는 24GB Mac).
  • RAM을 소진하지 않고 40K~100K 토큰이 필요한 긴 컨텍스트 애플리케이션(코드 파일, 문서).
  • iOS 통합(SwiftBuddy iOS 데모가 있습니다).

기술 노트(공정하게)

  • README에는 다양한 칩(M1 Ultra, M5 Pro, M6)과 모델 유형(4비트 대 8비트, MoE 대 밀집)에 걸친 벤치마크 테이블이 풍부하며 명확한 주의 사항이 있습니다: "TTFT 제외", "메모리 가드가 2GB를 초과하는 스왑 중단", "40.8K에서 니들 체크는 두 모드 모두 신뢰할 수 없음".
  • 제한 사항에 대해 정직합니다: MoE에서 --gpu-layers는 매우 느리고(단일 코어 CPU 폴백), MTP+TurboQuant는 계산 제약 모델에서 TurboQuant 단독보다 성능이 저하될 수 있으며, DFlash는 프로덕션 비적합으로 표시됩니다.
  • 빌드에는 Homebrew의 cmake가 필요하며 서브모듈(mlx-swift-lm 포크)에서 Metal 커널을 컴파일하고 릴리스 tarball은 자체 포함입니다.

요약: Apple Silicon LLM 추론을 위한 진지하고 잘 설계된 벤치마크 기반 Swift 서버로, 두드러진 TurboQuant KV 압축과 신중한 MoE/SSD 스트리밍 지원을 갖추고 있습니다.

관련

  • 프로젝트
  • 프로젝트
  • 프로젝트
  • 프로젝트
  • 프로젝트