솔직히 말씀드리자면, 775 GB로 양자화(quant)된 모델이 모든 사람에게 적합한 것은 아니며, 이 설정과 양자화는 제가 평소에 하는 것보다 훨씬 실험적인 접근 방식입니다. 하지만 이것은 무엇이 가능한지 보여주는 훌륭한 스트레스 테스트였다고 생각하며, 미래에는 더 많은 개선이 가능할 것이라고 믿습니다. 그렇다고 해도, 기본 Kimi-K3.1-Pro 모델은 2.8조(T) 개의 파라미터를 가진 거대한 모델이며(~네이티브 MXFP4/BF16에서도 약 1.77 TB), 일반적으로 VRAM에 로드하려면 대략 80GB GPU가 22개 정도 필요합니다. 이 실험의 목표는 코딩 및 수학 추론 능력을 크게 저하시키지 않으면서, 전체 93 레이어 모델을 단일 GPU + 시스템 RAM + 빠른 NVMe로 구동할 수 있는지 확인하는 것이었습니다.
이것을 구현하기 위해 제가 구축한 것들 (Strata + dr-triton)은 다음과 같습니다. 모든 레이어의 384개 라우팅된 전문가(routed experts)가 균등하게 사용되는 것은 아니기 때문에, 저는 공유되지 않는 MoE 전문가들을 3단계(2.81 bpw / 2.56 bpw / 1.44 bpw로 양자화했으며 (MoE 전체 평균 약 1.92 bpw로 감소, 기본값 대비 약 4.0bpw), 모든 공유 전문가, 어텐션 및 임베딩은 네이티브 BF16/F32를 유지했습니다. 실제로 PCIe/NVMe 병목 현상 없이 구동하기 위해, 저는 가중치와 함께 두 가지 시스템을 구축했습니다:
- Strata Fork: 티어 1(Hot GPU VRAM), 티어 2(Warm Pinned RAM), 및 티어 3(Cold NVMe mmap)에 걸쳐 전문가들을 분할하는 3단계 MoE 로더 및 오프로딩 엔진입니다. 라우터의 미리 보기 프리페칭(router lookahead prefetching)을 사용하여 (테스트에서 97.9%의 효과적인 적중률 기록), 콜드한 전문가들이 레이어가 실행되기 전에 이미 스트리밍되어 들어오게 합니다.
- dr-triton: 압축된 전문가 가중치가 PCIe를 통해 패킹 상태로 유지되고 GPU SRAM에서 나중에 확장되도록 하는 결합(fused) Triton 디양자화 커널입니다.
사용자도 자체 오프로딩/커스텀 Strata 설정을 사용할 수 있습니까? 네, 제 정확한 VRAM/RAM/NVMe 분할을 사용할 필요는 없습니다. Strata에서는 사용자의 시스템 사양에 따라 몇 개의 티어를 VRAM 대 시스템 RAM 대 NVMe에 배치할지 재구성할 수 있습니다 (예: 512 GB의 DDR5가 있다면, 거의 모든 Tier 3를 RAM으로 밀어 넣을 수 있고; 24–32 GB 카드를 사용한다면, Tier 1을 줄이고 RAM/NVMe에 더 의존할 수 있습니다).
자체 엔진/로더 사용: 라우팅된 전문가(routed experts)가 사용자 지정 패킹 텐서 레이아웃(custom packed tensor layout)을 사용하기 때문에, 이 샤드들을 바닐라 llama.cpp나 vLLM에 바로 넣을 수 없습니다. 하지만 자체 오프로딩 파이프라인(offloading pipeline)이나 맞춤형 PyTorch/Triton 러너를 가지고 있다면, Strata 스케줄러를 사용할 필요 없이 독립적인 dr-triton / strata_coder dequant 모듈을 가져와 직접 배치 처리를 할 수 있습니다.
전체 93개 레이어 벤치마크 (Base 1.77 TB vs. Coder 775 GB)는 단일 NVIDIA RTX PRO 6000 Blackwell (96/102 GB VRAM) + 176 GB RAM을 갖춘 Colab 환경에서 모든 93개 레이어(Layer 0..92 + lm_head)에 걸쳐 테스트되었습니다:
| Benchmark / Metric | Base Kimi-K3.1-Pro (1.77 TB) | Kimi-K3.1-Pro-Coder (775 GB) | Difference |
|---|
| AIME 2025 (All 30 Problems, Pass@1) | 29 / 30 (96.67%) | 29 / 30 (96.67%) | 모든 30개 문제에서 정확히 일치 |
| LiveCodeBench Rolling Window (30 Probs) | 29 / 30 (96.67%) | 29 / 30 (96.67%) | 쉬움(Easy) 9/10, 중간(Med) 10/10, 어려움(Hard) 10/10 |
| Top-1 / Top-5 Token Agreement | 100% / 100% | 95.20% / 99.92% | - |
| Mean KLD: | 0.0191 | - | - |
| AIME 2025 Math Perplexity (PPL) | 2.2135 | 2.2358 | +0.0223 ( +1.01% ) |
| LiveCodeBench Hard Perplexity (PPL) | 2.1136 | 2.1562 | +0.0426 ( +2.02% ) |
| LiveCodeBench Overall Perplexity (PPL) | 2.6911 | 2.7629 | +0.0718 ( +2.67% ) |
| Throughput (TPS) — Tested Colab Setup vs. Common Hardware Specs | - | - | 3단계 오프로드된 MoE의 처리량(throughput)은 VRAM/RAM에 얼마나 많이 들어가는지에 크게 의존하기 때문에... |
NVMe를 얼마나 자주 사용하느냐에 따라 달라지므로, 여기서는 Colab Blackwell 인스턴스에서 해당 사양보다 약간 낮거나 높은 현실적인 수치와 함께 측정된 결과를 보여드립니다.
| 하드웨어 사양 (Hardware Spec) | 배치/프리필 평가 TPS (Batch / Prefill Eval TPS) | 단일 스트림 디코드 TPS (Single-Stream Decode TPS) | 참고 사항 (Notes) |
|---|
| 1x RTX 4090 / 5090 (24–32 GB) + 128 GB DDR5 + Gen4 NVMe | ~11 – 14 tok/s | ~4 – 5.5 tok/s | 대용량 RAM + NVMe 미리보기 스트리밍 (Heavy RAM + NVMe lookahead streaming) |
| 2x RTX 3090 / 4090 (48 GB) + 192 GB DDR5 + Gen5 NVMe | ~19 – 23 tok/s | ~7.5 – 9 tok/s | 전체 어텐션/공유 + VRAM 내 부분 Tier 1 (Full attention/shared + partial Tier 1 in VRAM) |
| 1x A100 / H100 (80 GB) + 160 GB RAM + Gen4 NVMe | ~27 – 31 tok/s | ~9 – 10 tok/s | VRAM 내 Tier 1 Hot experts 상주 (Tier 1 Hot experts resident in VRAM) |
| 테스트된 사양 (TESTED): 1x RTX PRO 6000 Blackwell (96 GB) + 176 GB RAM | 36.8 tok/s | 10.8 tok/s | 전체 93 레이어 AIME 및 LCB 실행에 걸쳐 측정됨 (Measured across full 93-layer AIME & LCB runs) |
| 2x PRO 6000 / 2x H100 (192 GB) + 512 GB DDR5 | ~55 – 62 tok/s | ~18 – 22 tok/s | Tier 1+2 및 대부분의 Tier 3가 VRAM/RAM에 유지됨 (Tiers 1+2 + most of Tier 3 stay in VRAM/RAM) |
제가 인정하기로는 위에 제시된 '가장 가벼운' 하드웨어 사양조차도 평균적인 설정보다 높지만, 만약 위 범위의 하드웨어를 보유하고 계시고 (그리고 775 GB 다운로드 공간이 있다면) 이 성능을 직접 확인해 보시는 것이 좋을 것 같습니다! 모델 카드에는 즉시 사용 가능한 모든 설정 지침과 리포지토리가 포함되어 있으며, 원하신다면 위의 지침을 사용하여 자체 구성으로 테스트할 수도 있습니다. 그리고 실험의 가장 좋은 점은 이러한 과정이 일반 사용자에게 더 접근하기 쉬운 모델에도 적용될 수 있다는 것입니다 (그리고 Kimi가 4비트(4-bit)로 학습되지 않았다면 훨씬 더 많은 공간을 절약할 수 있었을 것입니다).