前言:在项目中使用GPU训练失败,报错信息为:
ImportError: cannot import name 'transpose_shape' from 'keras.utils.generic_utils'
(/root/anaconda3/lib/python3.7/site-packages/keras/utils/generic_utils.py)
基于CentOS7.5系统,我已经安装了CUDA 10.1版本可CUDAnn 6.5版本。匹配keras和tensorflow 2.6.0版本。
以上设置仍不能运行GPU训练,因此,采取一下操作。
gcc
编译器sudo yum install -y gcc
sudo yum install -y gcc-c++
sudo yum install -y kernel
sudo yum install -y kernel-devel
sudo yum install -y kernel-headers
检查安装版本,这里可能遇到的情况有kernel存在两个版本,此时要卸载一个,确保存在kernel与kernel-devel和kernel-hearders包的版本号一致:
rpm -qa | grep gcc
rpm -qa | grep kernel
卸载多余的kernel
rpm -e --nodeps kernel-3.10.0-514.el.x86_64 # 不检查依赖关系直接删除
检测代码如下:
lsmod | grep nouveau
如果有输出,说明未禁用。使用如下方法禁用:
vi /usr/lib/modprobe.d/dist-blacklist.conf
# 添加两行内容
blacklist nouveau
options nouveau modeset=0
输入 vi /usr/lib/modprobe.d/dist-blacklist.conf 进入系统配置,任意加入上述两行代码,保存并退出。
给当前镜像备份,建立新镜像。
# 备份
mv /boot/initramfs-$(uname -r).img /boot/initramfs-$(uname -r).img.bak
# 新建
dracut /boot/initramfs-$(uname -r).img $(uname -r)
# 再次重启
shutdown -r now
重启后输入lsmod | grep nouveau 检测是否禁用成功。
nvidia-smi
若返回: bash: nvidia-smi: 未找到命令...
说明服务器没装NVIDIA显卡驱动。
lspci | grep VGA
返回:
0000:17:00.0 VGA compatible controller: NVIDIA Corporation Device 2230 (rev a1)
接下来进入网站:PCI devices
输入上面的 2230 得出当前显卡信息为
Name: GA102GL [RTX A6000]
官方驱动 | NVIDIA
下载对应版本驱动,放入Linux服务器
# 进入纯命令模式,有图形化界面时不可以进行安装
init 3
# 为安装文件增加可执行权限
sudo chmod +x NVIDIA-Linux-x86_64-384.59.run
# 运行安装文件
sudo ./NVIDIA-Linux-x86_64-384.59.run -no-x-check -no-nouveau-check -no-opengl-files
全选OK和YES
查看是否安装成功
nvidia-smi
同一个设备上可以有多个不同版本的CUDA。
CUDA的离线安装包会自带显卡驱动,因此采用在线安装的方式。