文档
注册

溢出检测场景

若用户在训练过程中怀疑网络存在溢出问题,常见现象为loss scale不更新,用户可以使用溢出检测。具体操作步骤如下。

  1. 参考工具安装,完成ptdbg_ascend组件包安装。在训练脚本中导入精度工具包,使能精度工具溢出定位。
    from ptdbg_ascend import register_hook, overflow_check, seed_all, set_dump_path, set_dump_switch, acc_cmp_dump
  2. 在模型定义后,训练循环开始前,添加溢出检测函数。
    1. 进行全量溢出检测。
      from ptdbg_ascend import register_hook, overflow_check, seed_all, set_dump_path, set_dump_switch, acc_cmp_dump
      seed_all()
      ...
      # 设置dump路径,最终数据保存在此路径下
      set_dump_path("./data/dump", dump_tag='npu_overflow')  
      
      # 使能溢出检测  
      register_hook(model, overflow_check, overflow_nums=1)    
      
      ...
  3. 执行训练,dump溢出数据。若有溢出,则会抛出异常并结束训练。溢出相关回显信息如图图1图2所示。
    其中,图1中包含溢出api的堆栈信息,并提示了溢出数据的存盘位置
    图1 有溢出回显
    图2 无溢出回显
    溢出检测dump场景下,若检测到API溢出,此时不需要配置set_dump_path,dump执行时会在当前目录自动生成ptdbg_dump_{version}目录,dump结果如下:
    • Overflow_info_{timestamp}.pkl。
    • Overflow_info_{timestamp}目录。
  4. 此时溢出结果可能过过程溢出,需参见数据dump比对场景对比此API在NPU和GPU上的精度是否一致,若不一致则表示存在精度溢出问题,需联系华为工程师解决。若精度数据一致,表示此溢出不影响整网精度。
搜索结果
找到“0”个结果

当前产品无相关内容

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