使用deepspeed报错:DeepSpeed Op Builder: Installed CUDA version 11.8 does not match the version torch was

问题场景:

使用llamafactory进行微调大模型,显卡配置为两张23GB的4090显卡,当开启deepspeed进行lora微调的时报错:

DeepSpeed Op Builder: Installed CUDA version 11.8 does not match the version torch was compiled with 12.1, unable to compile cuda/cpp extensions without a matching cuda version.

问题报错原因:

安装的 CUDA 版本(11.8)与 PyTorch 所编译的 CUDA 版本(12.1)不匹配,导致无法正常编译 DeepSpeed 所需要的 CUDA/CPP 扩展

解决方案:

解决方案 1: 确保 CUDA 版本匹配

检查 PyTorch 的 CUDA 版本:

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

这将告诉你当前安装的 PyTorch 是用哪个 CUDA 版本编译的。

安装对应的 CUDA 工具包:
根据 PyTorch 对应的 CUDA 版本,安装正确的 CUDA toolkit:

在 Linux 上,你可以使用 NVIDIA 的官方安装工具或 Conda 下载所需版本的 CUDA。
例如:

conda install pytorch torchvision torchaudio pytorch-cuda=12.1 -c pytorch -c nvidia

这将安装兼容的 PyTorch 和 CUDA 12.1 环境。

验证:
再次运行上面的检查命令,确保你的系统带匹配的 CUDA 版本。

解决方案 2: 重新安装 PyTorch

如果你无法更改系统里的 CUDA 版本,可以尝试安装一个与你现有 CUDA 版本(11.8)兼容的 PyTorch 版本。

先卸载当前的 PyTorch 版本:

pip uninstall torch torch vision torchaudio

根据你的 CUDA 版本安装对应的 PyTorch。例如,如果你使用的是 CUDA 11.8:

pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118

或通过 Conda 安装:

conda install pytorch torchvision torchaudio pytorch-cuda=11.8 -c pytorch -c nvidia

确保 PyTorch 和 CUDA 版本匹配。

解决方案 3: 使用 CPU 加速而非 CUDA

如果你可以接受使用 CPU 而非 CUDA 来运行 DeepSpeed,可以安装 CPU-only 版本的 PyTorch:

卸载 GPU 版本的 PyTorch:

pip uninstall torch torch torchvision torchaudio

安装 CPU-only 版本的 PyTorch:

pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cpu

配置 DeepSpeed 使用 CPU。

确保 DeepSpeed 使用 CPU,而不是 GPU。在你的 DeepSpeed 配置中,将设备改为 cpu。

解决方案 4: 手动设置环境变量

如果你已安装正确 CUDA 版本,但 DeepSpeed 仍提示错误,可以尝试设置 TORCH_CUDA_ARCH_LIST 环境变量。

查找你的 GPU 支持的 CUDA 架构:
比如,如果你使用 NVIDIA A100,可能需要设置为 8.0。

在运行程序之前设置环境变量:

export TORCH_CUDA_ARCH_LIST="8.0"

然后重新运行。

解决方案 5: 使用 Docker 环境

如果你无法调整本地的 CUDA 和 PyTorch 安装,可以使用 Docker 容器,选择正确的 CUDA 和 PyTorch 版本来避免不兼容问题。

下载合适的 NVIDIA 容器镜像:

docker pull nvcr.io/nvidia/pytorch:23.05-py3

运行 Docker 容器,确保 TensorFlow、DeepSpeed 和 PyTorch 的 CUDA 版本一致。

注意事项
使用 nvidia-smi 查看当前的驱动和 CUDA 版本,确保其与 PyTorch 和 CUDA 工具包匹配。
如果你经常需要切换 CUDA 和 PyTorch 版本,可以考虑使用 Conda 环境隔离不同版本的库。

------实际上我使用了第二种方案就解决了------

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Ven%

你的鼓励将是我创作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值