---
title: 编译Graph为离线模型场景
description: "当前系统支持在接口中配置动态维度信息，从而支持动态输入的场景。本节将给出详细说明。"
url: https://www.hiascend.com/document/detail/zh/canncommercial/latest/programug/graphdevg/atlasag_25_0052.html
sourcePath: /source/zh/canncommercial/900/programug/graphdevg/atlasag_25_0052.html
indexId: e10fddb6273bc1485cde40e2f5d77b7fb22987b00f8cd5a3908663506c50c43970
---
# 编译Graph为离线模型场景

当前系统支持在接口中配置动态维度信息，从而支持动态输入的场景。本节将给出详细说明。

#### 功能介绍

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


#### 使用方法

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参数必须设置。

  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 }); }


#### 使用注意事项

- 该功能不能和动态batch_size、动态分辨率、AIPP功能同时使用。
- 参数通过"dim1,dim2,dim3;dim4,dim5,dim6;dim7,dim8,dim9"的形式设置，所有档位必须放在双引号中，每档中间使用英文分号分隔，每档中的dim值与INPUT_SHAPE参数中的-1标识的参数依次对应，INPUT_SHAPE参数中有几个-1，则每档必须设置几个维度。例如：
  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,40,-1;label:1,-1;mask:-1,-1"}, {ge::ir_option::DYNAMIC_DIMS, "20,20,1,1;40,40,2,2;80,60,4,4"} }); }

  则模型编译时，支持的输入shape为：

  第0档：data(1,1,40,20)+label(1,20)+mask(1,1)

  第1档：data(1,1,40,40)+label(1,40)+mask(2,2)

  第2档：data(1,1,40,80)+label(1,60)+mask(4,4)

- 如果模型编译时通过该参数设置了动态维度，则使用应用工程进行模型推理时，在模型执行接口之前：

  - 使用aclmdlSetInputDynamicDims接口，用于设置真实的维度。
  - 不使用aclmdlSetInputDynamicDims接口，则模型执行时，默认按照动态维度设置范围的最大值进行赋值。
接口详细说明请参见“ aclmdlSetInputDynamicDims(https://www.hiascend.comdocument/detail/zh/canncommercial/900/API/ascendgraphapi/aclcppdevg_03_0312.html)”章节。
