在Linux上配置CUDA-Toolkit,以及装好torch相关库

我真傻,真的,我单知道做ai用python和torch就够了…
翻rwkv文档的时候知道这个模型可能会用到一些自定义算子(?)但是直到导入它的AutoTokenizer,程序突然Warning:

warning

这怎么跟CUDA有关了……后来Claude大爹给我指出这是CUDA编译时找不到头文件了,这可能会导致fla/Triton相关算子会回退CPU。据此记录这篇文章,配置环境时供参考。

什么是CUDA-Toolkit,为什么要装它?

省流:由NVIDIA开发的软件工具,主要用于利用GPU的强大并行计算能力来加速各种计算任务。
有些模型会自己写一些算子(例如flash-attn/自定义op/某些Triton场景)用于加速计算,这就要求环境有完整、正确的CUDA-Toolkit。
如果日常用torch做训练推理,其实torch内部就有CUDA运行库;但是要编译CUDA扩展的话(开头的rwkv),就需要系统级的CUDA-Toolkit了。

怎么配置它?

CUDA-Toolkit的版本要跟着torch的CUDA走。首先记下torch使用的CUDA版本:

python -c "import torch; print(torch.__version__, torch.version.cuda)"

假设CUDA版本为X.Y。第一步,清理环境里原有的CUDA-Toolkit(如有):

conda list | grep -iE "^cuda|nvjitlink|cusparse"
conda remove cuda-toolkit
# 如果这个环境列出的包还有cuda/libnvjitlink包,一块清掉

重新装一遍torch与它自带的CUDA:

pip install --force-reinstall torch --index-url https://download.pytorch.org/whl/cuXY # XY为CUDA版本号,记得改
python -c "import torch; print(torch.cuda.is_available())"   # 应该输出 True

第二步,装一个版本为X.Y的独立toolkit。单独建一个conda环境只放toolkit:

conda create -n cudaXY -c nvidia/label/cuda-X.Y.0 cuda-toolkit -y

创造这个环境只是为了放CUDA-Toolkit,把环境变量扔到它上面;不要用这个环境跑代码。
第三步,设置环境变量,把下列sh写进$CONDA_PREFIX/etc/conda/activate.d/cuda.sh里(其中$CONDA_PREFIX是当前conda环境所在的路径):

export CUDA_HOME=~/miniconda3/envs/cudaXY
export PATH=$CUDA_HOME/bin:$PATH
export TORCH_CUDA_ARCH_LIST="8.9"           # 适用于4090显卡,只编译这一种架构,更快,也不依赖 PTX
export MAX_JOBS=8                           # 防止编译 flash-attn 时内存不够

最后验证CUDA-Toolkit是否被正确安装:

nvcc --version          # 应该是 X.Y
python -c "from torch.utils.cpp_extension import CUDA_HOME; print(CUDA_HOME)"
python - <<'PY'
import torch
from torch.utils.cpp_extension import load_inline
src = "torch::Tensor f(torch::Tensor x){return x*2;}"
m = load_inline("t", cpp_sources=src, cuda_sources="", functions=["f"], with_cuda=True)
print(m.f(torch.ones(2, device="cuda")))
PY

这样就可以欢乐地用GPU编程啦虽然完全不想碰

配好对应的torchvision与torchaudio

装好torch与CUDA-Toolkit后,我的torchvision又崩了:

torchvisionerror

RuntimeError: operator torchvision::nms does not exist,Claude告诉我这是torchvision和torch版本不匹配时的报错(换了torch的CUDA后,torchvision的C++扩展加载失败,而且不会报错,算子nms因此没有注册上);俺寻思还是把torch相关的库也一块重装了:

pip install -U "torch==?.?.?" torchvision torchaudio --index-url https://download.pytorch.org/whl/cuXY

这里torch的版本是你前面装好的版本,可用torch.__version__查看。-U参数代表要升级库,如果不加它,pip会发现torchvision/torchaudio已经装好了,就不会检查版本匹不匹配了。

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇