指定DataFlow节点部署位置
功能介绍
支持使用配置文件指定DataFlow图节点部署位置。该功能可以实现多卡多实例。分摊计算量,提升性能。
使用约束
- 指定部署时必须指定所有节点的部署位置。
 - 根据AddGraph的options参数中的ge.experiment.data_flow_deploy_info_path指定部署配置文件,文件必须存在并且格式正确,具体格式要求请参见配置文件格式。
 - 部署位置必须与节点实际可部署位置一致,比如UDF如果只支持编译Host发布件,就不能指定部署到Device,同样如果节点只能部署到Device,就不能指定部署到Host。
 - 同一个节点不能重复配置。
 - 同一个节点不支持同时部署在Host和Device。
 
使用方法
使用示例如下。
         1 2 3 4 5 6 7 8  | 
        
         flow_node0 = df.FlowNode(input_num=1, output_num=2) flow_node0_out = flow_node0(data0) # 构建FlowGraph,此处着重体现option使用,实际构造dataflow graph请参考其他章节 options = { "ge.experiment.data_flow_deploy_info_path":"./data_flow_deploy_info.json" } dag = df.FlowGraph([out for out in flow_node0_out], options)  | 
       
配置文件格式
           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 32 33 34 35 36  | 
          
           { "keep_logic_device_order": false, "batch_deploy_info": [ { "flow_node_list": ["flowNode1", "flowNode2"], "logic_device_list": "0:0:-1:0" }, { "flow_node_list": ["flowNode3"], "logic_device_list": "0:0:1:1" }, { "flow_node_list": ["flowNode4"], "logic_device_list": "0:0:0:0,0:0:1:0", "invoke_list":[ { "invoke_name":"invoked_flow_graph_name", "deploy_info_file":"./data_flow_invoke_flow_graph_deploy_info.json" }, { "invoke_name":"invoked_flow_graph_name1", "logic_device_list": "0:0:0:0" }] }, { "flow_node_list": ["flowNode5", "flowNode6"], "logic_device_list": "0:0:2~3:0~1" }, { "flow_node_list": ["flowNode7", "flowNode8"], "logic_device_list": "0:0:0~1:0,0:0:2:1" } ] }  | 
         
| 
          配置项  | 
        
          配置说明  | 
       ||
|---|---|---|---|
| 
          keep_logic_device_order  | 
        
          是否按照用户配置的device_list顺序部署实例。 取值如下: 
 默认值:false。  | 
       ||
| 
          batch_deploy_info  | 
       |||
| 
          flow_node_list  | 
        
          FlowNode节点名列表,支持一个或者多个,多个时使用半角逗号分割。  | 
       ||
| 
          logic_device_list  | 
        
          DataFlow图节点部署位置。 格式为:clusterid:serverid:deviceid:numaid(pgid/dieid),各字段含义如下: 
 典型场景如下。 
          FunctionPp的heavy_load=true时,会部署到指定节点对应的Host节点。当部署到多个Device时,按照如下进行配置:
           
         
 
           说明: 
           当FlowNode为调用子FlowGraph的父节点时,则不能配置多实例。  | 
       ||
| 
          invoke_list(可选,不配置的情况下,子图部署节点与父节点部署节点一致)  | 
       |||
| 
          invoke_name  | 
        
          FlowNode节点嵌套的InvokedClosure的name,对应为AddInvokedClosure接口的参数:name。  | 
       ||
| 
          deploy_info_file  | 
        
          通过该配置项指定DataFlow子图节点部署位置,当invoke_name对应的InvokedClosure为DataFlow子图,可配置DataFlow子图对应的部署位置文件,例如./data_flow_invoke_flow_graph_deploy_info.json,该文件中包含的字段和格式要求请参考data_flow_deploy_info.json。  | 
       ||
| 
          logic_device_list  | 
        
          通过该配置项指定DataFlow子图或者AscendGraph子图节点部署位置,配置方式同batch_deploy_info中的logic_device_list。 对同一个子图节点,logic_device_list和deploy_info_file不可以同时配置,否则会报错。 对AscendGraph子图节点,logic_device_list和父节点的logic_device_list实例数需要相同,否则会报错。  | 
       ||
