开场白
来阅读一下《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,每次将m个1*w的向量作为数据放入训练。
选择为每个指标训练LSTM-VAE模型(原来引入这个不是在预处理阶段),用于除噪。
监测指标优先级(Step 2)
经过以下步骤得到指标的优先级:
- 引入Z分数:,为机器序号,为指标序号,为所有机器在该指标上的均值,为所有机器在该指标上的标准差。利用对进行度量。
- 基于,采用决策树来确定每个指标在识别错误机器时的灵敏度。(希望让敏感度高的优先级高)
这里使用作为训练任务的时间窗口的每个实例。这些实例手动地判别为正常或异常,依据这期间是否出现故障。然后使用这些带标签的实例来训练决策树。
在线故障检测(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上实现较高的通信速度。
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曲线有点怀疑,数据拉取时间和处理时间为什么几乎互补?