ashhart/TensorFold
Apple Silicon과 NVIDIA에서 LLM을 OpenAI 호환 API로 서빙하는 TensorFold
원제 ashhart/TensorFold
스타 545당일 +160Python
Key Point
Apple Silicon 개발자가 로컬에서 고성능 LLM 추론을 OpenAI 호환 방식으로 실행할 수 있으며, NVIDIA GPU와 동일한 API로 통일된 배포가 가능해진다.
핵심 요약
- TensorFold는 Apple Silicon(MLX) 및 NVIDIA GPU에서 텍스트 모델을 OpenAI 호환 API 엔드포인트로 서빙하는 Python 기반 도구다.
- Nemotron 3.5 Lightning, Qwen3.8-27B, Qwen3.8 Flash Next, GLM-5.3-Flash, Gemma 4 등 여러 모델을 지원하며, 각 모델은 자체 커널과 드래프트 검증을 포함한다.
- MLX 백엔드는 M1~M5 칩에서 row-exact simd_qmm 디코더로 4비트/그룹64 가중치를 읽고, CUDA 백엔드는 단일 또는 2-rank 텐서 병렬 처리를 지원한다.
- 정확한 디코딩을 보장하여 드래프트 토큰이 직렬 방식과 동일한 토큰일 때만 수용되며, 같은 엔진·가중치·런타임 설정 내에서 결과의 정확성을 유지한다.
- 메모리 관리는 RAM의 70%와 GPU 권장 작업 세트로 제한되며, GLM-5.3-Flash는 256GB 이하 Mac에서 85%까지 확대 사용 가능하다.
- 프롬프트 캐싱은 MLX에서 지원되어 렌더링된 토큰 시퀀스의 청크 시작점을 활용하고, 재개 지점은 어시스턴트 메시지 시작 및 두 번째 메시지 시작에서 설정된다.
- Qwen3.8 Flash Next는 시작 시 한 청크를 측정하여 8,192/4,096/2,048 토큰 중 가장 큰 값을 선택하고 128K 토큰 컨텍스트 여유를 확보한다.
- 컨텍스트 크기는 MLX에서 기본적으로 모델 메타데이터 윈도우를 대상으로 하며 명시적 값으로 재정의 가능하고, CUDA에서 Qwen은 저렴한 기본 용량, GLM은 2,051토큰, Nemotron은 16,384토큰을 기본값으로 사용한다.
- CUDA는 각 백엔드의 네이티브 윈도우와 용량 추정을 모두 만족하는 양수 컨텍스트 값만 허용하며 맞춤 가이드로 거부한다.
- --parallel 옵션으로 MLX는 예산 내 최대 8개까지 공유 라운드를 지원하고, CUDA는 Qwen3.8-27B(1~2 rank)과 Flash Next(1 rank)에서만 지원된다.
- 드래프팅은 선택 사항이며 --no-drafts로 직렬 처리로 전환 가능하고, DFlash2 드래프트는 Qwen3.8-27B에서 선택사항이며 MLX에서도 선택사항이다.
- 모든 테스트 결과는 공개 프롬프트 픽스처, 체크포인트 버전, 런타임, 명령어와 측정 출력이 함께 제공될 때까지 TBD 상태이며, MIT 라이선스를 따른다.
저장소 보기 ↗github.com