精度调试:TensorBoard可视化
TensorBoard是TensorFlow的可视化工具包,提供机器学习实验所需的可视化功能和工具。TensorBoard能够有效地展示训练过程中的计算图、各种指标随时间的变化趋势以及训练中使用到的数据信息,帮助用户快速识别训练精度问题。
在JupyterLab中使用TensorBoard可视化作业页面介绍了如何在云上ModelArts开发环境中创建和使用Tensorboard实例。本页面介绍针对昇腾场景的TensorBoard插件工具,可以将msprobe dump的精度数据进行解析,还原模型图结构,实现模型各个层级的精度数据比对,方便用户理解模型结构、分析精度问题以及快速识别精度不符合预期的API。
步骤一:模型结构数据采集
使用msprobe工具采集训练精度数据。具体操作,请参见msprobe数据dump指导。
- 需要选择“level”为“L0”(module信息)或者“mix”(module信息+API信息),才能采集到模型结构数据,即采集结果件construct.json内容不为空。
- 采集完后的数据格式如下,其中construct.json为模型结构文件。
图1 采集完的格式示例
步骤二:生成图结构文件
采集完成后,需要生成模型图结构文件。
- 如果只dump了一份NPU上的精度数据,可以执行单图构建命令,生成的图包含模型结构、精度数据、堆栈信息。
- 如果同时dump了NPU和GPU上的精度数据,可以执行双图构建命令,生成的图包含模型结构、结构差异、精度数据和精度比对指标、精度是否疑似有问题等信息。
- 执行以下命令,创建配置文件。
vim compare.json
- 输入以下内容。如果是单图只需配置npu_path,如果是双图则需要增加配置bench_path。
{ "npu_path": "./dump_path/step50/rank0/", "bench_path": "./dump_path_gpu/step50/rank0/", "is_print_compare_log": true }
- 保存文件后,执行以下命令生成图文件。
msprobe -f pytorch graph -i ./compare.json -o ./output
生成的图结构文件后缀为.vis,示例如下:
图2 生成图结构文件示例
步骤三:使用TensorBoard可视化展示
参照在JupyterLab中使用TensorBoard可视化作业创建Tensorboard环境。在步骤二:上传Summary数据时,将上一步生成的.vis模型结构文件上传到环境中。
- 上传好文件后,配置文件所在路径到Log Dir,单击“Create Tensorboard”创建Tensorboard实例。
图3 创建Tensorboard实例
- TensorBoard实例启动后,为了便于全屏显示相关信息,获得更好的展示效果,建议单击下图的全屏展示按钮,在浏览器新页签打开全屏窗口展示。
图4 全屏展示
- 模型结构图展示在“GRAPH_ASCEND”页签下。双击具体的模型名称(例如下图的“DefaultModel”),可以展开模型的图结构,查看详情。
图5 展开模型的图结构
图中会根据精度误差的大小给节点标识不同的颜色,红色节点通常标明疑似有非预期误差。您可以双击节点名称,在下方列表会列举出精度详细对比数据,包括目标节点数据和标杆节点数据,查看详细数据做进一步人工判断。
图6 查看详细对比数据
关于该插件的更多使用介绍,请参见昇腾指导文档。