使用vllm单机部署DeepSeek蒸馏模型(Linux)
应用场景
蒸馏是一种通过大型基础模型生成训练语料数据来训练较小模型的技术,适用于需要更小、更高效的场景,而不会显著的损失精度。华为云为用户提供使用vllm来部署DeepSeek蒸馏系列模型的详细步骤,帮助客户快速部署。
方案架构
  方案优势
使用vllm在conda虚环境上从0开始部署DeepSeek蒸馏模型,深刻理解模型运行依赖,使用少量的资源,快速高效接入用户服务用于生产,实现更精细的性能和成本控制。
资源和成本规划
| 
        资源  | 
      
        资源说明  | 
      
        成本说明  | 
     
|---|---|---|
| 
        虚拟私有云VPC  | 
      
        VPC网段:192.168.0.0/16  | 
      
        免费  | 
     
| 
        虚拟私有云子网  | 
      
       
  | 
      
        免费  | 
     
| 
        安全组  | 
      
        入方向规则: 
  | 
      
        免费  | 
     
| 
        弹性云服务器  | 
      
       
  | 
      
        ECS涉及以下几项费用: 
 具体的计费方式及标准请参考计费模式概述。  | 
     
| 
        编号  | 
      
        模型名称  | 
      
        最小所需规格  | 
      
        GPU卡  | 
     
|---|---|---|---|
| 
        0  | 
      
        DeepSeek-R1-Distill-Qwen-7B DeepSeek-R1-Distill-Llama-8B  | 
      
        p2s.2xlarge.8  | 
      
        V100(32G)*1  | 
     
| 
        p2v.4xlarge.8  | 
      
        V100(16G)*2  | 
     ||
| 
        pi2.4xlarge.4  | 
      
        T4(16G)*2  | 
     ||
| 
        g6.18xlarge.7  | 
      
        T4(16G)*2  | 
     ||
| 
        1  | 
      
        DeepSeek-R1-Distill-Qwen-14B  | 
      
        p2s.4xlarge.8  | 
      
        V100(32G)*2  | 
     
| 
        p2v.8xlarge.8  | 
      
        V100(16G)*4  | 
     ||
| 
        pi2.8xlarge.4  | 
      
        T4(16G)*4  | 
     ||
| 
        2  | 
      
        DeepSeek-R1-Distill-Qwen-32B  | 
      
        p2s.8xlarge.8  | 
      
        V100(32G)*4  | 
     
| 
        p2v.16xlarge.8  | 
      
        V100(16G)*8  | 
     ||
| 
        3  | 
      
        DeepSeek-R1-Distill-Llama-70B  | 
      
        p2s.16xlarge.8  | 
      
        V100(32G)*8  | 
     
 
   请联系华为云技术支持选择最适合您部署的GPU卡资源服务器。
基于vllm手动部署DeepSeek蒸馏模型步骤
Linux实例基于vllm手动部署DeepSeek蒸馏模型操作步骤如下:
实施步骤
- 创建GPU弹性云服务器。
    
    
- 镜像选择:建议选择华为云提供的GPU实例的未安装驱动的Huawei Cloud EulerOS 2.0/Ubuntu 22.04公共镜像。
      图2 GPU实例镜像选择
       - 需要创建EIP,方便依赖环境下载,方便调用模型接口进行推理。
 
 - 镜像选择:建议选择华为云提供的GPU实例的未安装驱动的Huawei Cloud EulerOS 2.0/Ubuntu 22.04公共镜像。
      
 - 驱动和CUDA的前置条件检查。
    
    
请参考手动安装GPU加速型ECS的Tesla驱动安装535版本驱动,12.2版本CUDA。
 - 创建conda虚环境。
    
    
- 执行以下命令,下载miniconda安装包。
      
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
 - 执行以下命令,安装miniconda。
      
bash Miniconda3-latest-Linux-x86_64.sh
 - 执行以下命令,将conda环境变量添加到启动文件中。
      
echo 'export PATH="$HOME/miniconda3/bin:$PATH"' >> ~/.bashrc source ~/.bashrc
 - 执行以下命令,创建基于python3.10的虚环境。
      
conda create -n vllm-ds python=3.10 conda activate vllm-ds conda install numpy
 
 - 执行以下命令,下载miniconda安装包。
      
 - 安装vllm等依赖包。
    
    
- 执行以下命令,更新升级pip。
      
python -m pip install --upgrade pip -i https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple
 - 执行以下命令,安装vllm。
      
pip install vllm -i https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple
使用vllm –version可以查看当前安装的vllm版本。
 - 执行以下命令,安装modelscope。
      
pip install modelscope -i https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple
 
       modelscope是国内模型开源社区,国内下载会更快,如果在国外,请使用hugging Face进行下载。
 
 - 执行以下命令,更新升级pip。
      
 - 下载大模型文件。
    
    
- 执行以下命令,创建下载模型脚本。
      
vim download_models.py
插入以下内容:
from modelscope import snapshot_download model_dir = snapshot_download('deepseek-ai/DeepSeek-R1-Distill-Qwen-7B', cache_dir='/root', revision='master')模型名称以DeepSeek-R1-Distill-Qwen-7B为例,可参考表2更换需要的模型,模型存储的本地路径以/root为例,可以更换自己的目录。
 - 执行以下命令,下载模型。
      
python3 download_models.py
等待模型下载完成。
 
 - 执行以下命令,创建下载模型脚本。
      
 - 启动vllm.server运行大模型。
    
    执行以下命令,运行大模型。
python -m vllm.entrypoints.openai.api_server --model /root/deepseek-ai/DeepSeek-R1-Distill-Qwen-7B --served-model-name DeepSeek-R1-Distill-Qwen-7B --max-model-len=2048 &
 
     - 如果GPU实例是多卡机器,添加-tp ${卡数},比如2卡就是 -tp 2。
 - V100/T4显卡不能使用BF16精度,只能使用float16,需要加上参数--dtype float16。
        
python -m vllm.entrypoints.openai.api_server --model /root/deepseek-ai/DeepSeek-R1-Distill-Qwen-7B --served-model-name DeepSeek-R1-Distill-Qwen-7B --max-model-len=2048 --dtype float16 -tp 2 &
 - 模型加载完成后,报显存不足可以添加--enforce-eager使用eager模式,停用CUDA graph减少显存使用。
        
python -m vllm.entrypoints.openai.api_server --model /root/deepseek-ai/DeepSeek-R1-Distill-Qwen-7B --served-model-name DeepSeek-R1-Distill-Qwen-7B --max-model-len=2048 –dtype float16 –enforce-eager &
 - 如果显存不够,请更换大规格GPU实例,请参考表2。
 - 模型启动后,默认监听端口是8000。
 
 - 调用模型接口测试。
    
    
- 调用以下API查看当前运行的模型。
      
curl http://localhost:8000/v1/models

 - 调用以下API进行聊天对话。
      
curl http://localhost:8000/v1/chat/completions \ -H "Content-Type: application/json" \ -d '{ "model": "DeepSeek-R1-Distill-Qwen-7B", "messages": [{"role": "user", "content": "hello\n"}] }'
 
至此模型就部署完毕并验证正常,您可以在本地postman或者自己的服务里面使用EIP调用对应的API接口来对话。
 - 调用以下API查看当前运行的模型。