开发者将TensorFlow源码与业务代码同时编译使用的场景下,文档中提供的基于Python将TensorFlow脚本迁移到NPU执行训练的方法则不再适用。此处给用户提供了一种在TensorFlow源码层面适配使用NPU设备的方法(此方法仅供参考)。
以gcc为例,“/usr/local/python3.7.5/lib/python3.7/site-packages/npu_device/compat/v1/_tf_adapter.so”和"/usr/local/python3.7.5/lib/python3.7/site-packages/npu_device/_npu_ops.so"为此so的存储路径,使用方法如下:
TensorFlow的SessionOptions变量可以通过以下代码获取:
1 | tensorflow::SessionOptions sessOpts = tensorflow::SessionOptions(); |
修改SessionOptions,增加如下内容:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | auto *custom_op = sessOpts.config.mutable_graph_options()->mutable_rewrite_options()->add_custom_optimizers(); custom_op->set_name("NpuOptimizer"); AttrValue value_bool; value_bool.set_b(true); custom_op->mutable_parameter_map()->insert({"use_off_line", value_bool}); AttrValue value_string; value_string.set_s(std::string("force_fp16")); custom_op->mutable_parameter_map()->insert({"precision_mode", value_string}); AttrValue value_int; value_int.set_i(0); custom_op->mutable_parameter_map()->insert({"graph_run_mode", value_int}); sessOpts.config.mutable_graph_options()->mutable_rewrite_options()->set_remapping(RewriterConfig::OFF); sessOpts.config.mutable_graph_options()->mutable_rewrite_options()->set_memory_optimization(RewriterConfig_MemOptType_MANUAL); |
source /usr/local/Ascend/ascend-toolkit/latest/bin/setenv.bash
后续,就可以在NPU上执行业务了。