编译并运行Graph场景

功能介绍

当前系统支持在用户脚本中指定配置动态档位信息,从而支持动态输入的场景。

编译并运行Graph场景的动态分档当前仅支持整图分档:使用session参数设置分档信息,输入可以为dataset方式、placeholder方式,或者两种混合方式。对于混合输入,当前仅支持其中一种为动态变化的场景。

支持的产品型号

Atlas 推理系列产品(Ascend 310P处理器)

Atlas 训练系列产品

Atlas A2训练系列产品

使用方法

  1. 在Data算子定义时,将数据shape的动态维度设置为-1:
    1
    2
    3
    4
    5
        auto shape_data = vector<int64_t>({ 1,-1,-1 });
        TensorDesc desc_data(ge::Shape(shape_data), FORMAT_ND, DT_FLOAT);
        auto data = op::Data("data");
        data.update_input_desc_data(desc_data);
        data.update_output_desc_out(desc_data);
    
  2. 编译并运行Graph时,在Session接口和AddGraph接口的options中设置ge.inputShape/ge.dynamicNodeType信息,同时通过ge.dynamicDims指定档位信息。
    • ge.inputShape可选设置。如果不设置,系统直接读取对应Data节点的shape信息,如果设置,以此处设置的为准,同时刷新对应Data节点的shape信息。
    • 整图分档时,用户在脚本中设置的ge.inputShape的输入顺序要和实际data节点的name字母序保持一致,比如有三个输入:label、data、mask,则

      ge.inputShape输入顺序应该为data、label、mask:

      "data:1,1,40,-1;label:1,-1;mask:-1,-1"
    1
    2
    3
    4
    5
    6
    7
    std::map<std::string, std::string> options = {{"ge.inputShape", ""data:1,1,40,-1;label:1,-1;mask:-1,-1""}, 
                                                 {"ge.dynamicDims", "20,20,1,1;40,40,2,2;80,60,4,4"}, 
                                                 {"ge.dynamicNodeType", "1"}};
    //分档参数添加到session
    ge::Session *session = new ge::Session(options);
    //分档参数添加到graph
    session->AddGraph(graph_id, graph, options);