改造你的AI服务器——AI容器化简明教程(三)环境配置
环境配置使用centOS7.9为例。
使用Docker作为Container Runtime,版本高于19.03,首先是安装Docker的过程:
首先卸载已有的Docker环境,通过rpm命令查看是否安装有Docker:
rpm -qa | grep docker
如果输出有内容说明已安装有Docker,首先需要卸载已有的Docker,通过yum remove命令进行卸载:
yum remove -y docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine \
containerd.io.x86_64 \
docker-ce.x86_64 \
docker-ce-cli.x86_64
然后重新安装Docker,根据依赖安装、设定存储库、安装Docker、启动Docker、设置Docker自动启动的顺序进行:
yum install -y yum-utils \
device-mapper-persistent-data \
lvm2
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
yum install -y docker-ce \
docker-ce-cli \
containerd.io
systemctl start docker
systemctl enable docker
安装完成后可以通过docker version和systemctl status docker来检查Docker的相关状态。
接着进行NVIDIA环境的配置,首先我们需要安装NVIDIA Driver所需要的依赖,包括GCC(编译器)、Dracut(虚拟磁盘工具)、Kernel开发模块(根据当前操作系统环境的驱动版本确认版本)。通过以下命令进行安装:
yum install -y gcc \
dracut \
kernel-devel-$(uname -r)
然后执行NVIDIA驱动的安装,为了避免nouveau(开源社区开发的NVIDIA驱动)可能会带来的冲突,首先在系统模块配置文件中禁用nouveau,通过如下命令写入配置:
echo blacklist nouveau > /etc/modprobe.d/blacklist-nouveau.conf
echo options nouveau modeset=0 >> /etc/modprobe.d/blacklist-nouveau.conf
接着根据自己机器上的GPU卡型号选择需要安装的驱动版本号,从NVIDIA官方驱动网站上进行下载,假设这里选择的版本为515.65.01,以下的安装过程均以515.65.01为例说明,从选择下载安装包到安装使用如下命令执行:
wget https://us.download.nvidia.com/tesla/515.65.01/NVIDIA-Linux-x86_64-515.65.01.run
chmod u+x NVIDIA-Linux-x86_64-515.65.01.run
sh ./NVIDIA-Linux-x86_64-515.65.01.run -a -s -q
使用nvidia-smi命令来验证驱动是否安装成功。
我们还需要对驱动使用如下命令来进行一些优化的操作:
nvidia-smi -pm 1 || true
nvidia-smi -acp 0 || true
nvidia-smi --auto-boost-default=0 || true
nvidia-smi --auto-boost-permission=0 || true
nvidia-modeprobe -u -c=0 -m || true
chmod +x /etc/rc.local
安装好了NVIDIA驱动之后便是需要安装NVIDIA-Container-Runtime了,这里采用阿里云公开的OSS源来进行安装操作(也可通过其他方式安装上一篇文档中提到的组件),具体执行命令如下:
cd /tmp
yum install -y unzip
wget http://kubeflow.oss-cn-beijing.aliyuncs.com/nvidia.zip
unzip nvidia.zip
yum -y -q --nogpgcheck localinstall /tmp/nvidia/*
然后需要在Docker的配置文件/etc/docker/daemon.json里面添加以下的字段:
"runtimes":{"nvidia":{"path":"/usr/bin/nvidia-container-runtime","runtimeArgs":[]}},
里面的path通过which nvidia-container-runtime来获取。然后运行重启Docker命令systemctl docker restart使其生效。
自此,NVIDIA Docker的环境配置完成,便可以进行使用了。