vLLM 部署DeepSeek-R1

一、硬件与系统环境要求

1.1 硬件配置

  • GPU: 8× NVIDIA A100 80GB (PCIe)
  • 显存要求: 每卡80GB,8卡总显存640GB
  • 系统内存: ≥32GB (用于交换空间)

1.2 软件环境

  • 操作系统: Linux(验证环境发行版 Ubuntu 22.04 LTS)
  • 驱动版本: NVIDIA Driver 535.171.04

二、环境准备

2.1 创建隔离的Python环境

conda create -n deepseek-r1 python=3.12  
conda activate deepseek-r1  

2.2 验证GPU状态

nvidia-smi 
Mon Feb 10 08:16:21 2025       
+---------------------------------------------------------------------------------------+
| NVIDIA-SMI 535.171.04             Driver Version: 535.171.04   CUDA Version: 12.2     |
|-----------------------------------------+----------------------+----------------------+
| GPU  Name                 Persistence-M | Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp   Perf          Pwr:Usage/Cap |         Memory-Usage | GPU-Util  Compute M. |
|                                         |                      |               MIG M. |
|=========================================+======================+======================|
|   0  NVIDIA A100 80GB PCIe          Off | 00000000:4B:00.0 Off |                    0 |
| N/A   50C    P0              63W / 300W |      0MiB / 81920MiB |      0%      Default |
|                                         |                      |             Disabled |
+-----------------------------------------+----------------------+----------------------+
|   1  NVIDIA A100 80GB PCIe          Off | 00000000:4C:00.0 Off |                    0 |
| N/A   49C    P0              58W / 300W |      0MiB / 81920MiB |      0%      Default |
|                                         |                      |             Disabled |
+-----------------------------------------+----------------------+----------------------+
|   2  NVIDIA A100 80GB PCIe          Off | 00000000:50:00.0 Off |                    0 |
| N/A   52C    P0              57W / 300W |      0MiB / 81920MiB |      0%      Default |
|                                         |                      |             Disabled |
+-----------------------------------------+----------------------+----------------------+
|   3  NVIDIA A100 80GB PCIe          Off | 00000000:51:00.0 Off |                    0 |
| N/A   52C    P0              58W / 300W |      0MiB / 81920MiB |      0%      Default |
|                                         |                      |             Disabled |
+-----------------------------------------+----------------------+----------------------+
|   4  NVIDIA A100 80GB PCIe          Off | 00000000:CB:00.0 Off |                    0 |
| N/A   50C    P0              55W / 300W |      0MiB / 81920MiB |      0%      Default |
|                                         |                      |             Disabled |
+-----------------------------------------+----------------------+----------------------+
|   5  NVIDIA A100 80GB PCIe          Off | 00000000:CC:00.0 Off |                    0 |
| N/A   55C    P0              61W / 300W |      0MiB / 81920MiB |      0%      Default |
|                                         |                      |             Disabled |
+-----------------------------------------+----------------------+----------------------+
|   6  NVIDIA A100 80GB PCIe          Off | 00000000:CD:00.0 Off |                    0 |
| N/A   43C    P0              53W / 300W |     48MiB / 81920MiB |      0%      Default |
|                                         |                      |             Disabled |
+-----------------------------------------+----------------------+----------------------+
|   7  NVIDIA A100 80GB PCIe          Off | 00000000:CE:00.0 Off |                    0 |
| N/A   50C    P0              80W / 300W |  65175MiB / 81920MiB |      0%      Default |
|                                         |                      |             Disabled |
+-----------------------------------------+----------------------+----------------------+
                                                                                         
+---------------------------------------------------------------------------------------+
| Processes:                                                                            |
|  GPU   GI   CI        PID   Type   Process name                            GPU Memory |
|        ID   ID                                                             Usage      |
|=======================================================================================|
+---------------------------------------------------------------------------------------+

确认所有8张GPU显存状态显示为0MiB / 81920MiB(空闲可用)


三、获取模型与框架

3.1 下载量化版模型文件

git clone https://huggingface.co/cognitivecomputations/DeepSeek-R1-AWQ  

3.2 克隆vLLM框架

git clone --branch v0.7.2 --depth 1 https://github.com/vllm-project/vllm.git  
cd vllm && pip install -e .  # 安装vLLM框架  

四、启动API服务

4.1 执行启动命令

python -m vllm.entrypoints.openai.api_server \  
--served-model-name deepseek-r1 \  
--model /share/menkeyi/DeepSeek-R1-AWQ \  
--trust-remote-code \  
--host 0.0.0.0 \  
--port 8080 \  
--max-model-len 2048 \       # 最大上下文长度设为2048token  
--tensor-parallel-size 8 \    # 使用全部8卡并行  
--gpu_memory_utilization 0.8 \  
--enforce-eager \            # 禁用CUDA优化提升兼容性  
--dtype float16  

五、服务功能验证

5.1 发送测试请求

curl -X POST "http://10.192.128.18:8080/v1/chat/completions" \  
-H "Content-Type: application/json" \  
-d '{  
  "model": "deepseek-r1",  
  "messages": [{"role": "user", "content": "你好"}]  
}'  

5.2 预期响应

{  
  "id": "cmpl-8e3e7f2a6e3f4e7",  
  "object": "chat.completion",  
  "created": 1732365827,  
  "model": "deepseek-r1",  
  "choices": [{  
    "index": 0,  
    "message": {"role": "assistant", "content": "您好!有什么可以帮助您的吗?"},  
    "finish_reason": "stop"  
  }]  
}  

vllm常用推理参数:

一、网络参数

参数 类型 默认值 说明
--host string localhost API服务监听地址,生产环境建议设为0.0.0.0以允许外部访问
--port int 8000 API服务监听端口号
--uvicorn-log-level enum info 控制Uvicorn框架日志粒度,可选:debug,trace,info,warning,error,critical
--allowed-origins list 允许跨域请求的来源列表(例:http://example.com
--allow-credentials flag False 允许发送Cookies等凭证信息
--ssl-keyfile/--ssl-certfile path HTTPS所需的私钥和证书文件路径

二、硬件资源管理

参数 类型 默认值 说明
--tensor-parallel-size int 1 张量并行度(必须等于物理GPU数量)
--gpu-memory-utilization float 0.9 GPU显存利用率阈值(0.9=90%显存上限)
--block-size enum 16 连续Token块大小,取值8/16/32/64/128
--device enum auto 执行设备类型(cuda/tpu/hpu/xpu/cpu等)

三、异构存储配置

参数 类型 默认值 说明
--swap-space int 4 每个GPU的CPU换页空间大小(GiB)
--cpu-offload-gb int 0 每GPU使用CPU内存扩展显存的GiB数(需高速CPU-GPU互联)
--max-cpu-loras int =max_loras CPU内存缓存的最大LoRA适配器数量

四、模型基础参数

参数 类型 默认值 说明
--model string 必填 模型名称(如gpt-3.5-turbo)或本地路径
--dtype enum auto 计算精度控制,常用float16/bfloat16
--max-model-len int 自动获取 模型最大支持的上下文长度
--tokenizer-mode enum auto Tokenizer模式(auto自动选择快速实现)

五、高级加载控制

参数 类型 默认值 说明
--load-format enum auto 权重加载协议,优先safetensors更安全
--config-format enum auto 配置格式hf/mistral或自动检测
--trust-remote-code flag False 加载HuggingFace自定义代码时必须启用,有安全风险
--hf-overrides JSON 动态覆盖HuggingFace模型配置(如调整隐藏层维度)

六、推理参数限制

参数 类型 默认值 说明
--max-num-seqs int 256 单批次允许多少序列并行处理
--max-num-batched-tokens int 动态调整 每个推理阶段处理的Token总数上限
--max-logprobs int 5 返回每个位置的概率最高前N个token
--speculative-disable-by-batch-size int 排队请求超过该阈值时关闭推测解码

七、安全与许可控制

参数 类型 默认值 说明
--api-key string API访问密钥,设置后所有请求需包含Authorization
--allowed-local-media-path path 允许服务端访问的本地媒体路径(仅可信环境启用)
--cert-reqs enum SSL证书验证级别(参考Python ssl模块)

八、量化配置

参数 类型 默认值 说明
--quantization enum 权重量化方法,如awq/gptq/marlin
--kv-cache-dtype enum auto KV缓存量化类型(fp8/fp8_e5m2等)
--lora-dtype enum auto LoRA适配器的量化精度设置
--calculate-kv-scales flag False 动态计算FP8量化比例

调优建议

  1. 操作建议

    • 显存使用较高时优先调整--gpu-memory-utilization--block-size
    • 多GPU环境严格保证tensor-parallel-size与GPU数量一致
    • 高安全场景必须设置--api-key--allowed-origins白名单
  2. 性能关键控制点

    • CPU换页大小 (swap-space) 与批处理容量 (max-num-seqs) 的平衡
    • 权重量化 (quantization) 和KV缓存量化 (kv-cache-dtype) 的组合选择
    • Token块大小 (block-size) 对内存利用率和吞吐量的影响

posted @ 2025-02-10 08:18  MKY-门可意  阅读(14620)  评论(0)    收藏  举报