2026-04-30
LiteLLM + Claude Code on DGX Spark — LAN 서빙 설정과 프로토콜 변환
LiteLLM 프록시로 Claude Code API 호출을 DGX Spark의 Qwen3 모델로 라우팅. 설정, 모델 별칭 매핑, 클라우드 API 대비 레이턴시 트레이드오프 분석 포함.
Claude Code는 Anthropic API 형식으로 요청을 보냅니다. DGX Spark는 OpenAI 호환 엔드포인트로 vLLM을 실행합니다. LiteLLM이 둘을 연결합니다 — Anthropic API 호출을 실시간으로 OpenAI API 호출로 변환하여 Claude Code가 로컬 Qwen3 모델을 Claude 모델처럼 사용할 수 있게 합니다.
아키텍처
Claude Code(Anthropic API)
↓
LiteLLM 프록시(localhost:4000)
• claude-* 별칭 → Qwen3 모델 ID 매핑
• 메시지 형식 + tool-use 스키마 변환
↓
vLLM(http://192.168.68.155:8888/v1)
• GB10에서 Qwen3.6-35B-A3B-NVFP4 서빙
LiteLLM 설정
# litellm_config.yaml
model_list:
- model_name: claude-sonnet-4-20250514
litellm_params:
model: openai/Intel/Qwen3.6-35B-A3B-int4-AutoRound
api_base: http://192.168.68.155:8888/v1
api_key: none
- model_name: claude-3-opus-20240229
litellm_params:
model: openai/Intel/Qwen3.5-27B-int4-AutoRound
api_base: http://192.168.68.155:8888/v1
api_key: none
litellm_settings:
drop_params: true
set_verbose: false
프록시 시작:
litellm --config litellm_config.yaml --port 4000
Claude Code 설정
{
"apiBaseUrl": "http://localhost:4000",
"apiKey": "sk-local-any-string-works"
}
또는 셸 런처 패턴:
#!/usr/bin/env bash
export ANTHROPIC_API_KEY="sk-local-any-string"
export ANTHROPIC_BASE_URL="http://localhost:4000"
claude "$@"
vLLM에서 NVFP4 모델
GB10에서 최고 처리량을 위해 Qwen3.6-35B-A3B-NVFP4 서빙:
docker run -d --gpus all --ipc host --shm-size 64gb \
-p 8888:8000 \
-v ~/.cache/huggingface:/root/.cache/huggingface \
vllm/vllm-openai:cu130-nightly \
RedHatAI/Qwen3.6-35B-A3B-NVFP4 \
--served-model-name Intel/Qwen3.6-35B-A3B-int4-AutoRound \
--host 0.0.0.0 --port 8000 \
--dtype bfloat16 --gpu-memory-utilization 0.9 \
--max-model-len 131072 \
--enable-auto-tool-choice \
--tool-call-parser qwen3_coder \
--reasoning-parser qwen3 \
--moe-backend=flashinfer_cutlass
레이턴시 현실 비교
| 시나리오 | 레이턴시 |
|---|---|
| Claude Sonnet 4(클라우드) | 0.8–2s TTFT |
| Qwen3.6-35B NVFP4+MTP(로컬) | 0.15–0.4s TTFT |
| Qwen3.6-35B NVFP4(MTP 없음) | 0.25–0.6s TTFT |
| Qwen3.5-27B int4(로컬) | 0.1–0.25s TTFT |
같은 LAN에서는 로컬 TTFT가 클라우드보다 낮습니다 — TLS 핸드셰이크 없음, 지리적 라우팅 없음. 트레이드오프는 생성 품질입니다.
알려진 문제
- tool-use 스키마 차이: Qwen3의 도구 스키마는 Anthropic의 것과 약간 다릅니다. 복잡한 중첩 tool 호출(한 턴에 여러 tool 결과)이 간헐적으로 실패합니다.
drop_params: true를 추가하세요. - 대형 context 스트리밍: 128K+ context 길이에서 고동시성 시 LiteLLM 스트림 버퍼에 백프레셔가 발생할 수 있습니다.
- 모델 워밍업: 서버 시작 후 첫 요청은 느립니다(CUDA 그래프 컴파일 중). 런처 스크립트에 keep-alive ping을 포함시키세요.