我在两台机器(我的个人电脑和一台工作用的小型服务器)上使用 Ubuntu 20.04.3 LTS,两台机器都配备了 Nvidia 显卡。个人电脑有一台 RTX2080 Super,而服务器运行两台 RTX3090。
我们在工作中进行深度学习研究,因此我主要使用这些机器来运行 TensorFlow 或利用 GPU 的相关工具。
我从头开始设置这两台机器,因此我在两台机器上都安装了全新的 Ubuntu 20.04.3 LTS,更新、升级、安装基本工具、安装 Nvidia 驱动程序 + CUDA。为此,我在两台机器上都使用了 Nvidia 官方页面上的运行文件安装程序这里包含 Nvidia 驱动程序的 CUDA。在运行此安装程序之前,我总是将 Noveau 驱动程序列入黑名单,如下所示这里例如。我不认为自己是这类系统非常有经验的管理员,因为我有研究背景,过去几个月我学会了使用和理解 Linux,到目前为止,我们小团队所需的一切都运行良好。除了一个小问题,我在我的个人机器和研究服务器上都遇到了这个问题。似乎我的驱动程序安装经常出现故障,而我无法了解具体原因和时间。
为什么要提到两台机器?因为我认为这是用两种不同的方式表达的同一个问题:(1)我的个人机器是我用来工作和编码的机器。它连接了一个显示器,并且每隔一段时间(我想是每 3-5 周),它不会启动到登录屏幕,而是向我显示一行:
/dev/nvme0n1p1: clean
我不记得确切的行,但它肯定包含我的 SSD 的位置和“clean”工作。然后从这一点开始什么都没有发生。我通常通过 Ctrl+Alt+F2 登录并简单地重新运行 cuda/driver 安装程序来解决问题:
sudo sh cuda_11.5.0_495.29.05_linux.run
然后重新启动。重新启动后,我的登录屏幕恢复正常,一切恢复正常。我在我的个人机器上这样做了大约一年,我从来没有费心寻找问题出在哪里,因为重新安装后,CUDA 可以工作,TF-GPU 可以工作,我的 UI 可以工作,说实话,这就是我所需要的。
(2) 现在有了无显示器服务器。它不停地运行,无需重启。但在固定时间间隔内(同样是 3-5 周),与 GPU 相关的一切都会停止工作。使用 TensorFlow-GPU 的 Python 脚本将不再找到 GPU。
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
有一天,一切都恢复正常,如果不手动操作系统中的任何内容(例如更新等),它将停止工作并显示此消息。就像我的个人机器一样,只需重新安装驱动程序即可解决问题。但由于这涉及我负责的服务器,并且许多人都在使用,所以我想确保有一个解决方案,并详细了解问题,以避免将来再次出现。
我查看了一下,/var/log/dpkg.log
看看是否能找到有关自动更新驱动程序的任何消息。我还查看了 Xorg、启动和系统日志,但我缺乏在这些日志中查找错误提示的知识。我发现的一件事是,运行:
dpkg --list | grep nvidia
实际上在服务器上什么都没有返回。nvidia-smi
将打印上述消息。令人惊讶的是,nvcc --version
仍然有效并给出:
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2021 NVIDIA Corporation
Built on Mon_Sep_13_19:13:29_PDT_2021
Cuda compilation tools, release 11.5, V11.5.50
Build cuda_11.5.r11.5/compiler.30411180_0
因此看起来 CUDA 仍然存在,但 nvidia 驱动程序却不存在。
我认为个人计算机和服务器都存在同样的问题。当我的个人计算机坏了,尝试在终端中运行 nvidia-smi 时,它会显示相同的错误消息,而且我确信,如果我将显示器连接到服务器,它也不会显示 Ubuntu 登录屏幕。
目前,我没有在服务器上重新运行安装,因为我想让它处于“损坏”状态,以防您能对在哪里搜索问题提供一些建议。无论如何,提前感谢您的帮助!