Ubuntu20.04 中已经安装 Pytorch 但 Import 报错 – 解决记录

01 问题描述

笔者使用的是 Ubuntu 20.04.3 LTS,在使用 PyTorch 训练模型的时候,torch 模块引用失败,报错信息是:

OSError: /home/wang/.local/lib/python3.8/site-packages/torch/lib/…/…/nvidia/cublas/lib/libcublas.so.11: undefined symbol: cublasLtGetStatusString, version libcublasLt.so.11

使用的 Python 版本是 3.8.10,torch 版本是 1.3.0

在这里插入图片描述

02 分析问题

从报错信息中可以提取出几个关键信息:

  • OSError
  • /nvidia/cublas/lib/libcublas.so.11
  • cublasLtGetStatusString

不查不知道,一查这些关键词都是描述CUDA相关的内容:什么是 libcublas.soUsing the cuBLASLt API

在使用 pytorch 训练模型的时候,如果要使用 GPU 训练,需要在程序中显式调用,即使训练的物理机上有 GPU 也不会自动使用 GPU,需要在程序中调用。

但使用 CUDA 调用 GPU 和引用 Pytorch 出错有什么关系呢?

原来 Python 和 Pytorch,Pytorch 和 CUDA 都存在版本匹配问题,当然如果使用 anaconda 安装应该可以避免这也的问题,笔者使用 pip 安装所以出现了这种问题,通过查阅网上资源搞清楚了版本依赖关系

Pytorch 和 Python 之间版本匹配:

在这里插入图片描述
Pytorch 和 CUDA 之间版本匹配:

在这里插入图片描述
前面说到我们使用的 Python 版本是 3.8.10,torch 版本是 1.3.0,根据上面那个表这已经不配了,我又看了一下 CUDA 的版本结果是 11.7

在这里插入图片描述
结合报错信息中的 cublasLtGetStatusString ,CUDA 10.1 开始就用 cuBLASLt 轻量级库了。到这里,我们已经大概知道问题是出在 Pytorch 和 CUDA 版本匹配上了。

03 解决问题

知道了 Pytorch 和 CUDA 版本匹配有问题,cuda与torch的安装匹配 提供两个角度去修改版本问题。

笔者这里直接通过修改 Pytorch 版本完成对 Python 3.8 和 CUDA 11 的兼容问题,一举两得。

卸载当前版 torch,然后对照版本匹配表安装 1.8.0 的 torch 就好了。

pip3 uninstall torch
python3 -m pip install torch==1.8.0

在这里插入图片描述
最后,检验是否解决了问题

在这里插入图片描述

参考资料

CUDA的作用

1.cuBLAS开发指南中文版–简介

2.cuBLAS开发指南中文版–使用cuBLAS API

Using the cuBLASLt API

pytorch中涉及cuda的使用介绍

Ubuntu20.04安装pytorch检查cuda

cuda与torch的安装匹配

如果文章对你有帮助,别忘了一键三连呀 👍 💬 ⭐️ 。您的支持是我坚持输出的最大动力 🐮🐴🐮🐴 。

文章出处登录后可见!

已经登录?立即刷新

共计人评分,平均

到目前为止还没有投票!成为第一位评论此文章。

(0)
乘风的头像乘风管理团队
上一篇 2023年3月5日 下午1:37
下一篇 2023年3月5日 下午1:38

相关推荐