下载
中文
注册

准备GPU侧npy数据文件

前提条件

  • 在进行TensorFlow 2.x原始网络训练获取npy或dump数据前,要求有一套完整、可执行的标准TensorFlow模型训练工程。GPU训练环境准备可以参考在ECS上快速创建GPU训练环境,链接内容仅供参考,请以实际训练场景为准。
  • 参见tfdbg_ascend工具的readme文档安装TensorFlow 2.x的debug工具tfdbg_ascend。
  • 首先要把脚本中所有的随机全部关闭,包括但不限于对数据集的shuffle,参数的随机初始化,以及某些算子的隐形随机初始化(比如dense算子),确认自己脚本内所有参数均非随机初始化。

生成npy数据文件

利用TensorFlow的debug工具tfdbg_ascend生成npy文件。详细的操作方法如下:

  1. 修改TensorFlow训练脚本,在调起模型部分的训练脚本.py文件中修改配置。示例代码如下。

    样例一:

    1. 导入debug插件。
      import tfdbg_ascend as dbg
    2. 在每个step训练启动代码前配置如下代码,例如dump第5个step的数据。
            tfdbg.disable()
            if current_step == 5: 
              tfdbg.enable()
              tfdbg.set_dump_path('home/test/gpu_dump')
    样例二:
    1. 导入debug插件。
      import tfdbg_ascend as dbg
    2. 例如dump第4个step的数据。dbg.enable不配置时,dump功能默认开启;dump路径不指定时,dump文件默认保存在训练脚本所在路径下。
      class DumpConfig(tf.keras.callbacks.Callback):
          def __init__(self):
              super().__init__()
          def on_batch_begin(self, batch, logs={}):
              if batch == 4:
                  dbg.enable()
                  dbg.set_dump_path("/user/name1/pip_pkg/dump4")
              else:
                  dbg.disable()
    3. 注册回调函数(define callbacks )。
      # define callbacks
              callbacks = [
                  ModelCheckpoint(
                      f'models/model_epochs-{epochs}_batch-{batch_size}_loss-{loss_function}_{Mask2FaceModel.get_datetime_string()}.h5'),
                  LossHistory(batch_size),
                  DumpConfig()
              ]
      	
      # fit the model 调起模型的代码位置
      history = self.model.fit(train_dataset, validation_data=valid_dataset, epochs=1, callbacks=callbacks, verbose=2)
  2. 执行训练脚本,训练任务停止后,在指定目录下生成*.npy文件。
  3. 检查生成的npy文件命名是否符合{op_name}.{output_index}.{timestamp}.npy格式,如图1所示。
    • 如果因算子名较长,造成按命名规则生成的npy文件名超过255字符而产生文件名异常,这类算子不支持精度比对。
    • 因tfdbg自身原因或运行环境原因,可能存在部分生成的npy文件名不符合精度比对要求,请按命名规则手工重命名。如果不符合要求的npy文件较多,请参见批量处理生成的npy文件名异常情况重新生成npy文件。
    • npy文件命名各字段详细介绍请参见数据格式要求
    图1 查询.npy文件