典名科技本文介绍阿里云GPU云服务器如何管理NVIDIA驱动教程、GPU云加速器。手动安装GPU驱动,手动卸载GPU驱动,在GPU实例中安装GRID驱动(Linux),在vgn6i和vgn5i实例中安装GRID驱动(Linux)。仅供参考。
手动安装GPU驱动
如果在创建实例时没有选择自动安装GPU驱动,您必须在创建后手动安装。如何为GPU实例手动安装GPU驱动。
操作步骤
- 进入NVIDIA官网。
- 手动查找适用的驱动程序。
- 根据实例规格配备的GPU选择产品类型、产品系列和产品家族。
各GPU计算型规格的GPU信息如下表所示:信息项 | gn4 | gn5 | gn5i | gn6v | gn6i |
---|
产品类型 | Tesla | Tesla | Tesla | Tesla | Tesla |
产品系列 | M-Class | P-Series | P-Series | V-Series | T-Series |
产品家族 | M40 | Tesla P100 | Tesla P4 | Tesla V100 | Tesla T4 |
- 根据实例使用的镜像选择的操作系统版本。
如果实例使用Debian操作系统,选择Linux 64-bit。如果下拉列表中没有显示所需的操作系统,请单击下拉列表底部的选择所有操作系统。
- 选择CUDA Toolkit版本。
- 选择语言。
- 单击搜索。
- 确认驱动程序信息,然后单击下载。
如果您为Linux实例安装GPU驱动,请不要关闭下载页面,安装GPU时需要参考下载页面中其他信息的安装步骤。
- 安装GPU驱动。
- 为Linux实例安装GPU驱动:
- 下载并安装kernel对应版本的kernel-devel和kernel-header包。
说明 kernel-devel和kernel版本不一致会导致在安装driver rpm过程中driver编译出错。您可以在实例中运行rpm –qa | grep kernel检测版本是否一致。确认版本后,再重新安装驱动。
- 运行命令sudo rpm -qa | grep $(uname -r),确认已经下载并安装kernel-devel和kernel-header包。
以CentOS 7.3为例,如果出现下方类似的版本信息,表示已经安装完成。
kernel-3.10.0-514.26.2.el7.x86_64
kernel-headers-3.10.0-514.26.2.el7.x86_64
kernel-tools-libs-3.10.0-514.26.2.el7.x86_64
python-perf-3.10.0-514.26.2.el7.x86_64
kernel-tools-3.10.0-514.26.2.el7.x86_64
- 按照驱动程序下载页中其他信息的步骤安装GPU驱动。
以Linux 64-bit Ubuntu 14.04为例,其它信息中提示的步骤如下所示:
- 为Windows实例安装GPU驱动:
双击安装文件,按提示完成安装。
说明 对于Windows系统,GPU驱动安装生效后,Windows自带的远程连接(RDP)协议不支持DirectX、OpenGL等相关应用。您需要自行安装VNC服务和客户端,或使用其它支持此类应用的协议,例如PCOIP、XenDesktop HDX 3D等。
手动卸载GPU驱动
您可以手动卸载GPU驱动,卸载命令视GPU驱动安装方式和镜像类型而定。
背景信息
本文中登录root
用户操作。如果您是普通用户,请使用sudo
命令获取root
权限后再操作。如果您使用自动安装功能安装了GPU驱动,卸载方式视操作系统类型而定:- CentOS和SUSE操作系统使用run方式。
- Ubuntu操作系统使用deb方式。
在Ubuntu操作系统中卸载GPU驱动
如果您使用deb安装包安装了GPU驱动,建议您按照以下步骤卸载GPU驱动,以下步骤以Driver 410.104、CUDA 10.0.130、cuDNN 7.5.0为例。
- 运行以下命令卸载GPU驱动。
apt-get remove --purge nvidia-*
- 运行以下命令卸载CUDA和cuDNN库。
apt autoremove
rm -rf /usr/local/cuda-10.0
- 运行以下命令重启实例。
如果您使用run安装包安装了GPU驱动,建议您按照以下步骤卸载GPU驱动。
- 运行以下命令卸载GPU驱动。
/usr/bin/nvidia-uninstall
- 运行以下命令卸载CUDA和和cuDNN库。
/usr/local/cuda/bin/cuda-uninstaller
rm -rf /usr/local/cuda-10.0
说明 不同CUDA版本,卸载命令可能存在差别,如果未找到cuda-uninstaller文件, 请到/usr/local/cuda/bin/下查看是否存在uninstall_cuda开头的文件。如果有,则将命令中的cuda-uninstaller替换为该文件名。
- 运行以下命令重启实例。
在CentOS操作系统中卸载GPU驱动
如果您使用run安装包安装了GPU驱动,建议您按照以下步骤卸载GPU驱动,以下步骤以Driver 410.104、CUDA 10.0.130、cuDNN 7.5.0为例。
- 运行以下命令卸载GPU驱动。
/usr/bin/nvidia-uninstall
- 运行以下命令卸载CUDA和cuDNN库。
/usr/local/cuda/bin/cuda-uninstaller
rm -rf /usr/local/cuda-10.0
说明 不同CUDA版本,卸载命令可能存在差别,如果未找到cuda-uninstaller文件, 请到/usr/local/cuda/bin/下查看是否存在uninstall_cuda开头的文件。如果有,则将命令中的cuda-uninstaller替换为uninstall_cuda开头的文件名。
- 运行以下命令重启实例。
如果您在CentOS 7中使用rpm安装包安装了GPU驱动,建议您按照以下步骤卸载GPU驱动。
- 运行以下命令卸载GPU驱动。
yum remove xorg-x11-drv-nvidia nvidia-kmod cuda-drivers
yum remove nvidia-diag-driver-local-repo-rhel7-410.104
- 运行以下命令卸载CUDA和cuDNN库。
yum remove /usr/local/cuda-10.0
rm -rf /usr/local/cuda-10.0
- 运行以下命令重启实例。
如果您在CentOS 6中使用rpm安装包安装了GPU驱动,建议您按照以下步骤卸载GPU驱动。
- 运行以下命令卸载GPU驱动。
yum remove xorg-x11-drv-nvidia nvidia-kmod cuda-drivers
yum remove nvidia-diag-driver-local-repo-rhel6-410.104
- 运行以下命令卸载CUDA。
yum remove /usr/local/cuda-10.0
- 运行以下命令重启实例。
在SUSE操作系统中卸载GPU驱动
如果您使用run安装包安装GPU驱动,建议您按照以下步骤卸载GPU驱动,以下步骤以CUDA 9.0.176为例。
- 运行以下命令卸载GPU驱动。
/usr/bin/nvidia-uninstall
- 运行以下命令卸载CUDA和cuDNN库。
/usr/local/cuda/bin/uninstall_cuda_9.0.pl
rm -rf /usr/local/cuda-9.0
- 运行以下命令重启实例。
在GPU实例中安装GRID驱动(Linux)
如何在运行Linux操作系统的GPU实例中安装GRID驱动,并搭建桌面显示环境。
背景信息
如果您的GPU实例需要OpenGL图形支持,必须在实例上安装GRID驱动。GPU实例自带的NVIDIA GPU计算卡,例如P100、P4、V100等,因为NVIDIA GRID License而限制了GPU图形功能,您可以使用NVIDIA官方发布的GRID驱动满足使用OpenGL图形功能的需求。
说明 非NVIDIA合作伙伴不能从NVIDIA官网下载该驱动,本章节操作步骤中介绍了从阿里云获取GRID驱动安装包的方法。
本文介绍如何为非vGPU的GPU实例安装GRID驱动,如果您需要为配备vGPU的GPU实例(vgn6i和vgn5i)安装GRID驱动。
操作步骤
安装GRID驱动的步骤如下:- Ubuntu 16.04 64-bit:
- 在Ubuntu 16.04 64-bit中安装GRID驱动
- 在Ubuntu 16.04 64-bit中测试GRID驱动
- CentOS 7.3 64-bit:
- 在CentOS 7.3 64-bit中安装GRID驱动
- 在CentOS 7.3 64-bit中测试GRID驱动
在Ubuntu 16.04 64-bit中安装GRID驱动
- 远程连接Linux实例。
- 依次运行以下命令升级系统并安装KDE桌面。
apt-get update
apt-get upgrade
apt-get install kubuntu-desktop
- 运行
reboot
命令重启系统。 - 再次远程连接Linux实例,并运行以下命令下载NVIDIA GRID驱动包。
NVIDIA GRID驱动包中有多个系统的GRID驱动。Linux GRID驱动是NVIDIA-Linux-x86_64-430.99-grid.run。
wget http://grid-9-4.oss-cn-hangzhou.aliyuncs.com/NVIDIA-Linux-x86_64-430.99-grid.run
- 依次运行以下命令,并按界面提示安装NVIDIA GRID驱动。
chmod 777 NVIDIA-Linux-x86_64-430.99-grid.run
./NVIDIA-Linux-x86_64-430.99-grid.run
- 运行命令
nvidia-smi
测试驱动安装结果。如果返回以下类似结果,说明驱动已经成功安装。 - 按以下步骤添加License服务器并激活License。
- 切换到/etc/nvidia目录:
cd /etc/nvidia
。 - 创建gridd.conf文件:
cp gridd.conf.template gridd.conf
。 - 在gridd.conf文件中添加License服务器的信息。
ServerAddress=
ServerPort=
FeatureType=2
EnableUI=TRUE
- 运行命令安装x11vnc。
- 运行命令
lspci | grep NVIDIA
查询GPU BusID。本示例中,查询到的GPU BusID为00:07.0
。
- 配置X Server环境并重启。
- 运行命令
nvidia-xconfig --enable-all-gpus --separate-x-screens
。 - 编辑/etc/X11/xorg.conf,在
Section "Device"
段添加GPU BusID,如本示例中为BusID "PCI:0:7:0"
。 - 运行
reboot
命令重启系统。
在CentOS 7.3 64-bit中安装GRID驱动
- 远程连接Linux实例。
- 依次运行以下命令升级系统并安装KDE桌面。
yum update
yum install kernel-devel
yum groupinstall "KDE Plasma Workspaces"
- 运行
reboot
重启系统。 - 再次远程连接Linux实例,并运行以下命令下载并解压NVIDIA GRID驱动包。
NVIDIA GRID驱动包中包含多个系统的GRID驱动,其中,Linux GRID驱动是NVIDIA-Linux-x86_64-430.99-grid.run。
wget http://grid-9-4.oss-cn-hangzhou.aliyuncs.com/NVIDIA-Linux-x86_64-430.99-grid.run
- 按以下步骤关闭nouveau驱动。
- 运行
vim /etc/modprobe.d/blacklist.conf
,添加blacklist nouveau
。 - 运行
vim /lib/modprobe.d/dist-blacklist.conf
,添加以下内容。
blacklist nouveau
options nouveau modeset=0
- 运行
mv /boot/initramfs-$(uname -r).img /boot/initramfs-$(uname -r)-nouveau.img
。 - 运行
dracut /boot/initramfs-$(uname -r).img $(uname -r)
。
- 运行
reboot
重启系统。 - 依次运行以下命令,并按界面提示安装NVIDIA GRID驱动。
chmod 777 NVIDIA-Linux-x86_64-430.99-grid.run
./NVIDIA-Linux-x86_64-430.99-grid.run
- 运行命令
nvidia-smi
测试驱动是否安装成功。如果返回以下类似结果,说明驱动已经成功安装。 - 按以下步骤添加License服务器并激活License。
- 切换到/etc/nvidia目录:
cd /etc/nvidia
。 - 创建gridd.conf文件:
cp gridd.conf.template gridd.conf
。 - 在gridd.conf文件中添加License服务器的信息。
ServerAddress=
ServerPort=
FeatureType=2
EnableUI=TRUE
- 安装x11vnc。
- 运行命令
lspci | grep NVIDIA
查询GPU BusID。本示例中,查询到的GPU BusID为00:07.0
。
- 配置X Server环境。
- 运行命令
nvidia-xconfig --enable-all-gpus --separate-x-screens
。 - 编辑/etc/X11/xorg.conf,在
Section "Device"
段添加GPU BusID,如本示例中为BusID "PCI:0:7:0"
。
- 运行
reboot
重启系统。
在CentOS 7.3 64-bit中测试GRID驱动
- 运行命令
startx
启动X Server。 - 开启一个新的SSH客户端终端,运行命令启动x11vnc。
如果看到如下图所示的信息,表示x11vnc已经成功启动。此时,您能通过VNC Viewer等VNC远程连接软件连接实例。 - 登录ECS管理控制台,在实例所在安全组中添加安全组规则,允许TCP 5900端口的入方向访问。具体操作,请参见添加安全组规则。
- 在本地机器上,使用VNC Viewer等VNC远程连接软件,通过
实例公网IP地址:5900
连接实例,进入KDE桌面。 - 按以下步骤使用
glxinfo
命令查看当前GRID驱动支持的配置。- 开启一个新的SSH客户端终端。
- 运行命令
export DISPLAY=:0
。 - 运行命令
glxinfo –t
列出当前GRID驱动支持的配置。
- 按以下步骤使用
glxgears
命令测试GRID驱动。- 在KDE桌面上,右键单击桌面,并选择Run Command。
- 运行
glxgears
启动齿轮图形测试程序。如果出现如下图所示的窗口,表明GRID驱动正常工作。
在vgn6i和vgn5i实例中安装GRID驱动(Linux)
如果您的GPU实例需要支持OpenGL图形显示,必须安装GRID驱动。GPU实例配备的NVIDIA GPU计算卡尚未激活NVIDIA GRID License,GPU图形功能受到限制,您需要购买并激活GRID License。本章节以操作系统为Ubuntu 16.04 64-bit的轻量级GPU实例vgn6i和vgn5i为例,介绍如何安装GRID驱动并激活GRID License。
前提条件
- 创建一台vgn6i或vgn5i实例,确保实例可以访问公网,建议您选择公共镜像中的镜像。
说明 本文介绍如何为运行Linux操作系统的实例安装GRID驱动,对需要运行Windows操作系统的实例,在创建实例时选用预装GRID驱动的付费镜像即可,请参见 创建配备NVIDIA GPU的实例。
- 在本地机器上安装了远程连接工具,例如VNC Viewer。
- 向NVIDIA购买了GRID License。该方式需要自建License服务器,您可以购买ECS实例并参考NVIDIA官网教程搭建。
背景信息
本文介绍如何为配备vGPU的GPU实例(vgn6i和vgn5i)安装GRID驱动,如果您需要为非vGPU的GPU实例安装GRID驱动,请参见 在GPU实例中安装GRID驱动(Linux)。操作步骤
- 禁用nouveau。
nouveau是部分Linux系统中预装的一款开源驱动,必须禁用nouveau才能成功安装新的驱动。
- 远程连接实例。
- 查看是否存在blacklist-nouveau.conf文件。
ls /etc/modprobe.d/blacklist-nouveau.conf
- 如果blacklist-nouveau.conf文件存在且已配置以下内容,则跳过本步骤。否则需要执行命令
vim /etc/modprobe.d/blacklist-nouveau.conf
创建文件,并在文件中添加以下内容禁用nouveau。
blacklist nouveau
blacklist lbm-nouveau
options nouveau modeset=0
- 生成kernel initramfs。
rmmod nouveau
update-initramfs -u
- 重启实例。
- 下载GRID驱动安装包。
- 远程连接实例。
- 下载GRID驱动安装包。
- vgn5i GRID Guest驱动安装包:
- vgn6i GRID Guest驱动安装包:
- 安装GRID驱动。
- vgn5i
chmod +x NVIDIA-Linux-x86_64-418.70-grid.run
./NVIDIA-Linux-x86_64-418.70-grid.run
- vgn6i
chmod +x NVIDIA-Linux-x86_64-430.63-grid.run
./NVIDIA-Linux-x86_64-430.63-grid.run
- 测试GRID驱动是否安装成功。
如果返回以下GRID驱动信息,说明驱动安装成功。 - 添加License服务器。
- 切换到/etc/nvidia目录。
- 创建gridd.conf文件。
cp gridd.conf.template gridd.conf
- 在gridd.conf文件中添加License服务器的信息。
ServerAddress=
ServerPort=7070)>
FeatureType=1
- 重启实例使License服务器配置生效。
- 查看License是否激活成功。
- 远程连接实例。
- 查看License状态。
systemctl status nvidia-gridd
返回结果显示 License acquired successfully,表示License激活成功。
GPU云加速器
飞天AI加速器AIACC(Apsara AI Accelerator)是阿里云自研的AI加速器,包括训练加速器AIACC-Training和推理加速器AIACC-Inference,支持统一加速AI主流计算框架TensorFlow、PyTorch、MxNet和Caffe。GPU云加速器可以自动配置包含AIACC-Training的Python Conda环境。
背景信息
Conda是一款开源跨平台的软件包和环境管理系统。在GPU云加速器自动配置的Python Conda环境中,您可以轻松安装和切换深度学习框架,并通过AIACC-Training显著提升训练性能。
AIACC-Training包括以下加速特性:- 梯度融合通信支持自适应多流、自适应梯度融合,显著提升带宽密集的网络模型的训练性能,约提速50%至300%。
- 采用去中心化梯度协商机制,将大规模节点下梯度协商的通信量降低1到2个数量级。
- 采用分级的Allreduce方法,支持FP16梯度压缩及混合精度压缩。
- 支持在训练过程中开启NaN检查,支持定位NaN来自于哪个梯度(需要为SM60及更新平台)。
- 提供针对MXNet的API扩展,支持insighface类型的数据和模型并行。
- 提供针对RDMA网络的深度优化。
自动安装AIACC-Training
AIACC依赖GPU驱动、CUDA和cuDNN,请在创建GPU实例时,配置自动安装GPU驱动,然后选中GPU云加速器。GPU实例创建完成后,会根据您选择的CUDA版本配置包含AIACC-Training v1.3.0的Python Conda环境。创建GPU实例的具体操作,请参见创建配备NVIDIA GPU的实例。 Python Conda环境包括AIACC-Training及OpenMPI等依赖包,但不包括深度学习框架。安装深度学习框架的具体操作,请参见安装深度学习框架。
CUDA版本决定支持安装的深度学习框架版本,对应关系如下表所示。CUDA版本 | 默认进入的Conda环境 | 支持安装的深度学习框架版本 |
---|
CUDA 10.1 | tf2.1_cu10.1_py36 | Tensorflow 2.1 |
CUDA 10.0 | tf1.15_tr1.4.0_mx1.5.0_cu10.0_py36 | - Tensorflow 1.15 + Pytorch 1.4.0 + MXNet 1.5.0
- Tensorflow 1.14 + Pytorch 1.3.0 + MXNet 1.4.0
|
CUDA 9.0 | tf1.12_tr1.3.0_mx1.5.0_cu9.0_py36 | Tensorflow 1.12 + Pytorch 1.3.0 + MXNet 1.5.0 |
安装深度学习框架
- 远程连接实例。
- 查看自动激活的Conda环境。
查看用户名前显示的版本号即可,示例如下图所示。tf2.1_cu10.1_py36代表:- Tensorflow 2.1
- CUDA 10.1
- Python 3.6
- 可选:如果您不需要使用自动激活的Conda环境,激活其它Conda环境。
- 查看所有Conda环境。
示例如下图所示。 - 激活需要使用的conda环境。
conda activate [version number]
示例如下图所示。
- 安装深度学习框架。
示例如下图所示。 - 测试demo。
以测试TensorFlow的demo为例。
- 如果TensorFlow版本为2.1:
- 解压demo测试包。
tar -xvf ali-perseus-demos.tgz
- 进入TensorFlow的demo目录。
cd ali-perseus-demos/tensorflow2-examples
- 执行目录下的测试脚本。
示例命令如下:
python tensorflow2_keras_mnist_perseus.py
该demo使用MNIST数据集进行训练,在提升训练性能的同时,保证和您的基准代码达到相同的精度。训练结果示例如下图所示。
- 如果TensorFlow版本为1.14:
- 解压demo测试包。
tar -xvf ali-perseus-demos.tgz
- 进入TensorFlow的demo目录。
cd ali-perseus-demos/tensorflow-benchmarks
- 查看README.txt中的测试命令。
- 进入对应版本的测试脚本目录。
- 根据实例规格的GPU数量修改并执行测试命令。
示例命令如下:
mpirun
-x NCCL_SOCKET_IFNAME=eth0 \
-x LD_LIBRARY_PATH \
./config-fp16-tf.sh
该demo使用合成数据进行训练,测试训练速度。训练结果示例如下图所示。