DeepSeek模型用vLLM本地部署

用 DeepSeek 官方 32B 蒸馏模型示例完成 deepseek本地部署,并通过 /v1/models 验证 vLLM 模型接口。

完成下面的 deepseek本地部署 后,你会让 DeepSeek-R1-Distill-Qwen-32B 由 vLLM 启动为模型服务,并用 /v1/models 检查接口能否返回模型列表。开始前,vLLM 快速入门文档列出的运行平台是 Linux,Python 版本范围为 3.10–3.13;vLLM GPU 安装文档要求 NVIDIA GPU 的 compute capability 为 7.5 或更高。本文固定使用官方模型卡中的 32B 蒸馏模型示例,不展开完整版 R1。

deepseek本地部署前的准备条件

DeepSeek-R1 模型卡将完整版 DeepSeek-R1 列为 671B 总参数、37B 激活参数和 128K 上下文长度,并将完整模型的本地运行信息指向 DeepSeek-V3 仓库;该模型卡同时说明,Hugging Face Transformers 尚未直接支持它。

本文改用模型卡单独给出的 32B 蒸馏模型示例,其基础模型为 Qwen2.5-32B。DeepSeek 提醒蒸馏模型调整过配置和 tokenizer,并要求使用其设置运行,因此不要直接套用其他 Qwen 或 Llama 模型的全部参数。模型卡的 vLLM 示例没有在该处给出具体显存容量,启动前仍需按当前官方文档核对资源条件,不能把模型参数量或并行参数直接当作显存数值。

操作步骤

  1. 创建隔离环境并安装 vLLM。

bash uv venv --python 3.12 --seed source .venv/bin/activate uv pip install vllm --torch-backend=auto

这三步会创建并激活 Python 3.12 虚拟环境,然后安装 vLLM;同一份 vLLM 快速入门文档说明 --torch-backend=auto 可根据已安装的 CUDA driver version 选择 PyTorch index,服务器默认监听 http://localhost:8000,并可通过 /v1/models 列出模型。

  1. 按 DeepSeek 模型卡给出的命令启动服务。

bash vllm serve deepseek-ai/DeepSeek-R1-Distill-Qwen-32B --tensor-parallel-size 2 --max-model-len 32768 --enforce-eager

这条 DeepSeek-R1 模型卡原例会选择指定的 32B 蒸馏模型,并请求使用 2 个 tensor parallel groups。按照 vllm serve 命令行参考,--max-model-len 限制的是 prompt 与 output 合计的模型长度,而 --enforce-eager 会关闭 CUDA graph,并始终以 eager mode 执行 PyTorch。

启动命令会持续运行,不要关闭该终端;需要在另一个终端检查接口。

怎么确认成功

按上段已经引用的官方查询方式运行:

curl http://localhost:8000/v1/models

正确结果应是模型列表接口返回响应,而不是出现 Connection refused;文档没有要求固定的 JSON 字段顺序,因此不要用排版差异判断成败。这一步确认服务能够响应模型列表接口,但不证明生成内容质量或吞吐量。

常见出错点

Windows 主机无法直接运行

vLLM GPU 安装文档明确说明 vLLM 不原生支持 Windows,官方给出的运行路径是在兼容的 Linux 发行版中使用 WSL。本文的 Linux 命令应放在这个 WSL 环境内执行,而不是直接放进原生 Windows shell。

CUDA 或 PyTorch 环境与安装包冲突

vLLM 的 NVIDIA CUDA 安装文档建议使用全新环境;如果现有 CUDA version 不同,或者需要沿用已经安装的 PyTorch,则需要从 source 构建 vLLM。遇到依赖或构建冲突时,应先回到干净环境,再决定是否采用源码构建。

对话请求缺少 chat template

vLLM 在线服务文档说明,没有 chat template 时,服务器无法处理 chat 请求,相关请求会报错;--chat-template 可以接收模板文件路径,也可以直接接收模板字符串。遇到这类错误时,应先检查 tokenizer 中的模板,再按当前文档选择文件路径或字符串形式。

把模型长度当成输出上限

vllm serve 命令行参考再次明确,--max-model-len 覆盖 prompt 和 output,而不是只计算输出。因此启动命令中的 32768 是两者合计的上下文预算;如果客户端与服务器的上下文计算方式不一致,应先统一这项配置。

本文步骤依据正文链接的官方文档整理,未在本站机器上运行,也没有记录本地性能结果;执行前请按当前版本逐项核对。

资料来源