文档
注册

使用约束

iterations_per_loop是针对一次session.run调用,在Device侧执行训练迭代的次数。Device侧会运行iterations_per_loop指定的迭代次数,然后再返回到Host侧,该参数可以减少Host与Device间的交互次数,缩短训练时长。

iterations_per_loop默认为1,配置该参数大于1即可使能训练迭代循环下沉的特性,但使用该特性时需要注意以下约束:

  • 要求训练脚本必须使用TensorFlow的Dataset方式读数据,并且不使用one shot iterator进行预处理初始化,例如使用tf.data.make_initializable_iterator()迭代器。使用DataSet方式读取数据是数据预处理下沉与训练迭代循环下沉的前提条件,关于Datasets的详细使用方法可参见TensorFlow官网
  • 要求开启数据预处理下沉,即enable_data_pre_proc开关配置为True,此时才会生成在Device侧执行的getnext算子,训练迭代循环下沉才会生效。
    • sess.run开启数据预处理下沉配置示例:
      custom_op.parameter_map["enable_data_pre_proc"].b = True 
    • NPURunConfig开启数据预处理下沉配置示例:
      config = NPURunConfig(enable_data_pre_proc=True)
  • 要求训练迭代总次数必须为iterations_per_loop的整数倍。
  • 训练迭代循环下沉场景下保存checkpoint数据时,要求save_checkpoints_steps必须大于或等于iterations_per_loop,且是iterations_per_loop的整数倍,否则不会按照save_checkpoints_steps配置的值保存数据。且iterations_per_loop>1时,可能无法按照save_summary_steps和log_step_count_steps配置的值保存信息,请参考Log/Summary实现信息保存。
  • 混合计算模式(mix_compile_mode为True)下,不能开启训练迭代循环下沉,即要求iterations_per_loop必须为1。
  • 在网络调测阶段建议设置iterations_per_loop为1,方便打印每轮迭代的日志信息。网络调通后可以设置iterations_per_loop参数用于缩短训练时长。
搜索结果
找到“0”个结果

当前产品无相关内容

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