一、硬件与系统环境要求
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量化比例 |
调优建议:
-
操作建议:
- 显存使用较高时优先调整
--gpu-memory-utilization
和--block-size
- 多GPU环境严格保证
tensor-parallel-size
与GPU数量一致
- 高安全场景必须设置
--api-key
和--allowed-origins
白名单
-
性能关键控制点:
- CPU换页大小 (
swap-space
) 与批处理容量 (max-num-seqs
) 的平衡
- 权重量化 (
quantization
) 和KV缓存量化 (kv-cache-dtype
) 的组合选择
- Token块大小 (
block-size
) 对内存利用率和吞吐量的影响