본문으로 건너뛰기

Kimi K3 로컬 실행: vLLM, DSpark & 실제 하드웨어 청구서

고급

Moonshot은 2026년 7월 27일 Kimi K3 — 2.8조 파라미터 Mixture-of-Experts 모델 — 를 오픈소스화했습니다. 며칠 만에 r/LocalLLaMA의 "집에서 16× DGX Spark 클러스터로 실행되는 전체 K3" 스레드가 800 업보트를 넘었습니다. 댓글은 감탄과 공황의 혼합이었습니다: 이것이 스턴트인지, 실제 레시피인지, 하드웨어 트랩인지 아무도 알 수 없었습니다.

이 페이지가 그 레시피입니다. 오늘 유일하게 작동하는 로컬 서빙 경로(vLLM), 처리량을 견딜 만하게 만드는 speculative decoding 트릭(DSpark), 실제로 필요한 최소 하드웨어, 정확한 serve 명령, 첫 시도에서 물릴 함정, 그리고 그냥 Moonshot이나 Runpod의 호스팅 엔드포인트를 호출하는 것에 대한 손익분기 계산을 다룹니다. 모델 자체 — 아키텍처, 벤치마크, 가격 — 는 Kimi K3: 세계 최대 오픈 웨이트 모델 참조.

What you'll learn
  • 전체 K3의 최소 필수 하드웨어 파악 (1× DGX B300 노드 또는 16× B200 — 오늘 그 아래 경로는 없음)
  • DSpark를 한 문단으로 이해: block-diffusion 드래프팅, ~3.14배 스피드업, 스텝당 7 speculative 토큰
  • vLLM으로 두 명령으로 K3 서빙 — 대부분의 가이드가 잊는 플래그와 함께
  • prefill/decode 비대칭에 직면: 16× DGX Spark 클러스터에서 읽기 750 tok/s vs 쓰기 21 tok/s
  • 손익분기 계산: 셀프 호스팅이 $0.95/M 호스팅을 이길 때, 그리고 확실히 그렇지 않을 때

한 문단 버전​

오늘 K3를 위한 유일한 프로덕션 준비 서빙 스택은 vLLM으로, 2026년 7월 27일에 DSpark라는 새로운 speculative decoder와 함께 Day-0 지원을 추가했습니다. 최소 하드웨어는 한 개의 8× B300 노드(또는 16× B200); 영웅적인 커뮤니티 셋업은 집에서 16× DGX Spark (GB10) 클러스터로 전체 모델을 실행하며 ~$64k+ 자재 청구서를 내고 대략 디코드 21 tok/s와 prefill 750 tok/s를 제공합니다. 호스팅 추론(Runpod, Moonshot 자체 API)은 입력 $0.95/M, 출력 $4/M입니다 — 거의 모든 팀에게 이것이 옳은 답이며, 특별히 온프렘에 웨이트가 필요하지 않다면 그렇습니다.

1단계 — 사이징 벽 이해​

K3는 2.8조 파라미터. Moonshot이 배송하는 형식인 MXFP4 웨이트 양자화에서도, 원시 웨이트는 KV 캐시를 할당하기 전에 약 ~1.4 TB VRAM 주소 지정 메모리에 앉습니다. 그 숫자가 다른 모든 것을 결정합니다.

What you'll learn
  • 단일 컨슈머 GPU, Mac Studio, H100 두 개짜리 워크스테이션에서 전체 K3를 실행할 경로는 없음. 사이징은 계단 모양이지 매끄럽지 않음.
  • vLLM 가이드는 명확함: 최소 한 개의 8× B300 (또는 GB300 NVL72) 노드가 필요; 16× B200도 지원됨.
  • 양자화된 커뮤니티 디스틸(Q2/Q3 또는 전문가 프루닝 배리언트)은 시간이 지나면서 이 바를 낮출 것 — 그러나 2026년 8월 기준 작동하는 레시피는 모두 프론티어 데이터센터 실리콘의 전정밀도 MXFP4.
하드웨어 프로필현실적 사용대략 자본비/운영비
1× DGX B300 (8× B300)프로덕션 셀프 호스팅, 단일 노드Runpod에서 ~$59/hr; 구매가 6자리
16× B200이전 세대 셀프 호스팅Runpod에서 ~$94/hr
16× DGX Spark (GB10) 클러스터열성가 / 랩자본비 ~$64k–$75k + 스위치 + 피크 2.3 kW
그 아래는 없음—호스팅 API 호출 중

2단계 — DSpark, 한 문단으로​

DSpark는 K3와 함께 배송되고 vLLM에서 네이티브로 지원되는 block-diffusion speculative decoder입니다. 한 번에 한 speculative 토큰을 드래프팅하는 대신(MEDUSA나 EAGLE처럼), DSpark는 5계층 비인과적 어텐션 백본을 사용해 하나의 병렬 패스에서 7 토큰을 드래프트한 다음 K3 타겟에 대해 블록 단위로 그것들을 검증합니다. 저랭크 마르코프 헤드가 블록 내 종속성을 모델링하고, 신뢰도 헤드가 수용 가능성을 예측해 스케줄러가 드래프팅이 가치 있을 때를 결정할 수 있게 합니다.

vLLM 블로그의 구체적 수치:

  • DSpark 없이: 배치=1에서 118 tok/s (TP16)
  • DSpark로: 배치=1에서 370 tok/s (TP16) — 3.14배 스피드업
  • 평균 수용 길이: (14 벤치마크에 걸쳐) 3.85 토큰, 코딩에서 스텝당 4.73 토큰으로 상승, 크리에이티브 라이팅에서 2.61로 하락
  • 드래프트-타겟 호환성: DSpark는 K3의 토큰당 576 요소 MLA 잠재를 공유하므로 드래프트 페이지가 타겟 KV 캐시와 통합됨 — 별도 페이지 포맷 없음, 두 번째 캐시를 위한 VRAM 세금 없음

DSpark speculator 웨이트는 Hugging Face의 Inferact/Kimi-K3-DSpark에 있으며; vLLM의 --speculative-config 플래그가 그 모델을 가리킵니다.

3단계 — vLLM으로 K3 서빙​

vLLM ≥ 0.11.1이 필요합니다 (K3는 그 릴리스에서 Day-0 지원으로 착륙). 두 명령: 하나는 speculation 없음(움직이는 부품 적음, 스모크 테스트에 유용), 하나는 DSpark 있음(프로덕션에서 실제로 원하는 것).

스모크 테스트 — 순수 K3​

DSpark 없이 K3 서빙 (베이스라인)

vllm serve moonshotai/Kimi-K3 \
--tensor-parallel-size 8 \
--enable-prefix-caching \
--trust-remote-code

사람들이 놓치는 두 플래그: **--enable-prefix-caching**은 vLLM에서 기본으로 꺼져 있으며, K3 워크로드(특히 에이전틱 코딩)는 감당할 수 있게 되려면 캐시 히트에 의존합니다 — 이것을 끄면 첫 프롬프트가 매 턴마다 재처리됩니다. **--trust-remote-code**는 K3가 아직 스톡 transformers에 없는 커스텀 모델 코드(KDA 어텐션, LatentMoE 라우팅)를 배송하기 때문에 필수입니다.

프로덕션 — K3 + DSpark​

DSpark speculative decoding으로 K3 서빙

vllm serve moonshotai/Kimi-K3 \
--tensor-parallel-size 16 \
--enable-prefix-caching \
--trust-remote-code \
--speculative-config '{"method": "dspark", "model": "Inferact/Kimi-K3-DSpark", "num_speculative_tokens": 7, "attention_backend": "FLASHINFER_MLA", "draft_sample_method": "probabilistic", "rejection_sample_method": "block"}'

num_speculative_tokens: 7은 DSpark speculator의 학습된 블록 크기와 일치 — 낮추지 마세요, block-diffusion 드래프팅의 요점을 낭비하게 됩니다. attention_backend: FLASHINFER_MLA는 MLA 네이티브 드래프트가 타겟과 캐시 페이지를 공유하려면 필수입니다. 결정적 샘플링을 원하면 draft_sample_method를 "greedy"로 전환하고 클라이언트 측에서 temperature=0을 설정하세요.

4단계 — 아무도 경고하지 않는 prefill/decode 비대칭​

DSpark 활성화된 **16× DGX Spark (GB10)**에서 전체 K3를 실행하며 MikroTik CRS804-4DDQ 네트워킹과 2.3 kW 피크의 4×400→4×100 Gb 브레이크아웃 케이블을 사용한 커뮤니티 운영자가 게시한 실제 수치:

워크로드처리량피크
4k 컨텍스트 @ Prefill655 tok/s8,288 tok/s
4k 컨텍스트 @ Decode21.7 tok/s37 tok/s
16k 컨텍스트 @ Prefill759 tok/s21,457 tok/s
16k 컨텍스트 @ Decode25.4 tok/s38 tok/s

읽기가 쓰기보다 30~40배 빠릅니다. 실용적으로 그것은:

  • 큰 코드 리포나 리서치 코퍼스에 대한 롱 컨텍스트 Q&A가 아름답게 작동 — 벽 시간 분당 거의 백만 토큰으로 코퍼스를 수집.
  • 롱폼 생성, 스트리밍 어시스턴트, 채팅 스타일 UI가 느껴짐 — 25 tok/s는 견딜 만하지만 호스팅 Sonnet/Fable 클래스 모델보다 눈에 띄게 뒤처짐.
  • 모델이 긴 도구 호출 체인을 생성하는 에이전틱 루프는 디코드 병목을 확대. 더 간결한 추론 스타일과 구조화된 출력을 고려.
  • 배칭이 prefill보다 decode를 더 돕는다 — 동시 요청이 증가하면서 GPU 초당 처리량이 급격히 상승 (vLLM 블로그는 높은 동시성에서 GPU 초당 2K+ 토큰을 보고).

5단계 — 첫 주 운영 스레드의 다섯 함정​

Guided walkthrough1 of 5
  1. vLLM 블로그를 제외한 모든 서빙 가이드가 이것을 잊음. --enable-prefix-caching 없이는 K3의 90% 이상 실제 캐시 히트율이 0%가 되고 매 턴마다 전체 프롬프트가 재처리됨. 비용과 지연 시간 둘 다 폭발. 한 번 설정, 영원히.

6단계 — 셀프 호스팅해야 할까?​

대부분의 팀에게 정직한 답은 아니오입니다. 워크로드별로 손익분기 계산을 하세요:

경로비용이길 때
Moonshot API입력 $3.00/M, 캐시 히트 $0.30/M, 출력 $15/M프로토타이핑, 저볼륨, 비민감 데이터
Runpod 호스팅 K3입력 $0.95/M, 출력 $4/M꾸준한 중간 볼륨, OpenAI 호환 엔드포인트 필요, 컴퓨트가 어디서 실행되는지 상관 없음
Runpod 8× B300 시간당$59.12/hr갑작스러운 실행, 서빙 설정 제어 필요, 여전히 자본비 원치 않음
하드웨어 소유자본비 $80k–$500k+엄격한 데이터 상주성, 24/7 포화, 또는 경쟁 추론 제품 구축 중

16× GB10 클러스터의 디코드 ~21 tok/s에서, 한 노드는 시간당 ~76k 출력 tok를 생산. Runpod-K3 호스팅 가격으로 그것은 시간당 $0.30의 출력 토큰. $59/hr 호스팅 요금을 이기려면 높은 배치에서 시간당 ~15M 출력 토큰에 가까운 처리량과 100%에 가까운 활용도가 필요 — 동시성으로 달성 가능하지만, 실제로 그만큼의 수요가 있어야 함. 그 아래로는 호스팅이 자릿수로 이깁니다.

2026년 K3를 셀프 호스팅할 올바른 이유:

  • 데이터 상주성 / 규제 — 프롬프트와 완성이 VPC를 떠날 수 없음.
  • 지속적 포화 — 24/7 실행되는 에이전트 함대가 있고 캐시 히트 가격이 여전히 아픔.
  • 모델 수정 — 커스텀 DSpark speculator 학습, MoE 전문가에서 LoRA 파인튜닝, 또는 라우팅 변경 실험.
  • 학습 가치 — 랩이나 프론티어 MoE 서빙을 메탈에서 특별히 이해하고 싶은 팀.

그중 아무것도 적용되지 않으면, API를 호출하고 저장된 엔지니어링 시간을 더 나은 프롬프트, 더 나은 evals, 더 나은 컨텍스트 엔지니어링으로 라우팅하세요.

7단계 — 어떤 경로를 선택하든 최소 Python 클라이언트​

vLLM은 OpenAI 호환 엔드포인트를 노출하므로, 같은 클라이언트가 자체 랙, Runpod의 호스팅 K3, 또는 Moonshot의 API에 대해 작동합니다.

OpenAI Python SDK로 K3 엔드포인트 호출

from openai import OpenAI

client = OpenAI(
  base_url="http://localhost:8000/v1",   # or Runpod / Moonshot base URL
  api_key="EMPTY",                        # self-hosted vLLM ignores keys
)

resp = client.chat.completions.create(
  model="moonshotai/Kimi-K3",
  messages=[
      {"role": "system", "content": "You are a terse coding assistant."},
      {"role": "user",   "content": "Explain DSpark speculative decoding in three bullets."},
  ],
  max_tokens=8192,
  temperature=0.2,
)

print(resp.choices[0].message.content)

플래시카드 — 차갑게 알아야 할 수치​

아직 카드가 없습니다 — 추가해서 학습을 시작하세요. 🃏

퀴즈​

Check yourself

0/4
  1. 분석가가 200k 토큰 리서치 코퍼스와 대화하게 하는 내부 도구를 초안 작성 중입니다. 첫 토큰 지연 시간이 중요하고 사용자당 토큰 볼륨은 낮습니다. K3를 셀프 호스팅해야 합니까?
  2. 첫 프로덕션 K3 서빙에 가장 안전한 vLLM 플래그 조합은?
  3. DSpark는 하나의 병렬 패스에서 7 토큰을 드래프트합니다. 실제로 그 7 중 몇 개가 스텝당 K3에 의해 일반적으로 수용됩니까?
  4. 16× DGX Spark 박스를 책상에 둡니다. 사용자에게 기대하라고 말해야 할 처리량 프로필은?

대신 호스팅 경로를 잡을 때​

  • 프로토타이핑과 데모 — Moonshot의 API 또는 Runpod 사용. 지연 시간과 가격 둘 다 괜찮음.
  • 비용 민감 고볼륨 — Moonshot의 캐시 히트 입력 $0.30/M 가격은 워크로드가 실제로 캐시할 때 이길 수 없음.
  • Claude Code나 다른 하니스로 에이전틱 코딩 — AI 게이트웨이 (LiteLLM / OpenRouter / Portkey)를 통해 K3를 꽂고 하니스 변경 없이 모델 교체.
  • 모델 비교 작업 — K3가 옳은 선택일 때 vs Anthropic에 남을 때는 모델 선택과 Claude 사용자를 위한 Kimi K3 참조.

출처 및 추가 자료​