CUDA 安装理解

发布时间:2026/10/2 17:17:39
CUDA 安装理解 经常部署或安装一些模型、程序等少不了要使用cuda由于不了解经常被版本问题折磨看一些资料看完也觉得不太明白下面谈一下自己的理解不对之处望指出。GPU驱动是必须要装的它负责和显卡去打交道。英伟达发明了一种编程语言你可以理解成是一种对C 的增强语言它的源码文件扩展名一般是 .cu , 例如这些 .cu 文件都是这种编程语言写的程序。既然是程序那就有编译器和运行时nvcc 命令是编译器安装cuda-toolkit后才有nvcc命令如果你要运行的程序中没有 .cu 的源码一般不需要安装cuda-toolkit。cuda runtime是程序的运行环境用来运行 .cu 代码编译出来的程序只运行不编译。一GPU驱动、cuda runtime、cuda-toolkit 三者关系的理解1.GPU驱动驱动是直接安装在系统层面的非虚拟环境所有程序共用一个驱动它决定了能运行的cuda版本上限通过nvidia-smi 可查看驱动版本 和 最高能运行的cuda版本610.62 是驱动版本13.3 是最高支持的CUDA版本2.cuda runtimecuda rutime 仅为cuda程序的运行环境cuda toolkit不仅包含运行环境也包含cuda程序编译器nvcc和一些其他工具。二者关系可以理解为cuda rutime 是JREcuda toolkit 是JDK。cuda runtime可以在系统层面安装也可以每个虚拟python环境安装一个。一般你在安装gpu 版pytorch时都会自动给你安装cuda runtime比如执行如下命令它就会安装pytorch及cuda runtime 12.8 其中cu128指的就是cuda runtime 12.8pip install torch --index-url https://download.pytorch.org/whl/cu128但完成上述安装后仅安装了cuda runtime是没有nvcc命令的即不能用nvcc -V查看版本但可以用如下命令看到相关的runtime依赖pip list | grep nvidia上述组件的作用解释如下3. cuda-toolkitcuda toolkit 可以在系统层面安装也可以每个虚拟python环境安装一个.大多数情况下并不需要安装它因为大多数情况下你只是在跑别人编译好的程序比如用vllm部署模型就不需要安装它因为vllm已经是别人编译好的程序安装cuda runtime就够了但如果要运行的程序中包含 .cu 的cuda源码程序就需要安装cuda-toolkit安装cuda-toolkit后才有nvcc命令才可用nvcc命令编译程序。推荐采用conda 在虚拟环境安装 cuda-toolkit命令conda install -c nvidia cuda-toolkit12.8 -y但是不建议通过 pip / uv pip 安装cuda-toolkit 因为它们安装的很可能功能不全有的甚至没有nvcc编译器安装12.x的cuda-toolkit 需要执行 pip install cuda-toolkit[all] 才完整但如果是13.x的cuda-toolkit需要单独安装nvcc4. 注意4.1 假设别人的 .cu 的程序是用 cuda-toolkit 高版本编译的高版本的nvcc你装一个低版本的 cuda runtime来运行很可能会运行不了。4.2 虚拟环境中可能已经被某个程序如pytorch自动安装了某个版本的cuda runtime但是你又安装其他版本的cuda tookit 也可能造成版本混乱不兼容。二经常踩坑点1. 安装GPU版pytorchcuda12.8pip install torch --index-url https://download.pytorch.org/whl/cu128或者#torch相关的依赖使用--index-url地址 #torch依赖的其他组件如 filelock使用 --extra-index-url地址清华源加速 pip install torch \ --index-url https://download.pytorch.org/whl/cu128 \ --extra-index-url https://pypi.tuna.tsinghua.edu.cn/simple2.安装CPU版pytorchpip install torch #加清华源也是CPU版本 pip install torch -i https://pypi.tuna.tsinghua.edu.cn/simple这里是最坑的我们经常认为上面2条命令就把torch安装好了pytorch就可以调用GPU了但实际上这个命令安装的是CPU版的pytorch。3. 验证安装的pytorch能否用GPU#切换到对应的虚拟环境后执行 python -c import torch; print(torch.__version__, torch.version.cuda, torch.cuda.is_available())输出True证明是GPU版的pytorch4. vllm 与 cuda runtimevllm非常特殊vllm是不会用虚拟环境中的cuda runtime的vllm固定使用系统级的cuda runtime。如何证明如果你已经安装了vllm可以用ldd命令查看当前虚拟环境中vllm的这个扩展文件_C_stable_libtorch.abi3.so的依赖关系ldd /data/qwen35-4b/venv/lib/python3.11/site-packages/vllm/_C_stable_libtorch.abi3.so其中libcudart.so.13 指向的是系统的cuda runtime(简写为cudart, rt就是runtime简写)写死了没法配置或修改。也就是说如果用vllm跑大模型你不仅需要在虚拟环境中安装cuda runtime供pytorch使用还要在系统中安装cuda runtime供vllm使用。而sglang可以通过环境变量配置cuda runtime路径即sglang可以使用虚拟环境中的cuda runtime 。5. 系统层面安装cuda runtime以ubuntu系统安装cuda runtime为例如下# 下载并安装密钥环 wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2404/x86_64/cuda-keyring_1.1-1_all.deb sudo dpkg -i cuda-keyring_1.1-1_all.deb # 更新软件包列表 sudo apt update # 上面两部一定要执行否则找不到安装包执行后可以安装 CUDA 13 runtime了 sudo apt install cuda-runtime-13-06.系统层面安装cuda toolkit有时候runtime装了可能还会缺失一些工具比如监控的这时直接装toolkit可能更省事# 下载并安装密钥环 wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2404/x86_64/cuda-keyring_1.1-1_all.deb sudo dpkg -i cuda-keyring_1.1-1_all.deb # 更新软件包列表 sudo apt update # 上面两步一定要执行否则找不到安装包执行后可以安装 CUDA 13 toolkit了 sudo apt install cuda-toolkit-13-0三vllm部署Qwen3.5-4B实战采用的机器 驱动版本及支持的最大的cuda版本如下安装命令如下#conda创建虚拟环境并激活 conda create -p /data/qwen35-4b/venv python3.11 -y conda activate /data/qwen35-4b/venv #在虚拟环境安装uv pip install uv #用uv在虚拟环境安装vllm, uv会自动分析显卡驱动选择合适版本 uv pip install vllm \ --extra-index-url https://wheels.vllm.ai/nightly/cu130 \ --extra-index-url https://download.pytorch.org/whl/cu130 \ --index-strategy unsafe-best-match #检查虚拟环境pytorch可用GPU python -c import torch; print(torch.__version__, torch.version.cuda, torch.cuda.is_available()) #在系统层面直接安装cuda-toolkit这里安装cuda runtime就行但为了省事直接装cuda toolkit # 下载并安装密钥环 wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2404/x86_64/cuda-keyring_1.1-1_all.deb sudo dpkg -i cuda-keyring_1.1-1_all.deb # 更新软件包列表 sudo apt update # 有时候runtime装了可能还会缺失一些工具比如监控的这时直接装toolkit可能更省事 sudo apt install cuda-toolkit-13-0 #检查toolkit是否可用 nvcc -V #启动服务 vllm serve /data/qwen35-4b/Qwen3.5-4B \ --served-model-name qwen35-4b \ --trust-remote-code \ --max-model-len 8096 \ --gpu-memory-utilization 0.85 \ --max-num-seqs 10 \ --port 8000 curl测试 curl http://127.0.0.1:8000/v1/chat/completions \ -H Content-Type: application/json \ -d { model: qwen35-4b, messages: [{role: user, content: 你好}], max_tokens: 1024, temperature: 0.6, stream: true, chat_template_kwargs: {enable_thinking: false} }