如何在k8s集群中安装nvidia、cuda使用GPU进行训练
在写具体步骤前,发表一下自己的感想体会,因为在这过程中,踩过很多坑,对于像我们这种小白,踩坑真的是无处不在,真的很感谢网上一些大神细心地帮助,也感谢其它大神分享的博客。所以自己实现之后也想把这过程中遇到的坑和解决的方法总结总结,希望对大家有用。
本文主要是针对已经部署好了k8s集群的,基于centos系统,截止k8s1.8版本,对GPU的使用支持还是停留在实验阶段,只支持nvidia的GPU,在k8s上使用GPU,先要装好几样东西。
安装流程:
1、关闭UEFI。这个很重要,因为如果不关闭可能会导致安装nvidia驱动的时候无法加载kernel模块,我就在这浪费了好多时间。具体做法是开机按F2进入BIOS设置,通常在BOOT或Secure选项卡上,把安全启动[Secure BOOT],改为[Disable],如果不是的话自己去搜搜相应的。
2、确认自己主机有nvidia的显卡。
输入命令lspci | grep-i nvidia 查看nvidia显卡情况。
3、检查系统版本,确保系统支持(需要Linux-64bit系统)
#uname -m && cat /etc/*release
4、根据nvidia显卡的信息和系统下载相应的安装包。
NVIDIA-Linux-x86_64-381.22.run # 最新显卡驱动
cuda_9.0.61_375.26_linux.run # 最新CUDA安装包
cudnn-8.0-linux-x64-v6.0.tgz # cudnn库v6.0
(1)登录NVIDIA官网http://www.geforce.cn/drivers设置驱动检索条件(注意尽量设置语言英文):
(2)官网下载cuda-rpm包https://developer.nvidia.com/cuda-downloads,一定要对应自己的版本。
(3)下载cudnn需要注册https://developer.nvidia.com/rdp/cudnn-download,注意有些浏览器是注册不了的,我就踩了这个坑。
5、安装gcc gcc-c++
#yum install gcc gcc-c++
6、查看内核是否一致。
#uname -r
#rpm -q kernel-devel
#rpm -q kernel-headers
如果一致的话这步可以跳过,输入rpm -q kernel-devel时有可能是not found,说明没有安装,有显示说明已安装。
安装kernel-devel和kernel-headers。
#sudo yum install kernel-devel-$(uname -r) kernel-headers-$(uname -r)
或者
#yum install kernel-headers
如果安装完发现不一致的话需要 yum -y update
7、安装cuda(最好是先安装好这个再去安装驱动,不然会nvidia的安装不会很顺利,我就踩了这个坑。)
#sudo rpm -icuda-repo-rhel7-8-0-local-ga2-8.0.61-1.x86_64.rpm
#sudo yum clean all
#sudo yum install cuda
可能会报错,
(1)原因是缺少2个包,装第一个:
#sudo vim /etc/yum.repos.d/linuxtech.testing.repo
输入:
[linuxtech-testing]
name=LinuxTECH Testing
baseurl=http://pkgrepo.linuxtech.net/el6/testing/
enabled=0
gpgcheck=1
gpgkey=http://pkgrepo.linuxtech.net/el6/release/RPM-GPG-KEY-LinuxTECH.NET
退出。
#sudo yum --enablerepo=linuxtech-testing install libvdpau
(2)第二个,尤其是dkms,安装驱动的时候会用到这个模块。
#yum -y install epel-release
#yum -y install --enablerepo=epel dkms