mindspore-ai / mindspore-ai/hyper-parallel

MindFormers 训练调试能力与 HyperParallel Trainer 差距分析

Open
#210 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
Python
Stars
53
Forks
63
Avg merge
23h 45m
Merged PRs (30d)
63

Description

1. 范围与统计口径

  • 分析快照:MindFormers d38171030(2026-07-18),HyperParallel ee839216(2026-07-24)。
  • MindFormers 静态图:传统 Trainermindspore.ModelGRAPH_MODE/training_graph 链路。
  • MindFormers 动态图:mindformers.pynative.trainer.Trainer 的 MindSpore PyNative 链路。
  • HyperParallel:特指 /home/fdw/code/hyper-parallel/hyper_parallel/trainer。它当前实际是 PyTorch eager Trainer;核心并行库存在某项能力,不等于 Trainer 已经接入。
  • 本文只统计训练调试、监控、性能/显存分析和高可用能力,不统计普通训练算法或纯显存优化能力。

状态说明:

  • ✅:Trainer 主链路已经接入,可通过正式配置或 callback 使用。
  • ⚠️:部分支持、依赖特定模型/底层组件,或存在配置接线缺陷。
  • ❌:当前 Trainer 不支持。
  • “使用频率”统一预留为“待补充”,后续可按实际业务情况填写“高/中/低”或使用次数。

2. 精度与训练状态监控

功能点 含义与作用 典型使用场景 MindFormers 静态图 MindFormers 动态图 HyperParallel 使用频率 使能方式与限制
Loss 监控 输出训练 loss,确认收敛趋势和异常跳变 日常训练看盘、版本回归 待补充 静态图使用 MFLossMonitor;动态图使用 LossCallback;HyperParallel 使用 train.logging.log_steps
学习率监控 输出当前 optimizer learning rate,辅助判断 loss 变化是否符合调度策略 warmup、衰减和断点续训检查 待补充 三者均随基础训练日志输出
Global grad norm 观察全局梯度规模,定位梯度爆炸、消失和并行规约错误 混合并行训练稳定性检查 待补充 MindFormers 随 loss callback 输出;HyperParallel 训练循环提供 DTensor-aware global norm
Overflow 状态监控 记录数值溢出状态,辅助定位低精度训练不稳定 fp16 训练出现 loss 抖动或停滞 ⚠️ 待补充 静态图 MFLossMonitor 直接输出;动态图基础日志没有与静态图等价的独立 overflow 指标
分项 Loss 分离主 loss、MoE auxiliary loss、MTP loss、indexer loss MoE、MTP、DSA 精度问题归因 ⚠️ 待补充 静态图 MFLossMonitor(print_separate_loss=true);动态图 LossCallback;HyperParallel 仅 MoE aux loss 有实现且 MoE callback 配置路径有缺陷
Micro/local loss 记录每个 micro-batch 的局部 loss,定位梯度累积过程中的异常样本或 stage 梯度累积、PP loss 分叉 待补充 静态图 monitor_config.local_loss_format;动态图 monitor.train_state.local_loss;HyperParallel train.monitor.monitor_on: truelocal_loss_format: [log, tensorboard],从 on_substep_end 采集 raw micro loss
Device-local/rank-local 累积 loss 在当前 rank 内按 token 加权汇总一个 step 的 micro loss,识别局部卡异常 单卡正常、多卡 loss 分叉 待补充 MindFormers 使用 device loss 配置;HyperParallel train.monitor.device_local_loss_format 输出 loss/device_accum_local_loss,当前不做跨 rank 聚合
参数级 local grad norm 在通信规约前按参数记录本地梯度 norm,并支持目标参数筛选 定位具体层梯度爆炸或消失 待补充 MindFormers 使用 local_norm 配置;HyperParallel train.monitor.local_norm_format,并可配 target 正则和 invert
Device-local/rank-local grad norm 聚合当前设备所有被监控参数的本地梯度 norm 定位 rank 或并行 stage 间精度不一致 待补充 MindFormers 使用 device norm 配置;HyperParallel train.monitor.device_local_norm_format 输出 grad/device_local_norm,当前不做跨 rank 聚合
Loss/梯度 NaN、Inf 检查 在异常值污染后续权重前终止训练并报告 算子异常、数值不稳定、脏数据 ⚠️ 待补充 静态图 check_for_nan_in_loss_and_grad: true;动态图未接入;HyperParallel 已修复 train.debug.check_nan_inf 接线,但只检查 global grad norm,且只有 rank 0 抛异常
Global norm spike 检测 按阈值识别梯度尖峰,可累计异常次数、跳过异常数据或触发错误 偶发脏样本和训练自动治理 待补充 静态图配置 check_for_global_normglobal_norm_spike_thresholdglobal_norm_spike_count_threshold
Weight norm 记录参数权重 L2 norm,观察参数漂移或层间异常 loss 正常但权重更新异常 待补充 静态图 monitor_config.weight_state_format
Optimizer moment norm 记录 Adam 一、二阶矩 norm,排查优化器状态污染或恢复不一致 checkpoint 续训精度不一致 待补充 静态图 monitor_config.optimizer_state_format
Stable rank/最大特征值 估计矩阵 stable rank 和最大特征值,观察权重退化或表征塌缩 长周期训练稳定性和 MoE expert 退化分析 待补充 静态图 monitor_config.stable_rank_config,支持参数筛选、聚合和采样周期
Attention max logits 输出逐层、逐 head 的 attention logits 最大值及整体最大值,识别 QK 放大和 softmax 饱和 Attention 数值稳定性、QK clip 调优 待补充 静态图 monitor_config.max_attention_logit_format;动态图加入 MaxLogitsMonitor(step_interval=N);均依赖模型支持 track_max_attention_logit
Attention mean_sum 记录 attention mean_sum,与 max logits 结合判断整体分布和局部极值 Attention 稳定性趋势分析 待补充 当前源码没有名为 mean_sum 的指标;MindFormers 两种模式现有的是各层/各 head 最大值的整体 mean,不能直接等同于 mean_sum
MoE max_vio 衡量最热 expert 相对理想均衡负载的最大偏离,常用定义为 max(load_i) / mean(load) - 1,直接反映路由稳定性 Loss-Free Balancing、路由偏置和热点 expert 调优 ⚠️ ⚠️ ⚠️ 待补充 三者均未直接输出名为 max_vio 的指标;静态图可从 expert_load、动态图可从 tokens-per-expert、HyperParallel 可从核心 tokens_per_expert 推导。HyperParallel Trainer 的 MoE callback 还存在配置路径缺陷
Tokens per expert/expert load 记录各 MoE expert 接收的 token 数或负载 路由热点、负载不均和容量规划 ⚠️ 待补充 静态图 MoE callbacks;动态图 monitor.moe_monitor.save_tokens_per_expert_interval;HyperParallel 核心能同步计数,但 Trainer callback 错读配置且未输出完整直方图
MoE drop rate 记录容量不足造成的 token drop 比例 MoE 容量因子和路由调优 待补充 静态图加入 MoEDropRateCallback
Expert 冷热与迁移监控 识别长期冷热 expert,并观察 expert 调整/迁移状态 MoE 长尾负载和热点治理 待补充 静态图 ColdHotExpertMonitorExpertMigrateCallback
TensorBoard 指标落盘 将训练指标写入统一事件文件,支持曲线对齐和实验比较 长训练监控、版本对比 ⚠️ 待补充 静态图配置 tensorboard.tensorboard_dir;动态图配置 monitor.tensorboard.output_dir;HyperParallel train.monitor.*_format: [tensorboard] 已能写 local/device loss/norm 和 rank 0 global loss/norm,但通用 TensorBoardCallback 仍是 stub
确定性与复现开关 固定随机种子并打开计算/通信确定性,缩小并行精度问题排查范围 单卡/多卡对齐和回归复现 待补充 静态图 train_precision_sync: true;动态图使用确定性训练配置;HyperParallel train.debug.deterministic: true

主要源码入口:

  • 静态图:mindformers/core/callback/callback.py:348:805:993:1172:1411:2853
  • 动态图:mindformers/pynative/callback/loss_callback.py:33mindformers/pynative/tools/monitor.py:145:288:534mindformers/pynative/callback/max_logits_monitor.py:38
  • HyperParallel:hyper_parallel/trainer/callbacks/base.py:156:679:758:1101:1176hyper_parallel/trainer/base.py:1023:1437hyper_parallel/core/moe_utils.py:37

3. 性能监控与 Profiler

功能点 含义与作用 典型使用场景 MindFormers 静态图 MindFormers 动态图 HyperParallel 使用频率 使能方式与限制
Step time 记录单步耗时,发现性能回退和周期性抖动 日常性能看盘、版本对比 待补充 三者均随训练日志输出
Samples/tokens throughput 输出 samples/s 或 tokens/s,衡量端到端训练效率 并行策略和 batch size 调优 待补充 MindFormers 基础 loss callback;HyperParallel train.logging.report_throughput: true
TFLOPS 按模型 FLOPs 和 step time 估算设备计算吞吐 算力利用率和实现性能比较 ⚠️ 待补充 MindFormers 可自动结合模型计算量;HyperParallel 必须手工填写 model_flops_per_token
MFU 计算模型 FLOPs 相对设备理论峰值的比例 判断计算、通信或调度瓶颈 ⚠️ ⚠️ ⚠️ 待补充 MindFormers 可由 TFLOPS 与设备峰值换算;HyperParallel 还需手工填写 peak_tflops
ETA/训练进度 根据近期 step time 估计剩余训练时间 长任务排期和异常停滞发现 ⚠️ 待补充 静态图 MFLossMonitor;HyperParallel Progress callback 使用 tqdm
Profiler 按 step 调度 只采集指定训练区间,降低采集开销 warmup 后抓取稳定 step 待补充 MindFormers 配置 start/stop step;HyperParallel ProfilerCallback 目前没有创建或驱动 torch.profiler
Profiler rank 筛选 只在指定 rank 采集,控制多卡 trace 规模 PP stage 或异常 rank 定点分析 待补充 静态图支持 profile_rank_ids/每 PP stage 取卡;动态图 profiler 支持 rank 配置
CPU/NPU activity 同时采集主机和设备侧执行活动 host launch、数据准备和设备计算关联分析 待补充 MindFormers Profiler activity 配置
通信性能采集 记录集合通信事件及耗时,定位 DP/TP/PP/EP 通信瓶颈 扩卡效率差、通信等待高 待补充 MindFormers profiler 打开 profile_communication
DTensor 算子/Collective 通信追踪 记录 DTensor op、模块层级、collective 类型/次数、参数和 sharding 信息,生成层次化调用表 定位某个模型模块引入了哪些隐式通信 ⚠️ 待补充 HyperParallel 核心可使用 with CommDebugMode(model) as mode,再调用 generate_comm_debug_tracing_table()get_comm_counts();支持 Torch/MindSpore,但尚未接入 Trainer 配置和按 step/rank 调度
Profiler 显存事件 将分配释放事件写入 trace,关联算子和显存峰值 显存峰值和泄漏定位 待补充 MindFormers profiler 打开 profile_memory
Profiler level 通过 Level 0/1/2 控制采集粒度和开销 快速概览与深度根因分析切换 待补充 MindFormers 配置 profiler_level
Python stack 记录事件对应 Python 调用栈 将热点算子映射回模型代码 待补充 MindFormers profiler 打开 with_stack
MSTX 标记 写入训练 step、模块或用户区间标记,改善时间线可读性 复杂并行时间线分段 待补充 MindFormers profiler 打开 MSTX 相关配置
数据简化 删除大体积冗余 trace 数据,降低落盘与解析开销 大规模多卡 profiler 待补充 MindFormers profiler 使用 data_simplification
并行策略 metadata 将 DP/TP/PP/CP/EP 等并行信息随 trace 保存 分析通信事件属于哪个并行维度 待补充 MindFormers profiler/Trainer 自动补充并行 metadata
吞吐基线与线性度 对比基准吞吐,判断当前吞吐是否异常及扩卡是否线性 持续性能回归和扩卡验收 待补充 静态图 TrainingStateMonitor 配置 throughput baseline/linearity
数据等待时间 单独统计 dataloader/取数等待,区分数据瓶颈和计算瓶颈 step time 抖动、设备空闲 待补充 三套 Trainer 当前没有统一的一等指标,需新增 step 分段计时
PP bubble/stage imbalance 统计 pipeline bubble 和各 stage 前后向耗时差异 PP 切层、micro-batch 数量调优 待补充 可从 trace 人工分析,但尚无直接汇总指标

主要源码入口:

  • 静态图:mindformers/core/callback/callback.py:348:805:2264mindformers/trainer/trainer.py:1115
  • 动态图:mindformers/pynative/tools/profiler.py:40mindformers/pynative/trainer/trainer.py:884
  • HyperParallel:hyper_parallel/trainer/callbacks/base.py:156:592hyper_parallel/trainer/config.py:293hyper_parallel/core/dtensor/debug/_comm_debug_mode.py:47

4. 显存分析

本节只统计显存观测和问题定位能力,不统计降低显存占用的训练策略。

功能点 含义与作用 典型使用场景 MindFormers 静态图 MindFormers 动态图 HyperParallel 使用频率 使能方式与限制
Profiler memory trace 采集分配、释放和峰值相关事件,并与执行时间线关联 显存峰值来源和生命周期分析 待补充 MindFormers profiler 设置 profile_memory: true;HyperParallel memory profiler 未实现
算子/调用栈显存归因 结合 memory trace 和 stack 将显存事件定位到算子与 Python 代码 找出高占用算子或模块 待补充 MindFormers 同时打开 profile_memorywith_stack
Current allocated/reserved 周期输出当前已分配和已预留显存,观察常驻占用和碎片趋势 长训练疑似泄漏、reserved 持续增长 待补充 MindFormers 只能通过重型 profiler 间接分析;HyperParallel MemoryMonitorCallback 为 stub
Step peak allocated/reserved 每 step 记录峰值并 reset,快速关联突增 step 动态 shape、长序列或偶发 batch 引发峰值 待补充 三者均缺少轻量级逐 step peak monitor
Rank 间显存对比 汇总各 rank 峰值,定位 PP/EP 切分不均或单卡热点 某个 rank OOM、其他 rank 空闲 待补充 可分别抓 profiler 后人工对比,但没有训练期统一聚合指标
显存碎片指标 输出 allocated、reserved、inactive split 等碎片信息 有空余但申请失败、运行时间越长越易 OOM 待补充 当前无 Trainer 级轻量指标
OOM 自动诊断包 捕获 OOM 时保存最近 step 指标、显存摘要、快照和相关配置 难复现的长训练 OOM 待补充 三者均没有完整自动化链路
Memory snapshot/timeline 保存可离线查看的分配调用栈、生命周期和对象关系 深度分析泄漏和生命周期过长 ⚠️ ⚠️ ⚠️ 待补充 MindFormers profiler 能提供 trace 级信息;HyperParallel 新增离线 memory_analysis.html,可读取 block CSV 展示无碎片/理论/含碎片显存曲线,但 Trainer 不负责采集和自动打开
峰值解释与激活点差异分析 查看峰值时存活内存块,按维度解释峰值,并比较两个时间点的新增、释放和共同存活块 查找峰值构成、生命周期过长和显存净增长来源 ⚠️ ⚠️ ⚠️ 待补充 HyperParallel 使用 hyper_parallel/tools/memory_visualizer/memory_analysis.html 离线导入 block CSV;支持峰值明细、解释器、A/B diff 和 CSV/JSON 导出,但尚未接入 Trainer/OOM 自动诊断链路

主要源码入口:

  • MindFormers:mindformers/core/callback/callback.py:2264mindformers/pynative/tools/profiler.py:40
  • HyperParallel:hyper_parallel/trainer/callbacks/base.py:1197hyper_parallel/trainer/config.pyMemoryMonitorConfighyper_parallel/tools/memory_visualizer/memory_analysis.html

5. 高可用、快速恢复与 Checkpoint

功能点 含义与作用 典型使用场景 MindFormers 静态图 MindFormers 动态图 HyperParallel 使用频率 使能方式与限制
周期 checkpoint 按 step 保存模型和训练状态,限制故障回退长度 常规长训练保护点 待补充 静态图 CheckpointMonitor;动态图 checkpoint config;HyperParallel train.checkpoint.save_steps
Final checkpoint 正常训练结束时保存最终状态 确保最后一次更新可交付 待补充 三者 callback 均支持训练结束保存
异步 checkpoint 将写盘放到后台执行,降低保存阻塞时间 checkpoint 较大、共享存储较慢 ⚠️ 待补充 MindFormers 配置 async save;HyperParallel 线程只浅拷贝 state,仍读取 live model/optimizer,存在跨 step 一致性风险
去冗余保存 不重复保存可由其他 shard 恢复的数据,降低容量和写盘量 大规模分布式 checkpoint ⚠️ 待补充 MindFormers 支持 remove redundancy;HyperParallel 依赖 DCP shard,但没有等价的 Trainer 策略配置
Checkpoint 数量保留 自动删除过旧 checkpoint,控制存储增长 高频保存和长期训练 待补充 MindFormers keep_checkpoint_max/save_max;HyperParallel 无 keep-max
模型与 optimizer 恢复 恢复参数和优化器状态,保持更新轨迹连续 手工重启、抢占恢复 待补充 三者通过 checkpoint load path 恢复
Global step/scheduler 恢复 恢复 step 和学习率调度位置 避免 warmup 或衰减阶段错位 待补充 HyperParallel 独立保存 scheduler/step;MindFormers 恢复 common info
RNG 状态恢复 恢复随机数状态,保证 dropout、采样等序列连续 精确复现和无损续训 ⚠️ ⚠️ 待补充 HyperParallel 显式保存 Python/NumPy/Torch RNG;MindFormers 依赖训练框架及 checkpoint 状态,需按模型链路验证
Dataloader 游标恢复 恢复已消费数据位置,避免重复或漏数 大数据集精确续训 待补充 MindFormers 按 consumed samples/step 跳数;HyperParallel 保存 StatefulDataLoader
动态 GBS 续训 global batch size 改变后仍按已消费样本恢复数据 扩缩卡或 batch 配置变化 ⚠️ 待补充 动态图 Trainer 有专门 consumed-sample 处理;其他链路需固定数据语义
新格式 checkpoint 完整性校验 校验 metadata 引用的 safetensors 文件是否齐全,拒绝明显残缺目录 写盘中断、文件丢失 待补充 MindFormers 新格式 loader 自动调用 verify_ckpt_valid
Metadata 原子更新 临时文件完成后原子替换 metadata,降低读到半写文件的概率 进程或存储中断 待补充 MindFormers 新格式 metadata 使用临时文件与 replace;HyperParallel 无 Trainer 完成 manifest
完成 manifest/hash 显式标记整个 checkpoint 完成并校验内容,避免把半 checkpoint 当作恢复点 多 shard 部分写入成功 待补充 三者均缺少完整的内容 hash、失败回滚和完成协议
Online reshard 根据源、目标 ShardedTensor metadata 在线重切分,支持并行策略变化后加载 DP/TP/PP/FSDP 切分变化 ⚠️ ⚠️ 待补充 静态图 checkpoint.reshard_worker_num;动态图复用 loader,但 load_worker_number 未传入,worker 实际仍为默认值;HyperParallel DCP 能处理部分 world-size 变化,缺少 Trainer 级显式流程和验收
Balanced load 在 rank 间平衡 checkpoint 文件读取任务,缓解存储热点 shard 数量不均、共享存储瓶颈 待补充 MindFormers checkpoint.load_balanced: true
Weights-only load 只加载模型,不恢复 optimizer,并正确处理 master weight 微调、切换优化器、权重转换 ⚠️ 待补充 动态图 checkpoint.no_load_optim: true;HyperParallel 可通过状态选择实现,但无完整用户配置
Exception checkpoint 普通训练异常时尝试额外保存一次 Python 异常或可控错误减少丢步 待补充 静态图 CheckpointMonitor.exception_save: true
健康 checkpoint 标记 根据 loss、global norm 等健康指标标记可恢复权重,避免从污染点继续训练 NaN、梯度尖峰和精度劣化后的回退 待补充 静态图健康 checkpoint 配置与选择链路已接入;动态图只有 HealthCheckpointConfig 声明,没有运行时消费
Latest healthy 自动选择 启动时自动选择最近且健康、完整的 checkpoint 无人值守故障恢复 待补充 静态图 tools/resume_ckpt.py 参与筛选;其他 Trainer 需显式路径
TFT 统一故障恢复接入 向底层容错框架注册同步 save/load hook,协调故障发现、重启和恢复 节点、进程、通信故障 待补充 静态图 TrainFaultTolerance,通过 MS_ENABLE_TFT 打开相应能力
进程级快速恢复 ARF 单进程或节点内进程故障后快速拉起并重建训练状态 局部进程退出、节点内恢复 待补充 静态图 MS_ENABLE_TFTARF:1,并配置同步 checkpoint
UCE 故障恢复 对接底层 UCE 检测与恢复流程,从可用 checkpoint 重建状态 NPU UCE 故障 ⚠️ 待补充 静态图设置 UCE:1;检测和故障处置依赖 MindSpore/TFT
临终遗言/故障现场保存 在可控故障退出前尽量保存最后训练现场 缩短相邻周期 checkpoint 之间的回退步数 ⚠️ 待补充 静态图 exception save/TFT save hook 可覆盖部分故障;致命硬件或进程故障不保证成功
TRE 联动 global norm 异常同步后抛出可被恢复框架识别的错误 精度异常自动回退 待补充 静态图 MS_ENABLE_TFT=TRE:1 配合 global norm health 配置
SDC SilentCheck/CheckSum 检测静默数据损坏并通过跨 rank 校验确认异常 长训练无显式报错但精度漂移 ⚠️ 待补充 静态图 MindSpore ≥2.7,设置 NPU_ASD_ENABLE=1MS_SDC_DETECT_ENABLE=1 并加入 SDCMonitor;当前主要告警,未形成自动恢复闭环
硬件压力检测 周期执行硬件精度/电压压力检测,发现亚健康设备 长时间大规模集群训练 ⚠️ 待补充 静态图 StressDetectCallBack/StressTestModelMonitor,属于实验能力
弹性成员变化 rank 成员变化后重新 rendezvous,并重建 mesh、模型、optimizer 和 dataloader 节点替换、动态扩缩容 待补充 三套 Trainer 当前均无完整弹性训练闭环
Checkpoint 失败策略 保存或加载失败时 fail-fast、降级或告警,避免无保护运行或假恢复 存储不可用、权限和容量异常 ⚠️ ⚠️ ⚠️ 待补充 HyperParallel 当前捕获异常后仅 warning 并继续,风险最高;建议策略化并默认 fail-fast

主要源码入口:

  • 静态图:mindformers/core/callback/callback.py:1604:1630:2792:3360mindformers/trainer/base_trainer.py:1120:1434mindformers/version_control.py:241
  • 动态图:mindformers/pynative/callback/checkpoint_callback.py:31mindformers/pynative/trainer/trainer.py:779
  • 共享新格式 checkpoint:mindformers/checkpoint/checkpoint.pyreshard.pyfully_parallel.pyutils.py:314
  • HyperParallel:hyper_parallel/trainer/callbacks/base.py:259:285:374:420

6. HyperParallel 主要能力欠缺

P0:修复已有能力的真实可用性
  1. 统一剩余 callback 配置访问路径为 args.train.*。TrainingStateMonitor 和 GradientHealth 已正确接线;Profiler、通用 TensorBoard、Memory、MoE、GC、Eval 等仍读取错误层级。
  2. 实现 Profiler callback:按 step/rank 调度 CPU/NPU、通信、显存、stack、MSTX trace,并保存并行策略 metadata。
  3. 实现轻量 Memory monitor:current/peak allocated/reserved、逐 step peak reset、rank 聚合,以及 OOM 自动诊断包。
  4. 实现 TensorBoard callback,并复用现有 logging event,确保终端日志和 TensorBoard 指标同源。
  5. 扩展现有 NaN/Inf health callback:除 global grad norm 外同时检查 loss 和 local/device norm;异常时所有 rank 协同退出。
  6. 修复异步 checkpoint 一致性:optimizer step 后创建不可变 CPU staging,再异步写盘;增加临时目录、完成 manifest 和失败策略。
P1:补齐大模型精度与性能诊断
  1. 在已有 micro/local/device loss 和 local/device grad norm 基础上,补充跨 rank 对比/聚合、weight norm、optimizer moment norm,并完成 DP/TP/PP/FSDP 语义验收。
  2. 增加 Attention max_logitsmean_sum。若 mean_sum 的业务定义不同于现有 MindFormers 的 max_attention_logit/mean,需先固定公式、聚合维度和跨 TP/CP 规约语义。
  3. 增加 MoE max_vio 一等指标;基于同步后的 tokens-per-expert 计算并输出 layer 级、全局最大值和趋势,同时保留原始直方图。
  4. 增加 global norm spike 检测、连续异常次数、跳数据和健康 checkpoint 联动。
  5. 自动计算 FLOPs/token、TFLOPS 和 MFU;增加数据等待、PP bubble/stage imbalance、吞吐基线和扩卡线性度。
P2:建立高可用闭环
  1. 增加 checkpoint keep-max、完整性验证、完成 manifest/hash、latest complete/healthy 自动选择。
  2. 定义 on_exception 生命周期和 last-words checkpoint;诊断包包含配置、日志、最近指标、显存摘要和 profiler 环形缓冲。
  3. 接入进程/节点故障恢复:rendezvous、重建 process group/device mesh、模型、optimizer 和 dataloader,并建立故障注入测试。
  4. 建立 health checkpoint、UCE/SDC 检测和自动回退之间的统一状态机。
  5. 将 Trainer 平台化:分别提供 PyTorch eager 和 MindSpore PyNative adapter;若需要 MindSpore 静态图,再单独建设 graph Trainer adapter。

7. 建议验收矩阵

维度 最低验收标准
精度 单卡及 DP/TP/PP/FSDP 下 loss、global/local/device norm 语义一致;max_vio、attention max_logits/mean_sum 有明确公式和并行规约;注入 NaN/Inf 后全 rank 有界退出
性能 指定 step/rank 能生成可解析 trace;通信、显存、stack、MSTX 开关有效;持续指标包含 tokens/s、TFLOPS、MFU、数据等待和 PP stage 信息
显存 每 step current/peak 可观测并可跨 rank 对比;构造 OOM 能自动生成诊断包;监控关闭时开销可忽略
高可用 覆盖 kill 单进程/单节点、写盘失败、半 checkpoint、异常 loss 四类故障;只从完整且健康的 checkpoint 恢复;恢复后的数据、RNG 和 loss 与无故障基线一致
Trainer 后端 PyTorch eager、MindSpore PyNative、MindSpore GRAPH 分别列能力并独立验收,不能将核心库支持误报为 Trainer 支持

schema_version: 1
source: gitcode
gitcode_repo: mindspore/hyper-parallel
gitcode_issue: 305
source_url: https://gitcode.com/mindspore/hyper-parallel/issues/305

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with the listed MindFormers and HyperParallel callback, trainer, profiler, configuration, and memory-visualizer paths. Verify the capability comparisons against those entry points, including the stated configuration limitations and unsupported features. Done means a consistent training-debugging gap analysis covering monitoring, profiling, memory analysis, recovery, and checkpoint behavior.

Written by the indexing model from the issue text.

Assessment

Tech stack
python
Domain
documentation
Issue type
Documentation
Difficulty
5/5
Estimated time
Over a week
Activity status
Active
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.