除了通过AOE_MODE环境变量配置调优模式之外,还可以通过修改训练脚本方式,配置调优模式。同时配置的情况下,通过修改训练脚本方式优先生效。
1
|
export ASCEND_DEVICE_ID=0 # 通过该环境变量指定昇腾AI处理器的逻辑ID。取值范围[0,N-1],默认为0。其中N为当前物理机/虚拟机/容器内的设备总数。 |
参数 |
说明 |
||||
---|---|---|---|---|---|
aoe_mode |
必选参数。通过AOE工具进行调优的调优模式。
说明:
通过修改训练脚本和AOE_MODE环境变量都可配置调优模式,同时配置的情况下,通过修改训练脚本方式优先生效。 |
||||
work_path |
可选参数。AOE工具调优工作目录,存放调优配置文件和调优结果文件,默认生成在训练当前目录下。 该参数类型为字符串,指定的目录需要在启动训练的环境上(容器或Host侧)提前创建且确保安装时配置的运行用户具有读写权限,支持配置绝对路径或相对路径(相对执行命令行时的当前路径)。
配置示例:
|
||||
aoe_config_file |
可选参数。 通过配置文件可以实现如下功能:
配置示例:
文件后缀不局限于.cfg格式,文件内容须为json格式的文本,文件个数只支持单个。 /home/HwHiAiUser/cfg/tuning_config.cfg中配置的是需要进行调优的算子信息、调优模式、指定的调优功能。路径和.cfg文件的名字请根据实际情况修改。tuning_config.cfg包括的内容格式如下。
说明:
|
1 2 3 4 5 6 7 8 9 10 11 12 |
npu_init = npu_ops.initialize_system() npu_shutdown = npu_ops.shutdown_system() config = tf.ConfigProto() ... custom_op.parameter_map["aoe_mode"].s = tf.compat.as_bytes("2") ... with tf.Session(config=config) as sess: sess.run(npu_init) #调用HCCL接口... #执行训练... sess.run(npu_shutdown) |
1 2 3 4 5 |
import tensorflow as tf from npu_bridge.npu_init import * session_config=tf.ConfigProto() config = NPURunConfig(session_config=session_config, aoe_mode="2") |
1 2 3 4 5 6 7 8 |
import tensorflow as tf from npu_bridge.npu_init import * config = tf.ConfigProto() custom_op = config.graph_options.rewrite_options.custom_optimizers.add() custom_op.name = "NpuOptimizer" custom_op.parameter_map["aoe_mode"].s = tf.compat.as_bytes("2") config.graph_options.rewrite_options.remapping = RewriterConfig.OFF |
1 2 3 4 5 6 7 8 9 10 11 |
if __name__ == '__main__': session_config = tf.ConfigProto() custom_op = session_config.graph_options.rewrite_options.custom_optimizers.add() custom_op.name = "NpuOptimizer" custom_op.parameter_map["aoe_mode"].s = tf.compat.as_bytes("2") (npu_sess, npu_shutdown) = init_resource(config=session_config) tf.app.run() shutdown_resource(npu_sess, npu_shutdown) close_session(npu_sess) |
1 2 3 4 5 6 7 8 9 10 11 |
session_config = tf.ConfigProto(allow_soft_placement=True) custom_op = session_config.graph_options.rewrite_options.custom_optimizers.add() custom_op.name = 'NpuOptimizer' custom_op.parameter_map["aoe_mode"].s = tf.compat.as_bytes("2") run_config = tf.estimator.RunConfig( train_distribute=distribution_strategy, session_config=session_config, save_checkpoints_secs=60*60*24) classifier = tf.estimator.Estimator( model_fn=model_function, model_dir=flags_obj.model_dir, config=npu_run_config_init(run_config=run_config)) |
1 2 3 4 5 6 7 8 9 10 11 |
session_config = tf.ConfigProto() custom_op = session_config.graph_options.rewrite_options.custom_optimizers.add() custom_op.name = 'NpuOptimizer' custom_op.parameter_map["aoe_mode"].s = tf.compat.as_bytes("2") run_config = tf.estimator.RunConfig( train_distribute=distribution_strategy, session_config=session_config, save_checkpoints_secs=60*60*24) classifier = tf.estimator.Estimator( model_fn=model_function, model_dir=flags_obj.model_dir, config=npu_run_config_init(run_config=run_config)) |
对于sess.run模式的训练脚本:在脚本中找到“npu_config_proto”,并配置调优参数。
1 2 3 |
with tf.Session(config=npu_config_proto()) as sess: sess.run(tf.global_variables_initializer()) interaction_table.init.run() |
1 2 3 4 5 6 7 8 |
config_proto = tf.ConfigProto() custom_op = config_proto.graph_options.rewrite_options.custom_optimizers.add() custom_op.name = 'NpuOptimizer' custom_op.parameter_map["aoe_mode"].s = tf.compat.as_bytes("2") config = npu_config_proto(config_proto=config_proto) with tf.Session(config=config) as sess: sess.run(tf.global_variables_initializer()) interaction_table.init.run() |