深度学习配置环境详细步骤及相关问题
记录自己在配置深度学习环境时遇到的问题以及解决方法。仅以Ubuntu为例。
注意:没有必要一定按照项目文档中的CUDA、Pytorch版本进行配置,因为Pytorch版本的每次更新改变都在github有详细的记录,可以根据运行项目后的报错信息,参照Pytorch版本更新修改的代码进行相应修改。
1.安装电脑gpu对应版本的显卡驱动
- 获取可用驱动信息
1 |
|
- 查看driver分项的推荐NVIDIA驱动
注意:显卡为RTX-3090,虽然该图中推荐为nvidia-driver-525-open
,但是经过实验后发现,nvidia-driver-525-open
并不能正常工作,要安装nvidia-driver-525
才可以。
- 安装驱动
1 |
|
- 重启,并更新驱动
1 |
|
1 |
|
- 运行指令查看系统(报错可能是驱动版本错误或者需要重启计算机)
1 |
|
正常输出如图所示:
2.安装对应版本CUDA
CUDA(Compute Unified Device Architecture,统一计算架构)是由英伟达NVIDIA所推出的一种集成技术,是该公司对于GPGPU的正式名称。透过这个技术,用户可利用NVIDIA的GPU进行图像处理之外的运算,亦是首次可以利用GPU作为C-编译器的开发环境。CUDA 开发包(CUDA Toolkit )只能将自家的CUDA C-语言,也就是执行于GPU的部分编译成PTX中间语言或是特定NVIDIA GPU架构的机器代码(NVIDIA 官方称为 “device code”);而执行于中央处理器部分的C / C++代码(NVIDIA 官方称为 “host code”)仍依赖于外部的编译器,如Microsoft Windows下需要Microsoft Visual Studio;Linux下则主要依赖于GCC。 ——CUDA - 维基百科
注意:不要安装最新版本的CUDA,因为Pytorch的版本更新相对较慢,大概率新的CUDA都没有对应版本的Pytorch。
- 可以访问Previous PyTorch Versions | PyTorch ,查看其中Pytorch对应的最新的CUDA版本(如果使用的是清华源,推荐主要关注Wheel中存在的版本。因为一方面清华源可能会下载cpu版本的Pytorch,另一方面第一次很大概率会出现环境问题,离线安装可以节省每次下载的等待时间。)
- 访问CUDA Toolkit Archive | NVIDIA Developer 下载在第2步中查找到的CUDA版本进行下载
- 安装
1 |
|
安装之后需要阅读说明(以CUDA10.0为例):
卸载CUDA很简单,一条命令就可以了,主要执行的是CUDA自带的卸载脚本,读者要根据自己的cuda版本找到卸载脚本:
1 |
|
卸载之后,还有一些残留的文件夹,之前安装的是CUDA 8.0。)
1 |
|
- 安装完成后需要配置环境变量,在
vim ~/.bashrc
末尾添加以下信息:
1 |
|
- 使用
source ~/.bashrc
是配置文件生效。 - 使用
nvcc -V
查看安装的版本信息。(此处的版本信息可能与nvidia-smi
面板中的版本不同,实测没有实际影响)
1 |
|
3.安装CUDNN
参考【保姆级教程】个人深度学习工作站配置指南 - 知乎 (zhihu.com)
登录NVIDIA Developer Program Membership Required | NVIDIA Developer 并下载与之前安装CUDA所对应的CUDNN版本。
选择最新发布的版本就可以。
下载后将其解压:ubuntu 各压缩文件解压命令大全
使用以下两条命令复制到CUDA目录下:
1 |
|
拷贝完成之后,可以使用以下命令查看CUDNN的版本信息:
1 |
|
4.安装Conda环境
- Anaconda官网下载Linux安装包Anaconda | Anaconda Distribution
- 运行以下命令安装:
1 |
|
一路按ENTER确认,然后根据提示输入yes,最后会询问你是否要初始化conda,输入yes确认(注意这里不小心按到回车默认是no)。重开终端窗口,就可以看到conda环境。如果重开后无conda环境(可能是前面选了no),卸载conda(直接运行anaconda安装目录下的Uninstall-Anaconda3.exe即可)重装即可。
5.安装Pytorch
如果是国内环境,推荐使用离线安装或者**pip
安装**,一方面conda官方源的网络环境很差,一方面清华源可能会给你下载cpu版本的Pytorch。(第一次环境配置很容易出错,为了节省反复下载的时间,离线安装也是更好的选择)
- 访问Previous PyTorch Versions | PyTorch 查找安装的CUDA版本对应的Pytorch,以CUDA11.6为例:
如图所示,黄色部分
表示torch
版本,cuxxx
表示对应``CUDA xx.x版本,
cpxx表示对应的
python`版本,最后表示操作系统是linux还是windows。
- 下载完成后,进行安装
1 |
|
6.关于THC/THC.h: No such file or directory解决方法
THC.h文件在Pytorch1.10版之后被移除了,所以需要对项目中的.cu
文件中的代码进行修改。参考remove THC.h by zyddnys · Pull Request #37 · CoinCheung/pytorch-loss (github.com)
- 将文件中的
#include <THC/THC.h>
注释掉 THCudaCheck
函数报错。将所有该函数替换为AT_CUDA_CHECK
THCCeilDiv
函数报错。在文件头部添加该函数:
1 |
|
7.GCC版本不匹配问题
参考Ubuntu安装GCC5/7/9/10/11_nudt_qxx的博客
以安装GCC-10.0为例:
1 |
|
GCC卸载:
1 |
|
查看自己当前的GCC版本
1 |
|
8.from . import _C导入报错
from . import xx
语句表示从同级目录中引用包,from .. import xx
语句表示从上级目录中引用包。出现这个报错往往是因为setup.py
的python setup.py build develop
操作出现了问题。需要重新进行操作。
- 移除已经进行的操作。在执行
python setup.py build develop
操作的文件夹下,执行rm -r build
。 - 重新执行
python setup.py build develop
9.subprocess.CalledProcessError: Command ‘[‘which’, ‘c++’]’ returned non-zero exit status 1.报错
安装build-essential
包即可解决,该包用来编译c/c++
1 |
|
10.预训练模型版本过老导致无法加载的问题
将.pt
模型后缀改为.zip
之后,不要解压缩,直接在压缩状态打开,就可以对打包好的代码进行修改,之后再将后缀改回.pt
重新加载即可。
11.Ubuntu重启后进入initramfs中
这个问题往往是不正常的关机导致磁盘文件受损所引起的。
解决思路参考(Linux 系统启动后出现(initramfs) 处理办法_天翔MAC的博客
1 |
|
如果提示没有fsck指令,就再强制重启,知道有fsck指令。
其他没能涉及到的问题,试试重装解决把!
- Title: 深度学习配置环境详细步骤及相关问题
- Author: 茴香豆
- Created at : 2023-03-04 12:14:09
- Updated at : 2024-09-20 11:20:59
- Link: https://hxiangdou.github.io/2023/03/04/DL-env/
- License: This work is licensed under CC BY-NC-SA 4.0.