如何解决我的 NVIDIA GPU 加速 EC2 Linux 实例上的 Xid 错误?

3 分钟阅读
0

当我在 NVIDIA GPU 加速的 Amazon Elastic Compute Cloud (Amazon EC2) Linux 实例上运行我的应用程序时,应用程序崩溃了。此外,我在系统日志中收到了特定于 GPU 的 Xid 错误。我想从 GPU 检索诊断信息并解决与 GPU 相关的 Xid 错误。

解决方案

**注意:**以下解决方法用于对 G4、G5 和 G6 实例类型进行故障排除。GPU 会被传递到所有 GPU 加速的 EC2 实例系列的访客实例。

检索您的 nvidia-smi 诊断信息

使用 nvidia-smi 工具来检索被附加到实例的 NVIDIA GPU 的运行状况和性能的统计数据和诊断信息。NVIDIA GPU 驱动程序自动提供此工具,并包含所有 AWS 深度学习亚马逊机器映像 (DLAMI) 选项。有关如何为任何 GPU 实例系列安装 NVIDIA GPU 驱动程序的信息,请参阅安装选项

要查询统计数据,请运行 sudo nvidia-smi -q 命令。

内存统计数据示例:

ECC Errors
        Volatile                              # Errors counted since last GPU driver reload
            SRAM Correctable            : 0
            SRAM Uncorrectable          : 0
            DRAM Correctable            : 0
            DRAM Uncorrectable          : 0
        Aggregate                             # Errors counted for the life of the GPU
            SRAM Correctable            : 0
            SRAM Uncorrectable          : 0
            DRAM Correctable            : 0
            DRAM Uncorrectable          : 0

各代 NVIDIA GPU 都可记录 GPU 硬件的聚合和易失存储器统计数据。聚合 ECC 错误计数器在 GPU 生命周期内持续存在。由于正值可能是由于过去的问题导致的,因此您还必须检查易失性指标。易失性 ECC 错误自上次重新加载 GPU 驱动程序起,会从零开始递增。

在实例的生命周期内,未纠正的 ECC 错误会不断增加。但是,您可以纠正 ECC 错误。要重置其计数器,请重启实例或重置 GPU。对于内存损坏页面,重启会启动页面停用或行重新映射,具体取决于实例类型和 GPU 代系。

P3、P3dn、G4dn 实例:

    Retired Pages
        Single Bit ECC              : 0
        Double Bit ECC              : 0
        Pending Page Blacklist      : No

早期代系的 NVIDIA GPU 使用动态页面停用。您可以忽略单位错误,因为它们通常不会导致问题。

如果 GPU 固件识别出双位错误,则 GPU 会停止处理并导致应用程序突然退出。如果出现双位错误,则操作系统 (OS) 会记录 Xid 错误,且挂起页面黑名单状态为。要解决这些错误,请重启实例以停用内存损坏位置。重启后,挂起页面黑名单状态会被重置为

**注意:**错误计数器在 GPU 的生命周期内持续存在。实例启动时计数器不为零并不意味着存在活动的硬件问题或 GPU 故障。

p4d、p4de、G5、G5G 和 G6 实例:

    Remapped Rows        Correctable Error                 : 0 # Can safely ignore.
        Uncorrectable Error               : 0 # If > 0, review system logs for Xid errors
        Pending                           : No # If Yes, an instance reboot or GPU reset is required.
        Remapping Failure Occurred        : No # Should always be No. If Yes, please stop/start the instance.

后期使用 A100 和 A10G GPU 的实例系列可通过行重新映射来隔离和抑制内存错误,以防止重复使用已知的已降级内存位置。行重新映射取代了上一代 GPU 中的页面停用方案。

您可以忽略可纠正的内存错误。无法纠正的错误可能会导致错误或应用程序突然退出,且这些错误会作为 Xid 错误记录到操作系统日志中。

当无法纠正的错误激活了挂起重新映射行时,必须重置 GPU 才能停用内存损坏位置。重启实例以重置 GPU。或者,运行以下命令以手动重置 GPU:

sudo nvidia-smi -i GPU_UUID -r

**注意:**请将 GPU_UUID 替换为您的 GPU ID。

如果重新映射失败,请停止并启动实例,以便将该实例迁移到 GPU 运行状况良好的新底层主机上。

**注意:**AWS 会定期进行诊断,以检测并自动更换运行状况不佳的 GPU。

解决故障模式

各代 NVIDIA GPU 的 GPU 驱动程序会将错误作为 Xid 错误写入操作系统的系统日志中。有关这些错误的详细信息,请参阅 NVIDIA 网站上的 Xid errors

GPU 数量不正确或者缺少 GPU

要查看所有附加的 GPU,请运行以下命令:

nvidia-smi --list-gpus | wc -l

在命令输出中,检查附加的 GPU 数量是否与您的实例类型的预期 GPU 数量匹配。如果缺少 GPU,请停止并启动实例

您也可以使用上述故障排除步骤来解决以下示例 ECC 错误:

  • “Xid 48: 发生了 DBE”
  • “Xid 63: 页面已成功停用”
  • “Xid 64: 由于出现错误,页面停用失败”

NVRM: Xid 79 (PCI:0000:00:00): GPU 已经从总线上掉落

当实例与底层 GPU 失去通信时,将会出现 Xid 79 错误。要解决此问题,请重启实例。如果重启后问题仍然存在,请停止并启动您的实例

警告:infoROM 在 gpu 0000:00:00.0 上已损坏

当 GPU 固件的一部分损坏时,将会出现 infoROM is corrupted(infoROM 已损坏)错误。要解决此问题,请重启实例或重置 GPU。如果重启后问题仍然存在,请停止并启动您的实例

NVRM: Xid 119 PCI:0000:00:00): 等待 GSP 的 RPC 超时

-或-

NVRM: Xid 120 PCI:0000:00:00): GSP 错误: 任务 1 引发了错误代码

上述错误会在您激活 GPU 系统处理器 (GSP) 时出现。要解决此问题,请在 GPU 驱动程序或内核模块中停用 GSP。有关如何停用 GSP 的说明,请参阅 NVIDIA 网站上的 4.2.6.Disabling GSP firmware

避免未来出现 Xid 错误

如果可能,请使用最新的驱动程序和 CUDA 运行时系统。GPU 驱动程序版本经常会引入修复、改进和优化。但是,这些更新也可能包含功能性更改。首先在非生产 GPU 实例上暂存和测试驱动程序更新。

GPU 的内核和内存时钟速度会根据负载而动态变化。为了提高性能,请始终将 GPU 内核和内存时钟速度设置为其最大速度。

停用 GSP。在最近的实例代系中,NVIDIA GPU 包含了 GSP 固件功能。有关如何停用 GSP 的说明,请参阅 NVIDIA 网站上的 4.2.6.Disabling GSP firmware

此外,请使用 Amazon CloudWatch 代理来监控您的 GPU 指标

如果您完成了上述故障排除步骤后仍然遇到 Xid 错误,请提交 AWS Support 案例。提供您的实例 ID 以及 nvidia-smi -q 命令的输出。此外,运行 NVIDIA GPU 驱动程序中包含的 sudo nvidia-bug-report.sh 命令。nvidia-bug-report.sh 脚本会捕获当前工作目录中的关键日志和其他诊断信息。将 nvidia-bug-report.log.gz 压缩日志文件附加到您的支持案例中。

AWS 官方
AWS 官方已更新 3 个月前