NVidia 驱动程序停止在带有 Ubuntu 16.04 和 Tesla K80 GPU 的 AWS EC2 实例上工作

Posted

技术标签:

【中文标题】NVidia 驱动程序停止在带有 Ubuntu 16.04 和 Tesla K80 GPU 的 AWS EC2 实例上工作【英文标题】:NVidia drivers stopped working on AWS EC2 instance with Ubuntu 16.04 and Tesla K80 GPU 【发布时间】:2019-08-11 04:58:31 【问题描述】:

一段时间以来,我一直在使用带有 Tesla K80 GPU 的 AWS EC2 实例来运行 TensorFlow 代码。 我安装了 CUDA 9.0 和 cuDNN 7.1.4,我使用的是 TF 1.12,所有这些都在 Ubuntu 16.04 上

昨天一切正常,但今天似乎 NVidia 驱动程序由于某种原因停止运行:

ubuntu@ip-10-0-0-13:~$ 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.

我检查了驱动程序:

ubuntu@ip-10-0-0-13:~$ dpkg -l | grep nvidia
rc  nvidia-367                              367.48-0ubuntu1                            amd64        NVIDIA binary driver - version 367.48
ii  nvidia-396                              396.37-0ubuntu1                            amd64        NVIDIA binary driver - version 396.37
ii  nvidia-396-dev                          396.37-0ubuntu1                            amd64        NVIDIA binary Xorg driver development files
ii  nvidia-machine-learning-repo-ubuntu1604 1.0.0-1                                    amd64        nvidia-machine-learning repository configuration files
ii  nvidia-modprobe                         396.37-0ubuntu1                            amd64        Load the NVIDIA kernel driver and create device files
rc  nvidia-opencl-icd-367                   367.48-0ubuntu1                            amd64        NVIDIA OpenCL ICD
ii  nvidia-opencl-icd-396                   396.37-0ubuntu1                            amd64        NVIDIA OpenCL ICD
ii  nvidia-prime                            0.8.2                                      amd64        Tools to enable NVIDIA's Prime
ii  nvidia-settings                         396.37-0ubuntu1                            amd64        Tool for configuring the NVIDIA graphics driver

似乎有 2 个不同的版本,这可能是个问题吗? (但我不明白为什么以前一切正常)。

找到this thread,我检查了我的内核,这似乎与线程中提到的不同:

ubuntu@ip-10-0-0-13:~$ uname -a
Linux ip-10-0-0-13 4.4.0-143-generic #169-Ubuntu SMP Thu Feb 7 07:56:38 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux

有没有人遇到过这个问题并知道如何解决? 提前感谢您的帮助!

编辑:

尝试使用@Dehydrad_Mud 的方法升级驱动程序时,出现以下错误:

ERROR: The installation was canceled due to the availability or presence of an alternate driver installation. Please see /var/log/nvidia-installer.log for more details.

以及日志文件的内容:

nvidia-installer log file '/var/log/nvidia-installer.log'
creation time: Thu Mar 21 10:56:46 2019
installer version: 384.183

PATH: /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin

nvidia-installer command line:
    ./nvidia-installer
    --no-drm
    --disable-nouveau
    --dkms
    --silent
    --install-libglvnd

Using built-in stream user interface
-> Detected 4 CPUs online; setting concurrency level to 4.
-> Installing NVIDIA driver version 384.183.
-> The NVIDIA driver appears to have been installed previously using a different installer. To prevent potential conflicts, it is recommended either to update the existing installation using the same mechanism by which it was originally installed, or to uninstall the existing installation before installing this driver.

Please review the message provided by the maintainer of this alternate installation method and decide how to proceed:

The package that is already installed is named nvidia-396.

You can upgrade the driver by running:
`apt-get install nvidia-396 nvidia-modprobe nvidia-settings`

You can remove nvidia-396, and all related packages, by running:
`apt-get remove --purge nvidia-396 nvidia-modprobe nvidia-settings`

This package is maintained by NVIDIA (cudatools@nvidia.com).


(Answer: Abort installation)
ERROR: The installation was canceled due to the availability or presence of an alternate driver installation. Please see /var/log/nvidia-installer.log for more details.

运行apt-cache search nvidia | grep -P '^nvidia-[0-9]+\s' 给出:

nvidia-331 - Transitional package for nvidia-331
nvidia-346 - Transitional package for nvidia-346
nvidia-304 - NVIDIA legacy binary driver - version 304.135
nvidia-340 - NVIDIA binary driver - version 340.107
nvidia-361 - Transitional package for nvidia-367
nvidia-352 - Transitional package for nvidia-375
nvidia-367 - Transitional package for nvidia-387
nvidia-375 - Transitional package for nvidia-418
nvidia-387 - NVIDIA binary driver - version 387.26
nvidia-418 - NVIDIA binary driver - version 418.39
nvidia-384 - NVIDIA binary driver - version 384.183
nvidia-390 - NVIDIA binary driver - version 390.116
nvidia-410 - NVIDIA binary driver - version 410.104
nvidia-396 - NVIDIA binary driver - version 396.82

【问题讨论】:

【参考方案1】:

我通过更新到最新的 Nvidia 驱动程序解决了这个问题。使用:

nvcc --version

获取 cuda 工具包版本号。对于 9.0,最新的驱动程序是 384.183,对于 CUDA 10.0,最新的驱动程序是 410.104。

然后运行:

 wget http://us.download.nvidia.com/tesla/384.183/NVIDIA-Linux-x86_64-384.183.run

下载驱动程序。

然后运行:

sudo sh ./NVIDIA-Linux-x86_64-384.183.run --no-drm --disable-nouveau --dkms --silent --install-libglvnd

安装驱动程序。

运行:

nvidia-smi

检查问题是否已解决。

【讨论】:

嗨。感谢您的回答,但由于存在已安装的驱动程序,我遇到了错误:ERROR: The installation was canceled due to the availability or presence of an alternate driver installation. Please see /var/log/nvidia-installer.log for more details. 我是否需要删除已安装的驱动程序,如果需要,我该怎么做?提前致谢! 嘿。当我尝试运行安装时出现此错误:WARNING: One or more modprobe configuration files to disable Nouveau are already present at: /etc/modprobe.d/nvidia-installer-disable-nouveau.conf. Please be sure you have rebooted your system since these files were written.... 我也遇到了这个警告。尽管如此,安装仍然进行,nvidia-smi 工作顺利。 Alda 你能用日志文件的相关行以及apt-cache search nvidia | grep -P '^nvidia-[0-9]+\s' 的输出更新你的问题吗? 嗨。我用一切更新了这个问题。在此先感谢:) 396.x 安装似乎阻止了 384.x 安装的尝试。 396 是 CUDA 工具包 v9.2 的最新驱动程序,而不是 9.0。因此,似乎是驱动程序工具包版本不匹配导致了您的问题。我建议按照日志文件中的说明删除 396,并按照我的回答安装 384。您的系统上似乎还有其他与 396 相关的软件包。如果你purge 396,你可能会发现需要根据需要重新安装其他包。【参考方案2】:

虽然重新安装驱动程序可以使驱动程序正常工作,但这并不能解决问题,也不是此问题的正确答案。 我在 ubuntu 上观察到了同样的问题,重新安装驱动程序是一种解决方法,直到它再次崩溃的那一天。这种自发的 nvidia cuda 驱动程序故障的原因是 ubuntu 的自动安全更新。当有重建内核的更新时,它将破坏 cuda 驱动程序,nvidia-smi 将无法与驱动程序通信。 一个简单的解决方案是禁用自动安全更新:

sudo apt -y remove unattended-upgrades

【讨论】:

【参考方案3】:

这对我有用:

sudo apt purge nvidia-driver-450
sudo apt autoremove

【讨论】:

【参考方案4】:
#!/bin/bash

set -x

version=$1
#version=410.79
#version=410.104

wget http://us.download.nvidia.com/tesla/$version/NVIDIA-Linux-x86_64-$version.run 
sudo sh ./NVIDIA-Linux-x86_64-$version.run --no-drm --disable-nouveau --dkms --silent --install-libglvnd 
    将以上内容另存为install.shsh install.sh 410.104 sudo modprobe nvidia

GPU 应该马上回来,请与 nvidia-smi 确认

【讨论】:

【参考方案5】:

对于多 cuda 安装,选择您打算使用的 cuda 版本。然后按从早到晚的顺序安装它们。对于 cuda-version 9.0,最新的驱动程序是 384.183,9.1 是 390.116,对于 CUDA 10.0 是 410.104。

您可以在以下网站中找到名称,但不要使用 .deb 文件。

https://www.nvidia.com/Download/Find.aspx

$ cd /usr/local
$ sudo rm cuda
$ sudo ln -s cuda-$cuda_version cuda

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

【讨论】:

然后当我尝试nvidia-smi 时,它说Killed,所以我尝试再次运行它,EC2 挂起,Ctrl+C 甚至无法逃脱 你让它工作了吗?如果是这样,请编辑我的答案,我会接受编辑。或者写下你自己的答案,我会删除我的。我知道我必须重做这个答案。因为,它类似于 1. nividia 清除驱动程序,然后 2. 安装驱动程序。 实际上,在 EC2 上玩了几个小时后,我放弃了。我将使用 AWS Marketplace 中预装的 CUDA 10 驱动程序。你的回答有点奏效(在我挂起机器后重新启动机器之后)。我的问题是我的 Pytorch 安装需要 CUDA 10+,而我使用的是 CUDA 9.1……当我发现这一点时,我只想哭。火炬 cuda90 安装并没有修改任何内容

以上是关于NVidia 驱动程序停止在带有 Ubuntu 16.04 和 Tesla K80 GPU 的 AWS EC2 实例上工作的主要内容,如果未能解决你的问题,请参考以下文章

Nvidia显示驱动程序经常停止工作

ubuntu安装nvidia显卡驱动

在ubuntu下 nvidia显卡怎么开启kms

ubuntu---NVIDIA驱动的多种安装方式

如何让 Steam 在 Ubuntu 20.04 上运行

Ubuntu用户怎样安装Nvidia最新显卡驱动