编译Graph为离线模型场景

功能介绍

用户可以在模型构建时,设置ND格式下动态维度的档位。适用于执行推理时,每次处理任意维度的场景。

支持的产品型号

Atlas 200/300/500 推理产品

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

Atlas 训练系列产品

Atlas 200/500 A2推理产品

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. 模型编译时,在aclgrphBuildModel接口options中设置INPUT_SHAPE/INPUT_FORMAT信息,同时通过DYNAMIC_DIMS指定档位信息。
    • INPUT_FORMAT必须设置并且和所有Data算子的format保持一致,且仅支持ND,否则会导致模型编译失败。
    • INPUT_SHAPE可选设置。如果不设置,系统直接读取对应Data节点的shape信息,如果设置,以此处设置的为准,同时刷新对应Data节点的shape信息。
    1
    2
    3
    4
    5
    6
    7
    void PrepareOptions(std::map<std::string, std::string>& options) {
        options.insert({
            {ge::ir_option::INPUT_FORMAT, "ND"},             
            {ge::ir_option::INPUT_SHAPE, "data:1,-1,-1"},   
            {ge::ir_option::DYNAMIC_DIMS, "1,2;3,4;5,6;7,8"}  // 模型编译时,支持的data算子的shape为1,1,2; 1,3,4; 1,5,6; 1,7,8
        });
    }
    

使用注意事项