Nvidia本地LLM部署

80 阅读4分钟

安装 NVIDIA 显卡驱动、CUDA、CUDNN、vllm、ray

示例:
软件版本描述
Nvidia显卡驱动550.127.05gpu显卡驱动
CUDA12.2NVIDIA 提供的一套完整的开发工具集
cuDNN8.9.7GPU 加速的深度神经网络基本操作库
NCCL2.21.5GPU多卡通信
vllm0.7.2LLM推理引擎(非Nvidia生态)
ray2.42.0分布式计算框架(非Nvidia生态)
安装Nvidia显卡驱动
  1. 可以通过指令 sudo apt purge nvidia* 删除以前安装的NVIDIA驱动版本,重新安装。
  2. 可以先通过指令 lsmod | grep nouveau查看nouveau驱动的启用情况,如果有输出表示nouveau驱动正在工作,如果没有内容输出则表示已经禁用了nouveau。nouveau是Nvidia第三方开源驱动,需要先禁用。
  3. 查看显卡型号 lspci | grep -i vga
  4. 官网下载驱动,以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* 
    
  1. 安装cuda12.2, developer.nvidia.com/cuda-downlo…
  2. 配置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   
    
  1. 找到对应CUDA版本的cuDNN,安装cudnn developer.nvidia.com/rdp/cudnn-a…
  2. 安装vllm, docs.vllm.ai/en/stable/g… [可选]
  3. 安装ray, [可选,多机多卡用得到]
  •     pip3 install vllm ray[default] 
    
LLM 部署

image.png

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)。

参考:cloud.tencent.com/developer/a…