准备基于GPU运行生成的TensorFlow 2.x原始训练网络npy数据文件

前提条件

生成npy数据文件

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

  1. 修改tf训练脚本,在调起模型部分的训练脚本.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文件命名是否符合规则,如图1所示。

    • npy文件命名规则:{op_name}.{output_index}.{timestamp}.npy,其中op_name字段需满足“A-Za-z0-9_-”正则表达式规则,timestamp需满足[0-9]{1,255}正则表达式,output_index为0~9数字组成。
    • 如果因算子名较长,造成按命名规则生成的npy文件名超过255字符而产生文件名异常,这类算子不支持精度比对。
    • 因tfdbg自身原因或运行环境原因,可能存在部分生成的npy文件名不符合精度比对要求,请按命名规则手工重命名。如果不符合要求的npy文件较多,请参考如何批量处理生成的npy文件名异常情况重新生成npy文件。
    图1 查询.npy文件