股票
板块
用户
资讯
首页
天眼
自选
发现
开户
首页
天眼
自选
发现
我的

MindStudio精度工具两大可视化利器,一键扫描精度“病因”



大模型训推过程如同进行一场千亿级细胞的精密手术:参数规模庞大、多框架混用、TP/PP/DP 多并行策略交织……任何一个“细胞”(算子/模块)的异常代谢,都可能导致Loss尖刺、精度发散、模型“吐字不清”等等症状。


面对海量精度数据和复杂的分布式架构,人工分析如同“盲人摸象”:



看不见:中间激活值、梯度分布如同黑盒,异常发生时已晚;


对不齐:不同实验、不同切分策略下的数据分散,难以整网比对;


找不准:海量数据中定位问题Step和Rank如同大海捞针。


别担心!MindStudio Probe(msProbe)精度医生已上线,专为模型训推场景打造全套扫描方案。它不仅能通过 Monitor/Dump 采集“生命体征”,更拥有两大可视化利器,从数据采集到交互式诊断,让精度问题无处遁形,将“黑盒训推”变为“白盒观测”!


体检前准备:数据采集篇


Monitor轻量化监测:低开销采集训练“生命体征”

Dump精度采集:张量/统计/MD5 多模式数据留存

Monitor:实时监测,轻量无感


采集代码:


from msprobe.pytorch import TrainerMon# 根据自定义配置创建监测工具实例monitor = TrainerMon(config_file_path="./config.json")# 挂载监测对象,传入模型实例,优化器和梯度累积步数信息monitor.set_monitor(model, grad_acc_steps, optimizer)# ... 训练逻辑 ...



超低开销:20B 模型全量权重梯度监测,时间/内存增加均<5%


多维度采集:支持激活值、权重、梯度、优化器状态


异常告警:自动检测NaN/历史均值偏离,支持异常数据落盘


动态启停:训练中随时export DYNAMIC_MONITOR=True开启监测


Dump:精度数据,全量留存


采集代码:


from msprobe.pytorch import PrecisionDebugger# 实例化采集工具,加载配置文件debugger = PrecisionDebugger(config_path="./config.json")debugger.start(model=model) # 开启数据采集# ... 训推逻辑 ...# 关闭数据采集,可重新开启,采集数据会记录在同一个step中debugger.stop() # 结束数据采集,若重新开启,采集数据将记录在下一个step中debugger.step()


多模式支持:



statistics:统计信息(Max/Min/Mean/Norm),磁盘占用小


tensor:关键API真实张量数据,比对更精准,占用较大


md5:CRC-32 校验,一致性验证


层级采集:level=L0(Module 级)/mix(Module+API 级)/L1(API 级)


第一大利器:趋势可视化 —— 

“看趋势、找异常”的全景放大镜


核心能力:将Monitor/Dump采集的精度数据,从 Step/Rank/Module三个维度进行热力图+折线图联动展示,一眼定位“问题步”和“问题层”。


开启方式:


# 解析数据生成数据库(自动识别 monitor/dump 数据)msprobe data2db --data ./input_path --db ./output# 启动 TensorBoard 查看趋势tensorboard --logdir ./output --bind_all


体征热谱:海量数据中一眼锁定“病灶”


场景痛点:多卡模型训练,Monitor 采集产生大量数据文件,人工排查如同大海捞针。


工具处方:趋势可视化-热力图,从Step/Rank/Module三个维度定位异常。


热力图通过不同颜色的数值块将异常数据从全量数据中凸显出来,可以帮助用户快速、直观锁定异常点,加速数据分析过程。


案例:512卡 LLM 训练Grad Norm 出现溢出


发现Loss或梯度异常时,采集Monitor参数梯度监测数据,然后用趋势可视化工具构图。




根据问题场景选择关注指标和统计量,这里选择聚合前梯度(grad_unreduced)的NAN值数量(nans)


切换到Step维度,选择出现问题的step(step52)


观察NAN值数量不为0的地方,定位异常参数梯度所在位置:rank99上的第一个专家梯度


该案例最终确认为专家未分到token导致的梯度异常。


病程回溯:数据趋势比对,两次执行差异回溯


场景痛点:模型长稳运行途中出现尖刺/二次执行效果不一样,执行间精度变了,但不知道是哪一层开始“分叉”的。


工具处方:趋势可视化-折线图,比对数值变化趋势像对比两份病历一样清晰。


稳定运行模型在消化投喂的数据时,其各个模块的统计值表现符合一种正常的规律,而异常的执行结果往往会打破这种规律表现。当我们发现模型“生病了”,通过比对统计量趋势,可以追溯到规律被破坏的“第一现场”。


案例:多模态模型训练出现Grad Norm尖刺


模型训练过程中,固定某step出现Grad Norm尖刺,采集附近step的dump数据,利用趋势可视化找寻问题step不符合规律的表现。




切换到Module维度,观察一个step下完整的Module层在前向执行过程中统计量变化趋势。


通过选择标签,不断缩小观察模型层的范围。


最终注意到LayerNorm层最小值不断下降,不符合正常step下“稳定”的规律,确定异常在前向过程已经出现,进而引起反向梯度异常。


该案例最终确认为异常的Timestep数据引入,导致每层网络做多模态数据调制时放大了特定维度值的大小,引起张量最小值如此失控的变化。


第二大利器:分级可视化 ——

“看结构、比精度”的微观显微镜


核心能力:将dump的精度数据进行解析,还原模型图结构,实现模型各个层级的精度数据比对,方便用户理解模型结构、分析精度问题。


# 双图比对 + 跨套件 Layer 映射 + 溢出检测msprobe graph_visualize -tp ./target -gp ./golden -o ./output -lm mapping.yaml -oc# 启动 TensorBoard 查看构图tensorboard --logdir ./output --bind_all


节点颜色意义:



结构配准:跨框架比对+交互式匹配,灵活“缝合”结构差异


场景痛点:框架差异,如强化学习场景中,推理模型和训练模型模型结构名称对不上;或节点因调用次数差异无法自动匹配。


工具处方:Layer Mapping映射+浏览器手动匹配,像显微镜一样逐层诊断


分级可视化提供灵活的节点匹配方式,适用于不同框架场景下模型结构的匹配和比对,大幅降低跨框架精度数据比对的工作成本。


案例:verl训推一致性比对,vLLM推理和FSDP训练




鼠标左键选择调试侧灰色未匹配节点


鼠标左键选择标杆侧对应节点


点击“匹配”按钮,工具自动计算精度并填充颜色


支持生成匹配配置文件,复用到后续比对


影像拼接:不同切分策略图合并,拼凑完整模型视图


场景痛点:8卡TP=8与单卡TP=1训练,数据分散在不同Rank,无法整网比对;或PP/VPP切分导致模型层碎片化。


医生处方:多并行策略图合并,像拼图一样还原完整模型


在传入rank_size和切分策略等关键参数后,分级可视化构图时会将属于同一网络层的切分后的数据统计值重新整合成完整的网络层统计值,还原一个完整模型的进行比对。


案例:文生图模型推理,TP1正常,TP8出现花图


分别采集TP1和TP8推理dump数据,传入两边的rank_size和TP切分大小,进行构图。




根据精度误差提示颜色,找到异常节点,从对比详情中观察两者差异。


节点信息中包含堆栈信息,可以从代码追溯差异来源。


该案例最终确认为初始噪声的随机种子在不同卡上未做同步,导致多卡切分下输入噪声与单卡不等价。


两大利器,精准打击


可视化方案

核心场景

重点特性

文档入口

趋势可视化

看趋势、找异常

① 维度热力图
② 趋势折线图

https://gitcode.com/Ascend/msprobe/blob/master/docs/zh/accuracy_compare/trend_visualization_instruct.md

分级可视化

看结构、比精度

① 跨框架交互匹配
② 多切分策略图合并

https://gitcode.com/Ascend/msprobe/blob/master/docs/zh/accuracy_compare/pytorch_visualization_instruct.md


一句话总结:

趋势可视化看“时间演化”,分级可视化看“结构差异”——两大利器合璧,精度问题精准打击!


立即体验:

查阅msProbe官方文档

https://gitcode.com/Ascend/msprobe,给你的模型做个全面检查吧!



原文链接
多空观点 观点仅供交流,不构成投资建议
点赞
踩一踩
收藏
分享

评论 (0)

0/200
声明:社区内容仅代表用户个人观点,不构成任何投资建议。投资有风险,入市需谨慎。