这篇档将指导如何在 TencentOS Server 4 上快速完成 NVIDIA Driver 和 CUDA 的安装部署,并无缝运行上层 AI 模型与应用。
一、基础环境要求及说明
·支持 TencentOS 内核版本:6.6内核(含其间各小版本)。如你使用的是TencentOS 2 或 3系列(5.4内核),建议你升级至 TencentOS 4版本(6.6 内核)。
·支持的 GPU 驱动和对应 CUDA 版本 :
| 驱动版本 | 对应CUDA版本 |
| 525.147.05 | 12.0.1 |
| 530.41.03 | 12.1.1 |
| 535.274.02 | 12.2.2 |
| 545.29.06 | 12.3.2 |
| 550.163.01 | 12.4.1 |
| 555.58.02 | 12.5.1 |
| 560.35.03 | 12.6.3 |
| 570.195.03 | 12.8.1 |
| 575.64.05 | 12.9.1 |
| 580.95.05 | 13.0.1 |
·支持的 CUDA 版本:11.8.0、 12.0.1、 12.1.1、 12.2.2、 12.3.2、 12.4.1、 12.5.1、 12.6.3、 12.8.1、 12.9.1、 13.0.1。
三、安装 TencentOS EPOL源
dnf install epol-release
四、安装 NVIDIA Driver 驱动包
此处以 Nvidia-Driver-570 为例,若需安装其他版本,请更新以下命令中软件包名的版本号,将570替换为目标版本号即可。
# 安装开源模块dnf install -y kmod-nvidia-570-dkms-open nvidia-570 nvidia-driver-570-open # 安装闭源模块dnf install -y kmod-nvidia-570-dkms nvidia-570 nvidia-driver-570
注意:说明:
注意:NVIDIA Driver 分为开源和闭源版本,所以部署流程分为开源模块安装和闭源模块安装两部分。
五、安装验证
# 重启机器sudo reboot# 查看已安装的驱动软件包dnf list installed | grep nvidia# 查看驱动信息nvidia-smi
注意:实例重启会导致正在运行的应用和服务被强制终止,或文件和内存数据会丢失。请先在重启前做好数据保存等操作。
六、卸载驱动安装包(可选)
如需要切换驱动版本,请参见以下步骤卸载已安装的驱动安装包。
# 卸载开源模块dnf remove -y kmod-nvidia-570-dkms-open nvidia-570 nvidia-driver-570-open # 卸载闭源模块dnf remove -y kmod-nvidia-570-dkms nvidia-570 nvidia-driver-570
七、安装 CUDA
针对使用场景的不同,TencentOS 团队采用了全新的打包方案。新方案通过将 CUDA 拆分为 runtime 和 devel 两类子包,实现了组件精细化分层管理,既满足了轻量级生产部署的需求,又支持了代码编译和模型训练的完整开发环境。
| 优化方向 | 传统方案 | 新方案 |
| 包结构 | 细分子包 | 拆分为 runtime /devel 两类子包 |
| 组件分层 | 静态库/工具与运行时捆绑 | 划分可执行文件、.so 动态库、头文件、.a 静态库 |
其中,runtime / devel,对应组件范围如下:
| 类型 | 组件范围 | 适用场景 |
| Runtime | 可执行文件、 .so 动态库 | 轻量级生产部署 |
| Devel | runtime 、头文件、 .a 静态库 | 代码编译/模型训练 |
八、安装 CUDA 组件
此处以 cuda-12-8 为例,如需安装其他版本,请更新以下命令中软件包名的版本号,将12-8替换为目标版本号即可。
·Runtime 包安装:
dnf install -y cuda-runtime-12-8
·Devel 包安装:
dnf install -y cuda-devel-12-8
九、安装验证
# 查看已安装的 cuda 软件包dnf list installed | grep cuda# 查看 cuda 版本nvcc –version
十、多版本共存支持(可选)
新版打包方案解决了 CUDA 多版本共存的问题,可下载多个版本的 CUDA,并利用 update-alternatives 进行版本切换。如需兼容 CUDA 多版本共存,请参见 安装 CUDA,依次安装所需版本。例如,当同时安装 CUDA 12.2 与 12.9 版本,可参见以下方式切换版本:
十一、卸载 CUDA 组件(可选)
如需切换 CUDA 版本,请参见以下步骤卸载已安装的 CUDA 安装包。
·Runtime 包:
dnf remove -y cuda-runtime-12-8 cuda-toolkit-12-8-config-common
·Devel 包:
dnf remove -y cuda-runtime-12-8 cuda-toolkit-12-8-config-common cuda-12-8 cuda-devel-12-8 cuda-toolkit-12-8
十五、安装 uv
# 下载 uv dnf install pippip install uv # 推荐使用 uv 安装,智能处理依赖冲突uv pip install vllm==0.10.0 –system
十六、服务启动
# 启动 vllm 服务,拉取大模型(此处以 Qwen 为例)vllm serve "Qwen/Qwen3-0.6B" # 若机器配置较低,可尝试如下命令启动服务vllm serve "Qwen/Qwen3-0.6B" –gpu-memory-utilization 0.7 –max-model-len 1024 –max-num-seqs 4 –dtype float16 –block-size 16
十七、结果展示:
·示例:命令行测试
# 另起终端curl -X POST "http://localhost:8000/v1/chat/completions" -H "Content-Type: application/json" –data '{"model": "Qwen/Qwen3-0.6B","messages": [{"role": "user","content": "What is the capital of France?"}]}'
·示例:Python 代码部署和推理
创建python程序,内容如下:from vllm import LLM, SamplingParamsfrom transformers import AutoTokenizer # 初始化模型参数model_path = "Qwen/Qwen3-0.6B" # 替换为实际模型路径llm = LLM( model=model_path, dtype="half", # 启用半精度推理(FP16) trust_remote_code=True, # 对Hugging Face模型必须开启 tensor_parallel_size=1, # 单GPU运行 gpu_memory_utilization=0.8 # 显存利用率控制) # 配置生成参数sampling_params = SamplingParams( temperature=0.7, top_p=0.95, max_tokens=256, repetition_penalty=1.1) # 构建对话模板messages = [ {"role": "system", "content": "你是一个诗人"}, {"role": "user", "content": "写一首关于春天的七言绝句"}]tokenizer = AutoTokenizer.from_pretrained(model_path)prompt = tokenizer.apply_chat_template( conversation=messages, tokenize=False, add_generation_prompt=True) # 执行推理outputs = llm.generate( prompts=[prompt], sampling_params=sampling_params) # 输出结果for output in outputs: generated_text = output.outputs[0].text print(f"生成结果:\\n{generated_text}")
十九、安装
# 安装依赖dnf install -y gawk# 下载安装脚本并安装curl -fsSL https://ollama.com/install.sh | sh
20、服务启动
# 服务启动ollama serve
21、运行 Qwen 模型
# 拉取大模型(此处以 Qwen 为例)ollama run qwen3:0.6b
23、nvidia-smi 显示的 CUDA Version 与实际 CUDA Toolkit 版本不一致
nvidia-smi 显示的 CUDA Version 与实际 CUDA Toolkit 版本不一致是正常现象,原因在于两者代表不同层面的版本信息。nvidia-smi 命令返回结果中,Driver Version 是当前安装的驱动版本,CUDA Version 代表驱动所支持的最高 CUDA Runtime API 版本,并非当前安装的 CUDA Toolkit 版本。如需查看 CUDA Toolkit 版本,请执行 nvcc –version 命令。
24、cuda-compat 问题(Driver 与 CUDA 版本兼容)
在 CUDA 生态中,不同 CUDA 版本均有与之最为适配的驱动程序版本。实际上,每个 CUDA 工具包都配套提供了 NVIDIA 显示驱动程序包,此驱动程序能够全面支持该版本 CUDA 工具包所引入的各项功能,是在该 CUDA 版本开发阶段就紧密匹配、功能兼容性最优的版本对应关系。
关于 CUDA 版本与驱动版本的对应关系,请参见 版本发布说明。但是,在实际应用场景里,如果需要突破这种既定对应关系,例如在旧版本的驱动上运行高版本的 CUDA,或者是在较新的驱动上运行旧版本的 CUDA,将不可避免地引发兼容性问题。
为满足高版本 CUDA 在老旧硬件设备上的运行需求,专门推出了 cuda-compat 包以实现兼容适配。其实际效果是,当使用该包时,高版本 CUDA 仅能调用当前驱动所支持的最高版本 CUDA 所具备的功能,而无法使用因 CUDA 升级而新增的功能,从功能体验层面来看,类似对 CUDA 版本进行“降级”处理。
具体结论如下:
·驱动版本高于或等于 CUDA 版本,CUDA 不安装 cuda-compat,运行正常;安装 cuda-compat,可能发生异常。
·驱动版本低于 CUDA 版本, CUDA 必须安装 cuda-compat。
25、低版本 CUDA 上运行 AI 框架(vLLM)时库文件缺失问题
vLLM 核心架构是自研高性能 C++/CUDA 内核,深度集成 PyTorch,编译时链接特定版本的 CUDA 运行时,与 PyTorch 的 CUDA 版本强相关。而高版本的 vLLM 都是根据较新的 PyTorch 来进行构建,因此在较低版本的系统 CUDA 环境中编译 vLLM 时会出现关键 symbol 缺失问题,具体报错信息可参考如下截图:
例如,在 CUDA 12.2 中编译 vLLM 时出现 CUPTI 相关 symbol 缺失问题,经分析发现,PyTorch/Triton 自带的 CUPTI 库包含所需符号,但 CUDA 12.2 包含的 CUPTI 库缺少所需符号:
切换到高版本的 CUDA 12.9 环境时,测试结果包含目标 symbol 且可以成功运行:
以上情况,你可通过设置环境变量,指定动态链接器搜索共享库(.so文件)的路径。当运行需要特定版本 CUDA 库的程序时,系统会优先在这个路径中查找库文件。具体命令如下:
export LD_LIBRARY_PATH=/usr/local/lib/python3.11/site-packages/nvidia/cuda_cupti/lib:$LD_LIBRARY_PATH