少女祈祷中...

开场白

来阅读一下《Minder: Faulty Machine Detection for Large-scale Distributed Model Training》原论文。

ο(=•ω<=)ρ⌒☆

论文链接:https://www.usenix.org/conference/nsdi25/presentation/deng

Minder

论文贡献

  • 调查了:故障类型以及其与各个指标的相关性。从经验上解释了这些相关性的表现。概述检测的挑战。
  • 提出Minder的设计思想:相似度、连续性、数据降噪模型、指标优先级。并通过全面的评估加上消融实验,来凸显其反应速度快、准确率高的特点以及合适的设计选择。
  • 部署Minder遇到的经验教训。未来的研究方向。

论文研究动机

由于通信等原因,故障(只提到了硬件故障)导致部分GPU空闲,造成资源浪费。

通过日志方式查看故障的缺陷:

  • 难察觉,发现故障不及时
  • 日志不完整或冗余
  • 分析慢
  • 检测过程中训练变慢

故障总类分析

硬件(主机内) 软件(主机内) 网络或其他问题
55.8%(ECC错误占主体) 28% 16.3%

ECC错误、CUDA错误、GPU错误难以预测或避免。

要解决的挑战

  • 机器会任意失效,难以检测到哪个机器以哪种情形发生故障
  • 监测指标的常驻状态依赖于训练任务
  • 故障与指标的多对多关系
  • 监测到的数据存在噪声

Minder设计

采用无监督学习、基于相似性的距离检查

利用了异常的时间连续性(多数异常会持续一段时间)

利用VAE或其他生成概率模型进行数据的除噪和重构

为每个指标单独训练一个模型(不进行模型的集成)

采用带权重的指标,只使用权重高的几个指标对应的模型(某个模型识别不出故障类型,就移步到下一个指标及其模型)

模型框架

预处理(Step 1)

监视数据流汇总到一系列时间窗口。

进行指标采样的时间戳对齐(错过样本点采用最近时间的数据进行填充)。

Min-Max归一化,以保证多维监控数据分配到均匀的空间中(?有必要吗)。

每个指标的模型训练(Step 2)

m台机器,时间窗口长度为w,每次将m1*w的向量作为数据放入训练。

选择为每个指标训练LSTM-VAE模型(原来引入这个不是在预处理阶段),用于除噪。

监测指标优先级(Step 2)

经过以下步骤得到指标的优先级:

  1. 引入Z分数:Zij=xijxjsjZ_{ij} = \frac{x_{ij} - \overline{x_j}}{s_j}ii为机器序号,jj为指标序号,xj\overline{x_j}为所有机器在该指标上的均值,sjs_j为所有机器在该指标上的标准差。利用max(Zij)\max(Z_{ij})jj进行度量。
  2. 基于max(Zij)\max(Z_{ij}),采用决策树来确定每个指标在识别错误机器时的灵敏度。(希望让敏感度高的优先级高)

这里使用max(Zij)\max(Z_{ij})作为训练任务的时间窗口的每个实例。这些实例手动地判别为正常或异常,依据这期间是否出现故障。然后使用这些带标签的实例来训练决策树。

在线故障检测(Step 3)

每个时间窗口进行基于相似性的距离(欧氏距离)检查,标出最有可能出问题(超出一个阈值similarity threshold)的机器作为candidate,观察其时间窗口。

持续观察candidate的时间窗口,防止误判(故障通常会导致表现进一步恶化)。当连续检测到同一机器超过时间阈值continuity threshold,认为其确实发生了故障。

这个时间阈值通常设为4min

窗口会一直移动以检测新窗口内有故障的潜在机器。

实现

Minder每个一段时间(8分钟)监测数据。若检测出故障机器,报警给工程师。

工程师阻止并替换为新机器。(Minder作为后端服务不会干扰在线分布式培训任务)

评估

AOC errors仍未解决。

讨论

希望将SuperBench这种积极系统与Minder合一

名词解析

NCCL:英伟达多卡通信框架

NCCL是Nvidia Collective multi-GPU Communication Library的简称,它是一个实现多GPU的collective communication通信(all-gather, reduce, broadcast)库,Nvidia做了很多优化,以在PCIe、Nvlink、InfiniBand上实现较高的通信速度。

https://www.zhihu.com/question/63219175/answer/206697974

PCLe:主机内的高速串行总线,所连接的设备分配独享通道带宽,不共享总线带宽。

PFC:Priority-based Flow Control 基于优先级的流量控制

ECC错误:一种内存错误。

NIC:网卡;NIC dropout:OS中缺少NIC

AOC error:网卡或开关侧的高速活动光电缆错误

DP: 数据并行

PP: 流水线并行

TP: 张量并行

LSTM: 长短期记忆,适合于处理和预测时间序列中间隔和延迟非常长的重要事件

Mahalanobis距离:马式距离,即MD,广泛用于识别异常值。Minder通过使用LSTM-VAE来代替MD

DCGM:NVIDIA数据中心GPU管理器

个人想法

有没有办法简化故障以及指标,实现一个故障抽象或者指标抽象。

指标优先级部分建立的决策树是很单一的,能不能细分?

对图8曲线有点怀疑,数据拉取时间和处理时间为什么几乎互补?