下载
中文
注册

构建图(FlowGraph)

功能介绍

用户使用创建好的FlowData和FlowNode,创建一个FlowGraph实例,并在FlowGraph中设置输入、输出,从而完成Graph构建。

定义节点

  1. 包含的模块。
    1
    import dataflow as df
    
  2. 系统初始化,申请资源。
    1
    2
    3
    4
    5
    6
    7
    8
    # dataflow 初始化参数按需设置
    options = {
        "ge.exec.deviceId":"0",
        "ge.exec.logicalDeviceClusterDeployMode":"SINGLE",
        "ge.exec.logicalDeviceId":"[0:0]",
        "ge.socVersion": "AscendXXX", # 必须设置的参数
    }
    df.init(options)
    
  3. 定义节点,支持如下两种类型。
    • FlowData
      1
      2
      3
      # 定义输入
      data0 = df.FlowData()
      data1 = df.FlowData()
      
    • FlowNode
      1
      flow_node0 = df.FlowNode(input_num=2, output_num=1)
      

      图中的data名称和node名称必须唯一

  4. 定义PP实例并添加在flownode中。
    • GraphProcessPoint
      1
      2
      3
      pp1 = df.GraphProcessPoint(df.Framework.TENSORFLOW, "./add.pb", load_params={"input_data_names":"Placeholder,Placeholder_1"},compile_config_path='config/add_graph_config.json')
      flow_node0 = df.FlowNode(input_num=2, output_num=1)
      flow_node0.add_process_point(pp1)
      
    • FuncProcessPoint
      1
      2
      3
      pp0 = df.FuncProcessPoint(compile_config_path='config/add_func_config.json', name="func_pp")
      flow_node0 = df.FlowNode(input_num=2, output_num=1)
      flow_node0.add_process_point(pp0)
      

节点间的连接边表达

节点之间的连边为数据边。数据边用于指定节点的输入。数据边表达如下。

上图的示例代码和注释如下。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
# 定义输入
data0 = df.FlowData()
data1 = df.FlowData()
flow_node0 = df.FlowNode(input_num=2, output_num=1)
flow_node1 = df.FlowNode(input_num=1, output_num=1)
flow_node2 = df.FlowNode(input_num=1, output_num=1)
# 构建连边关系
flow_node0_out = flow_node0(data0, data1)
flow_node1_out = flow_node1(flow_node0_out)
flow_node2_out = flow_node2(flow_node0_out)

创建FlowGraph实例

完成节点连边后,需要创建FlowGraph实例,主要过程为:

  1. 包含的模块。
    1
    import dataflow as df
    
  2. 创建FlowGraph对象。
    1
    2
    # 构建FlowGraph
    dag = df.FlowGraph([flow_node2_out])
    

    相关接口请参考dataflow.FlowGraph