AWS EC2 实例在重启后失去 GPU 支持

Posted

技术标签:

【中文标题】AWS EC2 实例在重启后失去 GPU 支持【英文标题】:AWS EC2 instance losing GPU support after reboot 【发布时间】:2019-08-11 04:15:00 【问题描述】:

在星期二重新启动一个实例时,我首先遇到了在具有 Ubuntu 深度学习 AMI 的 AWS p2.xlarge 机器上失去 GPU 支持的问题。

我现在在两天内测试了 3 次,一位同事也遇到了同样的问题,所以我猜是 AWS 的错误。虽然也许有人知道如何更好地调试它。

基本上,在关闭并重新启动后,实例不再将 nvidia 模块加载到内核中。此外,根据 dmesg,似乎加载了不同的内核。所有这一切都是在我没有主动造成的情况下发生的。

以下是使用新实例和无自定义代码重现问题的步骤。我在爱尔兰 (eu-west-1) 工作,该实例在可用区 eu-west-1a 中启动:

启动了“深度学习 AMI (Ubuntu) 版本”的实例 21.2 (ami-0e9085a8d461c2d01) 实例类型:p2.xlarge,所有默认值 登录实例,只运行了以下四个命令:
ubuntu@...:~$ lsmod | grep nvidia
nvidia              16592896  0
ipmi_msghandler        49152  1 nvidia
dmesg | less
...
[    0.000000] Linux version 4.4.0-1075-aws (buildd@lgw01-amd64-035) (gcc version 5.4.0 20160609 (Ubuntu 5.4.0-6ubuntu1~16.04.10) ) #85-Ubuntu SMP Thu Jan 17 17:15:12 UTC 2019 (Ubuntu 4.4.0-1075.85-aws 4.4.167)
[    0.000000] Command line: BOOT_IMAGE=/boot/vmlinuz-4.4.0-1075-aws root=UUID=96950bba-70e8-4a4b-9d78-d2bc1c767e04 ro console=tty1 console=ttyS0 nvme.io_timeout=4294967295
...
ubuntu@...:~$ nvidia-smi
Tue Mar 19 16:41:53 2019
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 410.79       Driver Version: 410.79       CUDA Version: 10.0     |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|===============================+======================+======================|
|   0  Tesla K80           On   | 00000000:00:1E.0 Off |                    0 |
| N/A   42C    P8    32W / 149W |      0MiB / 11441MiB |      0%      Default |
+-------------------------------+----------------------+----------------------+

+-----------------------------------------------------------------------------+
| Processes:                                                       GPU Memory |
|  GPU       PID   Type   Process name                             Usage      |
|=============================================================================|
|  No running processes found                                                 |
+-----------------------------------------------------------------------------+
ubuntu@...:~$ sudo shutdown now
实例没有立即关闭,可能它正在运行更新,但我没有主动触发。 状态显示“已停止”后,通过 AWS 管理控制台再次启动实例 运行前三个命令:
ubuntu@...:~$ lsmod | grep nvidia
(no output)
dmesg | less
...
[    0.000000] Linux version 4.4.0-1077-aws (buildd@lcy01-amd64-021) (gcc version 5.4.0 20160609 (Ubuntu 5.4.0-6ubuntu1~16.04.10) ) #87-Ubuntu SMP Wed Mar 6 00:03:05 UTC 2019 (Ubuntu 4.4.0-1077.87-aws 4.4.170)
[    0.000000] Command line: BOOT_IMAGE=/boot/vmlinuz-4.4.0-1077-aws root=UUID=96950bba-70e8-4a4b-9d78-d2bc1c767e04 ro console=tty1 console=ttyS0 nvme.io_timeout=4294967295
...
ubuntu@...:~$ nvidia-smi
NVIDIA-SMI has failed because it couldn't communicate with the NVIDIA driver. Make sure that the latest NVIDIA driver is installed and running.

如何强制使用内核 4.4.0-1075-aws 启动?由于是 hvm 虚拟化,所以无法直接在对话框中选择内核。

【问题讨论】:

我在 eu-central(法兰克福)遇到了完全相同的问题。发生在具有深度学习 AMI (Ubuntu) 版本 21.2 的 p2.xlarge 和 p3.2xlarge 实例上。到目前为止没有任何帮助,只能终止该实例并从头开始一个新实例,由于从 s3 下载所有数据,这是一个巨大的痛苦。 【参考方案1】:

在 4.4.0-107x-aws 内核上构建较旧的 NVIDIA 驱动程序似乎存在问题。您可以安装更新的 NVIDIA 驱动程序,它应该可以在当前内核上正常工作:

wget http://us.download.nvidia.com/tesla/410.104/NVIDIA-Linux-x86_64-410.104.run
sudo sh ./NVIDIA-Linux-x86_64-410.104.run --no-drm --disable-nouveau --dkms --silent --install-libglvnd 

据 AWS 代表称,驱动程序已于 2019 年 3 月 21 日在深度学习 AMI 中更新 [AWS forums]。

【讨论】:

感谢@Mito,现已修复。 谢谢你,@alkamid。我刚刚测试了新映像,它似乎可以工作:它直接使用 4.4.0-1077-aws 内核启动,但安装了 nvidia 模块。这在重新启动后保持不变。由于我不再有“损坏”实例,因此我无法测试驱动程序更新,但对我来说,它现在可以与新实例一起使用。 我不知道为什么,但sudo sh ./NVIDIA-Linux-x86_64-410.104.run 为我工作,当我使用命令行选项时,我只得到错误。 体验了因 g4dn.xlarge ubuntu 服务器重启综合症而损坏的 nvidia。通过docs.nvidia.com/datacenter/tesla/tesla-installation-notes/… 的复制意大利面舞解决了这个问题【参考方案2】:

我遇到了同样的问题,它帮助我做到了

sudo apt-get install nvidia-cuda-toolkit
sudo reboot

祝你好运!

【讨论】:

以上是关于AWS EC2 实例在重启后失去 GPU 支持的主要内容,如果未能解决你的问题,请参考以下文章

AWS Beanstalk 重启实例

如何在 AWS EC2 实例上激活 GPU 的使用?

EC2 重启后自动运行 .bat 文件,无需远程连接

首次使用AWS服务器EC2

关于开-关机以及重启-EC2-instance-所需要的最小的权限-Policies写法

当我重新启动 EC2 实例时会发生啥?