DataFlow离线编译
功能介绍
DataFlow离线编译是指在开发环境编译,在运行环境上加载和部署,从而实现编译和建链解耦。
使用约束
无
使用方法
- 开启图编译缓存。示例如下。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
# 初始化 SOC_VERSION = os.getenv('SOC_VERSION', 'AscendXXX') options = { "ge.exec.deviceId":"0", "ge.exec.logicalDeviceClusterDeployMode":"SINGLE", "ge.exec.logicalDeviceId":"[0:0]", "ge.socVersion": SOC_VERSION, # 运行环境的SOC_VERSION,必须设置的参数 "ge.graph_compiler_cache_dir":"./build_cache_dir", "ge.runFlag":"0" } df.init(options) flow_node0 = df.FlowNode(input_num=1, output_num=2) flow_node0_out = flow_node0(data0) # 构建FlowGraph,此处着重体现option使用,实际构造dataflow graph请参考其他章节 options = { "ge.graph_key":"test_graph_00" } dag = df.FlowGraph([out for out in flow_node0_out], options) flow_node0 = df.FlowNode(input_num=1, output_num=2) flow_node0_out = flow_node0(data0) # 构建FlowGraph options = { "ge.graph_compiler_cache_dir":"./build_cache_dir", "ge.graph_key":"test_graph_00" } dag = df.FlowGraph([out for out in flow_node0_out], options)
- 配置开发环境。如果目标执行环境为Atlas A2训练系列产品/Atlas 800I A2推理产品,需要配置目标执行环境的numa.config json文件,使用环境变量RESOURCE_CONFIG_PATH进行设置。示例如下:
export RESOURCE_CONFIG_PATH=numa_config.json
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
{ "host":{ "resourceType": "X86", ......... "devList":[ { "ipaddr":"XX.XX.XX.XX", "port":2509, "deviceIdList":[0,1], "resourceType":"Ascend", "token":"OKIJBNHYGFVT7RGH", "chip_count":2, } ], }
表1 参数解释 参数名
含义
resourceType
可选,资源类型,可以取值为Ascend。需要与实际部署的运行环境中的resourceType保持一致。
chip_count
必选,加速卡的数量。需要与实际部署的运行环境数量保持一致。如果不一致,系统做如下处理。
- chip_count>实际部署的运行环境数量时,部署阶段报错。
- chip_count<实际部署的运行环境数量且负载均衡未指定部署位置,则模型按照编译阶段负载均衡方案部署,运行环境多出的设备不进行部署。
不配置时离线功能不生效。
- 图生成。
- 调用feed_data接口进行图编译,生成缓存文件。示例如下。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
graph_options = {"ge.graph_key" : "key"} # 构建FlowGraph dag = df.FlowGraph([flow_node2_out], graph_options) # feed data feed_data0 = np.ones([1,2], dtype=np.int32) feed_data1 = np.array([[1,2]], dtype=np.int32) flow_info = df.FlowInfo() flow_info.start_time = 0 flow_info.end_time = 5 dag.feed_data({data0:feed_data0, data1:feed_data1}, flow_info) # 异步喂数据 # feed_data接口涉及图编译和加载,如果设置ge.runFlag为0,则只进行图编译: graph_options = {"ge.graph_key" : "key", "ge.runFlag": "0"}
- 离线部署。
将开发环境中graph_compiler_cache_dir路径下的模型缓存文件、索引文件和变量格式文件拷贝到运行环境的graph_compiler_cache_dir路径。具体文件请参考缓存文件生成规则。
Atlas A2训练系列产品/Atlas 800I A2推理产品下的约束条件如下:
执行环境的numa config需要和编译时候保持一致,ipaddr字段除外。
- 调用feed_data接口进行图编译,生成缓存文件。
父主题: 专题