def initialize_system(name = None)
一般执行训练不需要调用该接口,如果用户统计训练时间时不想包括GE初始化时间,可以使用该接口。使用集合通信接口时,需要先调用该接口进行集合通信初始化。
如果需要调用initialize_system接口,且训练执行时需要使能如下功能时,则必须在initialize_system起session时配置。
配置项 |
说明 |
---|---|
profiling_mode |
是否开启Profiling功能。
|
profiling_options |
Profiling采集选项,取值如下。
支持采集多项数据,多个采集项中间用冒号分开,例如配置为"traing_trace:task_trace”。
说明:
|
fp_point |
开启Profiling功能采集迭代轨迹数据时,需要配置。 指定训练网络迭代轨迹正向算子的开始位置,用于记录前向计算开始时间戳。 配置值为指定的正向第一个算子名字。用户可以在训练脚本中,通过tf.io.write_graph将graph保存成.pbtxt文件,并获取文件中的name名称填入。 |
bp_point |
开启Profiling功能采集迭代轨迹数据时,需要配置。 指定训练网络迭代轨迹反向算子的结束位置,记录后向计算结束时间戳,BP_POINT和FP_POINT可以计算出正反向时间。 配置值为指定的反向最后一个算子名字。用户可以在训练脚本中,通过tf.io.write_graph将graph保存成.pbtxt文件,并获取文件中的name名称填入。 |
enable_dump |
是否开启Data Dump功能,默认值:False。
|
dump_path |
Dump文件保存路径。enable_dump为true时,该参数必须配置。 该参数指定的目录需要在启动训练的环境上(容器或Host侧)提前创建且确保安装时配置的运行用户具有读写权限,支持配置绝对路径或相对路径(相对执行命令行时的当前路径)。
|
dump_step |
指定采集哪些迭代的Data Dump数据。默认值:None,表示所有迭代都会产生dump数据。 多个迭代用“|”分割,例如:0|5|10;也可以用"-"指定迭代范围,例如:0|3-5|10。 |
dump_mode |
Data Dump模式,用于指定dump算子输入还是输出数据。取值如下:
|
enable_dump_debug |
当前版本暂不支持。 |
dump_debug_mode |
当前版本暂不支持。 |
precision_mode |
算子精度模式,配置要求为string类型。
|
auto_tune_mode |
用户可以控制TBE算子编译时,是否通过Auto Tune工具对算子进行调优,以便在昇腾AI处理器上寻找最好的性能配置。 配置示例:"RL,GA";若未配置该参数,则自动关闭自动调优功能。 关于Auto Tune工具的介绍和使用方法请参见《CANN 开发工具指南》中的“Auto Tune工具使用指南”章节。 |
graph_run_mode |
图执行模式,取值:
|
op_debug_level |
算子debug功能开关,取值:
|
enable_exception_dump |
是否Dump AI Core Error算子的输入和输出信息,dump信息生成在当前脚本执行目录。
|
op_select_implmode |
昇腾AI处理器部分内置算子有高精度和高性能实现方式,用户可以通过该参数配置模型编译时选择哪种算子。取值包括:
|
optypelist_for_implmode |
列举算子optype的列表,该列表中的算子使用OP_SELECT_IMPL_MODE参数指定的模式,当前仅支持Pooling算子。 该参数需要与OP_SELECT_IMPL_MODE参数配合使用,例如: op_select_implmode配置为high_precision。 optypelist_for_implmode配置为Pooling。 |
参数名 |
输入/输出 |
描述 |
---|---|---|
name |
输入 |
算子名称。 |
返回一个op,供用户通过sess.run(op)完成GE初始化。
如果在sess.run或者estimator.train之前调用get_local_rank_id/get_rank_size/get_rank_id等HCCL接口,需要先另起session执行initialize_system,进行集合通信初始化,然后在训练结束后执行shutdown_system,同时关闭session。
import tensorflow as tf from npu_bridge.npu_init import * npu_int = npu_ops.initialize_system() npu_shutdown = npu_ops.shutdown_system() config = tf.ConfigProto() custom_op = config.graph_options.rewrite_options.custom_optimizers.add() custom_op.name = "NpuOptimizer" custom_op.parameter_map["use_off_line"].b = True config.graph_options.rewrite_options.remapping = RewriterConfig.OFF config.graph_options.rewrite_options.memory_optimization = RewriterConfig.OFF init_sess = tf.Session(config=config) init_sess.run(npu_int) #调用HCCL接口... #执行训练... init_sess.run(npu_shutdown) init_sess.close()
或者:
import tensorflow as tf from npu_bridge.npu_init import * npu_init = npu_ops.initialize_system() npu_shutdown = npu_ops.shutdown_system() config = tf.ConfigProto() custom_op = config.graph_options.rewrite_options.custom_optimizers.add() custom_op.name = "NpuOptimizer" custom_op.parameter_map["use_off_line"].b = True config.graph_options.rewrite_options.remapping = RewriterConfig.OFF config.graph_options.rewrite_options.memory_optimization = RewriterConfig.OFF with tf.Session(config=config) as sess: sess.run(npu_init) #调用HCCL接口... #执行训练... sess.run(npu_shutdown)