vLLM의 RAM 오프로딩 - tcclaviger 감사 포스트
RAM Offloading with vLLM - tcclaviger appreciation post
핵심 요약
vLLM에 추가된 전문가 RAM 오프로딩 기능을 활용해 로컬 환경에서 대규모 모델을 구동하는 방법 공유.
- 전문가 RAM 오프로딩 — vLLM에서 대규모 모델 구동을 위한 메모리 효율적 지원 추가됨.
- 로컬 모델 구동 — DeepSeek-V4-Flash-Vision-Exp를 로컬 환경에서 성공적으로 실행함.
- 성능 비교 — vLLM과 llama.cpp 간의 성능 및 오프로딩 방식에 대한 논의 진행.
- 기술적 구현 — podman을 활용한 복잡한 설정으로 대규모 모델의 로컬 서빙 구현.
tcclaviger 덕분에 이제 vLLM에서 전문가 수준의 RAM 오프로딩을 지원한다 (link). 덕분에 로컬 환경에서도 최신 모델들을 훨씬 쉽게 돌릴 수 있게 됐음!
난 R9700 4개로 오리지널 DeepSeek-V4-Flash-Vision-Exp를 돌려봤다.
podman run --rm -it \
--init \
--network host \
--ulimit memlock=-1:-1 \
-v /models:/models:ro \
-v ~/.vllm-cache:/cache \
-e VLLM_ROCM_USE_AITER=0 \
-e ROCR_VISIBLE_DEVICES=0,1,2,3 \
-e VLLM_CACHE_ROOT=/cache/vllm \
-e TORCHINDUCTOR_CACHE_DIR=/cache/inductor \
-e TRITON_CACHE_DIR=/cache/triton \
--device /dev/kfd \
--device /dev/dri \
--group-add keep-groups \
--annotation run.oci.keep_original_groups=1 \
--security-opt label=disable \
--security-opt seccomp=unconfined \
--shm-size 160g \
docker.io/tcclaviger/vllm@sha256:ef99b3d07c3f15e7978528c7510762ba024df9ab4242070d8ed092cd4cc1a694 \
/models/deepseek-ai/DeepSeek-V4-Flash-Vision-Exp \
--served-model-name DeepSeek-V4-Flash-Vision-Exp \
--tensor-parallel-size 4 \
--enable-expert-offload \
--expert-offload-mem 160 \
--reasoning-parser deepseek_v4 \
--reasoning-config '{"reasoning_parser":"deepseek_v4","reasoning_start_str":"","reasoning_end_str":""}' \
--tool-call-parser deepseek_v4 \
--enable-auto-tool-choice \
--max-num-seqs 8 \
--enable-prefix-caching \
--enable-chunked-prefill \
--max-num-batched-tokens 2048 \
--kv-cache-dtype fp8 \
--block-size 256 \
--max-model-len 256000 \
--gpu-memory-utilization 0.97 \
--mm-processor-cache-gb 4.0 \
--override-generation-config '{"max_tokens": 128000, "temperature": 1.0, "top_p": 0.95}' \
--speculative-config '{"method":"dspark","model":"/models/deepseek-ai/DeepSeek-V4-Flash-Vision-Exp","num_speculative_tokens":3,"draft_sample_method":"probabilistic","enable_adaptive_verification":false}' \
--compilation-config '{"cudagraph_capture_sizes": [4,8,12,16], "max_cudagraph_capture_size": 16}' \
--host 0.0.0.0 \
--port 8090


