initialize_system
产品支持情况
产品  | 
是否支持  | 
|---|---|
√  | 
|
x  | 
|
x  | 
|
√  | 
|
√  | 
|
x  | 
 针对
功能说明
一般执行训练不需要调用该接口,如果用户统计训练时间时不想包括GE初始化时间,可以使用该接口。使用集合通信接口时,需要先调用该接口进行集合通信初始化。
函数原型
1 | def initialize_system(name = None)  | 
参数说明
参数名  | 
输入/输出  | 
描述  | 
|---|---|---|
name  | 
输入  | 
算子名称。  | 
返回值
返回一个op,供用户通过sess.run(op)完成GE初始化。
约束说明
如果需要调用initialize_system接口,且训练执行时需要使能如下功能时,则必须在initialize_system起session时配置。
配置项  | 
说明  | 
|---|---|
profiling_mode  | 
是否开启Profiling功能。 
  | 
profiling_options  | 
Profiling采集选项,取值如下。 
  说明:  
  | 
enable_dump  | 
是否开启Data Dump功能,默认值:False。 
  说明:  
  | 
dump_path  | 
Dump文件保存路径。enable_dump或enable_dump_debug为true时,该参数必须配置。 该参数指定的目录需要在启动训练的环境上(容器或Host侧)提前创建且确保安装时配置的运行用户具有读写权限,支持配置绝对路径或相对路径(相对执行命令行时的当前路径)。 
  | 
dump_step  | 
指定采集哪些迭代的Data Dump数据。默认值:None,表示所有迭代都会产生dump数据。 多个迭代用“|”分割,例如:0|5|10;也可以用"-"指定迭代范围,例如:0|3-5|10。  | 
dump_mode  | 
Data Dump模式,用于指定dump算子输入还是输出数据。取值如下: 
  说明:  
配置为all时,由于部分算子在执行过程中会修改输入数据,例如集合通信类算子HcomAllGather、HcomAllReduce等,因此系统在进行dump时,会在算子执行前dump算子输入,在算子执行后dump算子输出,这样,针对同一个算子,算子输入、输出的dump数据是分开落盘,会出现多个dump文件,在解析dump文件后,用户可通过文件内容判断是输入还是输出。  | 
enable_dump_debug  | 
是否开启溢出检测功能,默认值:False。 
  | 
dump_debug_mode  | 
溢出检测模式,取值如下: 
  | 
precision_mode  | 
算子精度模式,配置要求为string类型。 
 针对 针对  | 
graph_run_mode  | 
图执行模式,取值: 
  | 
op_debug_level  | 
算子debug功能开关,取值: 
  | 
enable_exception_dump  | 
是否dump异常算子数据。 
  说明:  
若配置了环境变量NPU_COLLECT_PATH,不论配置项“enable_exception_dump”的取值如何,都按照“1:普通ExceptionDump”进行异常算子数据dump,且dump数据存储在环境变量NPU_COLLECT_PATH的指定目录下。  | 
op_select_implmode  | 
昇腾AI处理器部分内置算子有高精度和高性能实现方式,用户可以通过该参数配置模型编译时选择哪种算子。取值包括: 
  | 
optypelist_for_implmode  | 
列举算子optype的列表,该列表中的算子使用op_select_implmode参数指定的模式,当前支持的算子为Pooling、SoftmaxV2、LRN、ROIAlign,多个算子以英文逗号分隔。 该参数需要与op_select_implmode参数配合使用,例如: op_select_implmode配置为high_precision。 optypelist_for_implmode配置为Pooling。 默认值为空,代表不使能此配置。  | 
调用示例
如果在sess.run或者estimator.train之前调用get_local_rank_id/get_rank_size/get_rank_id等HCCL接口,需要先另起session执行initialize_system,进行集合通信初始化,然后在训练结束后执行shutdown_system,同时关闭session。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20  | 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()  | 
或者:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17  | 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)  |