安装 NVIDIA 显卡驱动、CUDA、CUDNN、vllm、ray
示例:
| 软件 | 版本 | 描述 |
|---|---|---|
| Nvidia显卡驱动 | 550.127.05 | gpu显卡驱动 |
| CUDA | 12.2 | NVIDIA 提供的一套完整的开发工具集 |
| cuDNN | 8.9.7 | GPU 加速的深度神经网络基本操作库 |
| NCCL | 2.21.5 | GPU多卡通信 |
| vllm | 0.7.2 | LLM推理引擎(非Nvidia生态) |
| ray | 2.42.0 | 分布式计算框架(非Nvidia生态) |
安装Nvidia显卡驱动
- 可以通过指令 sudo apt purge nvidia* 删除以前安装的NVIDIA驱动版本,重新安装。
- 可以先通过指令 lsmod | grep nouveau查看nouveau驱动的启用情况,如果有输出表示nouveau驱动正在工作,如果没有内容输出则表示已经禁用了nouveau。nouveau是Nvidia第三方开源驱动,需要先禁用。
- 查看显卡型号 lspci | grep -i vga
- 官网下载驱动,以NVIDIA-Linux-x86_64-550.127.05.run为例,执行如下命令进行安装。
-
*sudo ./NVIDIA-Linux-x86_64-550.127.05.run -no-x-check -no-nouveau-check -no-opengl-files*
- 安装cuda12.2, developer.nvidia.com/cuda-downlo…
- 配置cuda环境变量,执行nvcc -V 查看,
-
export PATH=$PATH:/usr/local/cuda/bin export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda/lib64 export LIBRARY_PATH=$LIBRARY_PATH:/usr/local/cuda/lib64
- 找到对应CUDA版本的cuDNN,安装cudnn developer.nvidia.com/rdp/cudnn-a…
- 安装vllm, docs.vllm.ai/en/stable/g… [可选]
- 安装ray, [可选,多机多卡用得到]
-
pip3 install vllm ray[default]
LLM 部署
vllm 启动的方式
python3 -m vllm.entrypoints.openai.api_server \ # 启动vLLM的OpenAI兼容API服务器
--model=/models/Qwen1.5-72B-Chat-GPTQ-Int4 \ # 指定要加载的模型路径
--served-model=gpt-4 \ # 指定要提供的模型名字,即是API请求的模型名称
--dtype=float16 \ # 指定张量数据类型为float16
--tensor-parallel-size=4 \ # 指定张量并行大小为4,参数指定 GPU 数量,vLLM 自动管理多卡通信(基于 NCCL)
--quantization=gptq \ # 启用GPTQ量化
--trust-remote-code \ # 信任远程代码
--gpu-memory-utilization=0.8 \ # 指定GPU内存利用率为0.8
--host=0.0.0.0 \ # 指定服务器主机地址为0.0.0.0
--port=8001 \ # 指定服务器端口号为8001
--max-model-len=8192 # 指定模型的最大长度为8192
--max-num-seqs 2 # 指定最大序列数为2,可以降低上面模型长度到8192,提升该数值以提升并发增加数据吞吐量
vllm serve /data/models/huggingface/Qwen3-32B \
--served-model-name Qwen3-32B \
--tensor-parallel-size 2 \
--device cuda \
--gpu-memory-utilization 0.9 \
--host 0.0.0.0 \
--port 51004 \
--enable-auto-tool-choice \
--tool-call-parser hermes \
--enable-reasoning \
--reasoning-parser deepseek_rl \
--distributed-executor-backend ray
vllm 部分启动参数说明:
NCCL_NVLS_ENABLE=0: 环境变量禁用NVIDIA集合通信库(NCCL)的NVLS功能。NVLS是NVIDIA Library Services的缩写,禁用它可以解决某些集群环境中的通信问题。
--enable-reasoning: 启用vLLM的推理功能,允许模型执行更复杂的推理任务,如分步骤解决问题。
--reasoning-parser deepseek_r1: 指定使用DeepSeek-R1模型特定的推理结果解析器。该解析器负责处理模型输出中的推理步骤和中间结果。
--trust-remote-code: 允许加载和执行模型中包含的自定义代码。这对于使用自定义模块的模型(如DeepSeek)很重要,但需要确保模型来源可信。
--tensor-parallel-size 4: (-tp)设置张量并行度为4,意味着模型将被分割到4个GPU上运行。这种拆分方式使得超大模型能够在多个GPU上高效运行,每个GPU仅存储并计算模型的一部分。
--pipeline-parallel-size (或 -pp):指定 PP 并行度。通常在模型需大于 8 卡且无 RDMA 网络连接时使用。需与 TP 结合(例如,在 2 x 8 卡服务器上,可指定-tp=8 -pp=2)
--gpu-memory-utilization 0.95: 设置GPU内存使用率上限为95%。
--max-model-len 32768: 设置模型能处理的最大序列长度(token数)为32,768。这是一个非常大的上下文窗口,允许处理极长的输入文本。
--max-num-batched-tokens 32768: 设置单个批次中允许的最大token数量,这里也设置为32,768。这影响服务处理多个并发请求的能力,更大的值允许更多并发,但需要更多内存。
--quantization fp8: 使用FP8(8位浮点)量化技术来减少模型内存需求。FP8是NVIDIA近期支持的高效量化格式,可以在保持较好性能的同时显著减少内存占用(相比FP16或FP32)。