一、系統版本及顯卡
系統:centos-release-8.1-1.1911.0.8.el8.x86_64
顯卡:gtx 960
# 查看系統版本
rpm -q centos-release
# 查看顯卡驅動版本
nvidia-smi
二、顯卡驅動安裝過程
1. 下載驅動
從NVIDIA官網 https://www.geforce.cn/drivers 選擇相應的驅動並下載,下載下來是.run文件,我這裏選擇NVIDIA-Linux-x86_64-440.82.run。
2. 安裝依賴
安裝顯卡驅動需要裝三個依賴:gcc、kernel-devel、dkms,kernel-devel的版本需要與當前Linux內核的版本一致,不然後面會出現找不到文件的情況。
# 查看內核版本
[root@myserver ~]# uname -r
4.18.0-147.el8.x86_64
# 查看可以安裝的版本:
[root@myserver ~]# yum list | grep kernel-devel
kernel-devel.x86_64 4.18.0-147.el8 @anaconda
kernel-devel.x86_64 4.18.0-147.8.1.el8_1 @BaseOS
# 安裝kernel-devel
[root@myserver ~]# yum -y install kernel-devel
# 安裝gcc dkms
[root@myserver ~]# yum -y install gcc dkms
安裝dkms時如果出現:Error: Unable to find a match: dkms報錯,先安裝yum源優先級插件epel-release,安裝完之後再安裝即可。
yum install epel-release
3. 阻止 nouveau 模塊的加載
修改/etc/modprobe.d/blacklist.conf 文件,如果存在blacklist.conf,添加blacklist nouveau,註釋掉blacklist nvidiafb;
如果不存在,創建blacklist.conf文件:
echo -e "blacklist nouveau\noptions nouveau modeset=0" > /etc/modprobe.d/blacklist.conf
4. 重新建立initramfs image文件
運行下面兩條命令之後重啓
mv /boot/initramfs-$(uname -r).img /boot/initramfs-$(uname -r).img.bak
dracut /boot/initramfs-$(uname -r).img $(uname -r)
5. 安裝驅動
給運行文件賦權限,之後運行,注意替換成自己系統到內核版本:
chmod u+x NVIDIA-Linux-x86_64-440.82.run
./NVIDIA-Linux-x86_64-440.82.run --kernel-source-path=/usr/src/kernels/4.18.0-147.el8.x86_64
安裝過程中,選擇accept,如果提示要修改xorg.conf,選擇yes,安裝完成重啓即可。
三、docker搭建tensorflow開發環境
- 宿主機需要安裝NVIDIA顯卡驅動
- 宿主機需要安裝nvidia-container-runtime
1、安裝nvidia-container-runtime
參考官方文檔安裝 Nvidia 容器工具包
distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.repo | sudo tee /etc/yum.repos.d/nvidia-docker.repo
sudo yum install -y nvidia-container-toolkit
sudo systemctl restart docker
2、下載啓動Tensorflow容器
官方安裝文檔:https://tensorflow.google.cn/install/docker
根據需求選擇docker鏡像,我這裏選擇:tensorflow/tensorflow:2.0.1-gpu-py3-jupyter
docker pull tensorflow/tensorflow:2.0.1-gpu-py3-jupyter
docker run -u $(id -u):$(id -g) --gpus all -it --name tensorflow -p 8888:8888 -v /home/zs/MachineLearning/tf_data:/tf tensorflow/tensorflow:2.0.1-gpu-py3-jupyter
也可以通過命令行的方式進入:
docker exec -it tensorflow /bin/bash
在本地瀏覽器通過8888端口,就能訪問容器內jupyter notebook
192.168.0.109:8888?token=342710c6eaf2c07adac2c2e1787b661770313ab3dac812c8