这不一定是 Linux 问题,但无论如何我都会在这里问它。我使用的工作站主要用于训练深度学习和机器学习模型。我在 CPU 和 GPU 上运行训练代码。
CPU:AMD Ryzen 9 5950X 16 核处理器
显卡:NVIDIA GeForce RTX 3090
操作系统:Ubuntu 22.04 LTS
我使用的库(PyTorch、XGBoost、LightGBM 等)大量利用交换内存来加载数据。在处理大型数据集时,交换内存会缓慢积累并超过限制 (2GB)。当这种情况发生时,所有核心都会变得疯狂,CPU 会过热。几秒钟后工作站自行关闭。
我是一名数据科学家,但我不擅长硬件。我花了几周时间才弄清楚为什么我的工作站总是自动关闭。我必须找到一种方法来防止这种情况发生,因为我无法再完成自己的任务了。您有什么建议?
向您提供更多详细信息,这在 3-4 个月前还没有发生。最近才开始。
编辑:添加了 nvidia-smi 和传感器输出,同时训练两个模型(UNet 和 YOLOv6)。
英伟达-SMI
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 510.73.05 Driver Version: 510.73.05 CUDA Version: 11.6 |
|-------------------------------+----------------------+----------------------+
| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |
| | | MIG M. |
|===============================+======================+======================|
| 0 NVIDIA GeForce ... Off | 00000000:0A:00.0 Off | N/A |
|100% 79C P2 338W / 350W | 14171MiB / 24576MiB | 100% Default |
| | | N/A |
+-------------------------------+----------------------+----------------------+
+-----------------------------------------------------------------------------+
| Processes: |
| GPU GI CI PID Type Process name GPU Memory |
| ID ID Usage |
|=============================================================================|
| 0 N/A N/A 1361 G /usr/lib/xorg/Xorg 56MiB |
| 0 N/A N/A 1568 G /usr/bin/gnome-shell 10MiB |
| 0 N/A N/A 27955 C python 2743MiB |
| 0 N/A N/A 31692 C python 11355MiB |
+-----------------------------------------------------------------------------+
传感器
nvme-pci-0300
Adapter: PCI adapter
Composite: +74.8°C (low = -273.1°C, high = +84.8°C)
(crit = +84.8°C)
Sensor 1: +74.8°C (low = -273.1°C, high = +65261.8°C)
Sensor 2: +74.8°C (low = -273.1°C, high = +65261.8°C)
iwlwifi_1-virtual-0
Adapter: Virtual device
temp1: +57.0°C
k10temp-pci-00c3
Adapter: PCI adapter
Tctl: +87.8°C
Tccd1: +89.2°C
Tccd2: +79.5°C
答案1
首先,绝对确保您的 PSU 足够强大 - 像您这样的即时关闭可能表明它存在问题。也许更换它。 RTX 3090 的峰值功率可达 500W,这意味着您的 PSU 和 CPU 的额定功率必须至少为 850W。
说到你的临时工。
您的 CPU 正在接近其额定运行最大限度,即 90C,这意味着您最好通过安装机箱风扇来改善机箱冷却,例如 120mm(140mm 更好 - 更安静且更强大),并且可能在 CPU 上安装更好的冷却器以及更换导热膏 - 我的首选是Arctic MX-4(MX-5理论上可以提供更好的性能,但应用起来麻烦很多)。
安装适当的机箱冷却可能就足够了,因为您的 GPU 肯定会增加 CPU 温度。
不要忘记更新您的 EFI BIOS。
您还可以使用纯软件解决方案:输入 BIOS 并
- 要么降低你的CPU PPT(最大瓦数)
- 或为其设置最高温度,例如85C
两者都会导致多线程性能下降,但影响不大。您可以在这里获得更多帮助:https://www.reddit.com/r/Amd/
答案2
为了讨论的方便,假设 CPU是过热,即冷却问题,不是一个内存管理问题。假设当交换区已满并且系统必须在交换区和 RAM 之间移动更多数据时,系统存储必须执行额外的 I/O,这使得存储硬件足以压倒热管理硬件。监控您的系统温度而不是系统负载在这种计算负载下,将关闭与温度峰值而不是计算峰值相关联。确保系统风扇协同工作以保持空气流通,而不是全部将空气吸入机箱或从机箱中排出空气。确保散热器安装正确。
答案3
我将回答我自己的问题,告诉你我是如何解决这个问题的。在得出结论之前,这可能会帮助其他人检查类似的内容。
是的,这是一个冷却问题。我发现主板风扇连接器松动。风扇正在工作,但当 CPU 过热时,该信息不会传递给风扇。当我重新插上连接器时,温度恢复正常。