WASTE 추론 엔진: 소비자 하드웨어에서 Kimi K3 2.78T 실행
WASTE (Weight-Aware Streaming Tensor Engine)는 활성화된 가중치를 NVMe 스토리지에서 직접 스트리밍함으로써 최첨단 규모 모델, 특히 2.78조 파라미터 Kimi K3를 소비자 하드웨어에서 실행할 수 있게 합니다. 이는 Kimi K3가 최소 29.05 GB RAM만 있는 머신에서도 실행될 수 있게 하며, 64 GB MacBook Pro에서 약 0.5 토큰/초의 디코드 속도를 달성합니다.
아키텍처: NVMe 스트리밍 및 가중치 관리
WASTE는 디스크를 모델의 Mixture of Experts (MoE) 가중치에 대한 주요 저장소로 취급하고, 모델 트렁크만 RAM에 상주시켜 소비자 하드웨어의 메모리 제한을 극복합니다.
가중치 인식 스트리밍
Mixture of Experts 모델은 토큰당 파라미터의 작은 부분만 활성화하므로( K3의 경우 약 4% ), WASTE는 각 토큰에 필요한 전문가만 디스크에서 스트리밍합니다. I/O 오버헤드를 최소화하기 위해 모델을 .waste 컨테이너로 변환하며, 각 전문가 레코드는 4 KiB 정렬됩니다. 이 레이아웃은 전문가로 라우팅할 때 정확히 하나의 pread 작업만 필요하도록 보장하고, F_NOCACHE(macOS), O_DIRECT(Linux), FILE_FLAG_NO_BUFFERING(Windows)를 사용해 OS 페이지 캐시를 우회하여 커널이 테라바이트 규모 모델을 캐시하려는 시도를 방지합니다.
잔여 벡터 양자화 (RVQ)
디스크 사용량과 I/O 대역폭 요구를 줄이기 위해 전문가들은 3단계 잔여 벡터 양자화 방식으로 가중치당 3.00 비트로 저장됩니다. 엔진은 전체 행렬을 실현하지 않고 이러한 양자화된 가중치에 직접 연산을 수행하여 각 전문가 행 연산을 세 번의 테이블 읽기와 두 번의 덧셈으로 감소시킵니다.
메모리 예산 및 "캐시 바닥"
WASTE는 남은 RAM을 제한된 전문가 캐시로 활용합니다. 엔진은 "캐시 바닥"을 식별합니다—이는 하나의 토큰 작업 집합을 유지하는 데 필요한 최소 RAM( K3의 경우 17.0 GB )입니다.
- 바닥 이하: 캐시 적중률이 0%이며, 다음 토큰이 요청하기 전에 전문가가 evict됩니다.
- 바닥 이상: 적중률이 급격히 상승하여 처리량이 향상됩니다.
- 페이징 상한: RAM 예산이 너무 높게 설정되면(예: 64 GB 머신에서 58 GB) OS가 전문가 캐시를 디스크로 페이징하기 시작해 성능이 크게 떨어집니다(0.32 tok/s에서 0.04 tok/s로 감소).
이를 방지하기 위해 WASTE는 물리적 RAM의 7/8 이하에 맞는 예산을 자동으로 계산하고, 전체 작업 집합 단위로 감소시켜 OS 페이징을 유발하지 않으면서 효율을 극대화합니다.
성능 벤치마크
벤치마크는 64 GB RAM 및 내부 NVMe SSD를 탑재한 MacBook Pro M5 Pro에서 수행되었습니다.
Kimi K3 (2.78T 파라미터)
| 지표 | 값 |
|---|---|
| 최소 RAM | 29.05 GB (at 4K context) |
| 컨테이너 크기 | 982 GiB |
| 디코드 속도 | 0.49–0.54 tok/s |
| 상주 트렁크 | 27.28 GB |
| 토큰당 읽기 | 17.0 GB |
| 비전 타워 | 15.7 s for 1024-patch image |
Kimi-Linear (48B 파라미터)
| 지표 | 값 |
|---|---|
| 최소 RAM | 1.87 GB |
| 컨테이너 크기 | 19 GB |
| 디코드 속도 | 10.7 tok/s |
기술 구현 세부 사항
선형 어텐션 및 KV 캐시 최적화
K3는 하이브리드 어텐션 메커니즘(Kimi Delta Attention 및 gated multi-head latent attention)을 사용합니다. WASTE는 kv_b_proj를 쿼리와 출력에 흡수하여 KV 캐시 크기를 53배 감소시킵니다. 4K 컨텍스트에서는 캐시 요구량이 11.25 GB에서 0.21 GB로 감소하여 제한된 하드웨어에서도 훨씬 긴 컨텍스트 윈도우를 사용할 수 있게 합니다.
엔진 사양
- Language: C11로 작성되었으며 서드파티 런타임 종속성이 없습니다(
libc와pthreads만 사용). - Embeddability: 엔진은
libwaste.a라이브러리 형태로 제공되며, 26개의 공개 함수가 있어 다른 애플리케이션에 완전히 임베드할 수 있습니다. - Multimodal Support: 이미지 처리를 위한 401M ViT(27 레이어)를 포함합니다. 이미지는 임베딩으로 변환되어 MoE 레이어를 통해 텍스트 토큰처럼 처리됩니다.
- Platform Support: macOS(ARM64), Linux(ARM64/x86_64), Windows(x86_64 via MinGW-w64)를 지원합니다.
커뮤니티 인사이트 및 반론
노트북에서 2.78T 모델을 실행한다는 기술적 성과는 의미가 크지만, 커뮤니티 논의에서는 몇 가지 실용적인 트레이드오프를 강조합니다:
"초당 0.5t/s에 SSD에서 매초 수 기가바이트를 읽는 상황이라면... 500GB 혹은 250GB 모델을 목표로 한다면 이것이 정말 실용적일지 의문입니다..."
비평가들은 초당 0.5 토큰은 실용적인 사용에 매우 느리며, 특히 종종 장황한 "사고" 모델인 K3에는 부적합하다고 지적합니다. 또 다른 의견으로는 GPU 클러스터에 비해 토큰당 높은 에너지 비용과 1 TB에 달하는 거대한 저장 요구가 많은 소비자 사용자에게 진입 장벽이 된다고 언급했습니다.