vLLM提供了一个实现OpenAI的Completions API、Chat API等功能的HTTP服务器,本项目介绍使用vLLM官方镜像部署DeepSeek模型,并使用Docker Compose配置文件启动服务。
vLLM官方Docker镜像文件已经同步到腾讯CNB制品库:
docker pull docker.cnb.cool/aigc/deepseek-vllm/vllm-openai:latest
自行构建镜像请参考vLLM 官方文档
- Linux系统 AMD64架构
- Docker
- NVIDIA GPU(计算能力为7.0或更高)
- NVIDIA Container Toolkit & NVIDIA Driver
version: '3.9'
services:
vllm-openai:
# 使用最新的vllm-openai镜像
image: docker.cnb.cool/aigc/deepseek-vllm/vllm-openai:latest
container_name: vllm_service
restart: unless-stopped
ports:
# 将容器的8000端口映射到主机的8888端口
- "8888:8000"
volumes:
# 挂载模型目录
- ${DOCKER_VOLUME_DIRECTORY:-.}/models:/root/.cache/huggingface
environment:
- HUGGING_FACE_HUB_TOKEN=${HUGGING_FACE_HUB_TOKEN}
command: >
# 指定要加载的模型名称或者路径,如果手动下载可能需要指定模型路径。
--model neuralmagic/DeepSeek-R1-Distill-Qwen-32B-quantized.w4a16
# 设置张量并行大小,可以指定多个GPU
--tensor-parallel-size 2
# 最大并发序列数
--max-num-seqs 8
# 最大模型上下文长度
--max-model-len 8096
# 最大批处理token数
--max-num-batched-tokens 24576
# GPU内存使用率
--gpu-memory-utilization 0.9
ipc: host
deploy:
resources:
reservations:
devices:
# 使用所有可用的GPU
- driver: nvidia
count: all
capabilities: [gpu]
# 定义网络
networks:
default:
name: vllm
command
中的更多参数请参考:vLLM 引擎参数
- 启动服务
docker compose up -d
- 停止服务
docker compose down
使用方式同OpenAI API,如下:
from openai import OpenAI
client = OpenAI(
base_url="http://localhost:8888/v1",
api_key="token-abc123",
)
completion = client.chat.completions.create(
model="neuralmagic/DeepSeek-R1-Distill-Qwen-32B-quantized.w4a16",
messages=[
{"role": "user", "content": "Hello!"}
]
)
print(completion.choices[0].message)
- 模型下载国内可以访问魔搭社区 Neural Magic 或者Hugging Face 提供的量化模型。
- 如果拥有多个GPU,可在配置文件中指定多个GPU
--tensor-parallel-size num
。 max-model-len
上下文长度非常消耗GPU内存,请根据实际情况调整。