文档
注册

PrecisionDebugger功能使用

以resnet18网络模型为例,介绍通过PrecisionDebugger使能精度比对工具的方法。该模型参考了PyTorch官方教程的实现,随机生成伪训练数据进行数个迭代的梯度下降,当前脚本已完成工具代码的添加,仅作为学习精度比对工具素材使用。

  1. 参见工具安装完成精度比对工具安装。
  2. 参见代码样例准备模型代码并将代码上传至服务器任意目录,例如“/home/resnet”。
  3. 打开模型训练脚本,导入精度比对工具。
    cd /home/resnet && vi ddp_basic.py

    导入精度比对工具。

    import torch 
    import torch_npu 
    ...
    from ptdbg_ascend import PrecisionDebugger as PD
  4. 初始化PrecisionDebugger为dump功能。
    import torch 
    import torch_npu 
    ...
    from ptdbg_ascend import PrecisionDebugger as PD
    #dump
    debugger = PD(dump_path="./NPU_dump_path", hook_name="dump", step=[0], enable_dataloader=True)  

    在使用GPU与NPU训练分别训练时,请修改dump_path以区分路径,例如NPU训练时,dump_path为“./NPU_dump_path”。

    代码框中加粗代码初始化了PrecisionDebugger并设置了数据存盘路径(dump_path)为当前目录下的dump_path文件夹,设置PrecisionDebugger为dump功能,配置step=[0]表示需要捕获模型数据的迭代为第0个迭代,配置enable_dataloader=True表示启用通过dataloader自动控制数据捕获开关,完整参数说明请参见表1

  5. 执行命令启动训练。
    • NPU训练:
      python ddp_basic_main.py 8 

      8表示训练所用卡数。

    • GPU训练:
      python ddp_basic_main.py 8

      需注释掉NPU自动迁移相关代码,进行训练。

    可在打屏日志中查看回显,显示以下内容即表示已开启dump自动开启和关闭功能。

    [INFO]Dump switch is turned on. Dump data will be saved to /home/resnet/dump_path/ptdbg_dump_v3.2
    [INFO]Dump switch is turned off.

    由于在初始化时PrecisionDebugger时启用了enable_dataloader选项,如果不配置enable_dataloader,则需要调用PrecisionDebugger.start()和PrecisionDebugger.stop()手动启停开关。

    在开关关闭后,工具会自动停止训练,并显示以下内容。

    ptdbg: exit after step [0]

    此时可进入dump路径查看采集的数据。

    启用enable_dataloader在个别特殊场景可能会失效,导致工具只能捕获到部分rank的数据,这种场景用户需要设置enable_dataloader=False,并在训练工程中添加PrecisionDebugger.start(), PrecisionDebugger.stop()手动启停开关。PrecisionDebugger.start()即为启动工具Dump开关,常写在训练迭代开始时,PrecisionDebugger.stop()即为关闭工具Dump开关,常写在step结束的时候。

搜索结果
找到“0”个结果

当前产品无相关内容

未找到相关内容,请尝试其他搜索词