尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
昇腾GE动态shape功能指南
动态shape【免费下载链接】geGEGraph Engine是面向昇腾的图编译器和执行器提供了计算图优化、多流并行、内存复用和模型下沉等技术手段加速模型执行效率减少模型内存占用。 GE 提供对 PyTorch、TensorFlow 前端的友好接入能力并同时支持 onnx、pb 等主流模型格式的解析与编译。项目地址: https://gitcode.com/cann/ge动态batch_size本节介绍如何在模型构建时支持动态batch_size功能。IPV350不支持动态batch_size特性。功能介绍batch_size即每次模型推理处理的图片数对于每次推理图片数量固定的场景处理图片数由数据shape的N值决定对于每次推理图片数量不固定的场景则可以通过动态batch_size功能来动态分配每次处理的图片数量。例如用户执行推理业务时需要每次处理2张、4张、8张图片则可以在模型中配置档位信息2,4,8申请了档位后模型推理时会根据实际档位申请内存。使用方法在Data算子定义时将数据shape的指定维度设置为-1auto shape_data vectorint64_t({ -1,1,28,28 }); TensorDesc desc_data(ge::Shape(shape_data), FORMAT_NCHW, DT_FLOAT); auto data op::Data(data); data.update_input_desc_data(desc_data); data.update_output_desc_out(desc_data);模型编译时在aclgrphBuildModel接口options中设置INPUT_SHAPE/INPUT_FORMAT信息同时通过DYNAMIC_BATCH_SIZE指定每个档位值的大小。[!NOTE]说明INPUT_FORMAT必须设置并且和所有Data算子的format保持一致且仅支持NCHW和NHWC否则会导致模型编译失败。INPUT_SHAPE参数必须设置。void PrepareOptions(std::mapAscendString, AscendString options) { options.insert({ {ge::ir_option::INPUT_FORMAT, NCHW}, {ge::ir_option::INPUT_SHAPE, data:-1,1,28,28}, // INPUT_SHAPE中的-1表示设置动态batch。 {ge::ir_option::DYNAMIC_BATCH_SIZE, 2,4,8} // 设置N的档位 }); }使用注意事项该功能不能和动态分辨率、动态维度同时使用。如果用户设置的档位数值过大或档位过多可能会导致模型编译失败此时建议用户减少档位或调低档位数值。若用户执行推理业务时每次处理的图片数量不固定则可以通过配置该参数来动态分配每次处理的图片数量。例如用户执行推理业务时需要每次处理2张、4张、8张图片则可以配置为2,4,8申请了档位后模型推理时会根据实际档位申请内存。如果模型编译时通过该参数设置了动态batch_size则使用应用工程进行模型推理时在模型执行接口之前使用aclmdlSetDynamicBatchSize接口用于设置真实的batch_size档位。不使用aclmdlSetDynamicBatchSize接口则模型执行时默认按照batch_size设置范围的最大值进行赋值。如果用户设置了动态batch_size同时又通过INSERT_OP_FILE参数设置了动态AIPP功能实际推理时调用aclmdlSetInputAIPP接口设置动态AIPP相关参数值时需确保batch_size要设置为最大Batch数。某些场景下通过该参数设置动态batch_size特性后生成的离线模型网络结构会与固定batch_size场景下的不同推理性能可能存在差异。如果用户设置的档位数值过大或档位过多在运行环境执行推理时建议执行swapoff -a命令关闭swap交换空间作为内存的功能防止出现由于内存不足将swap交换空间作为内存继续调用导致运行环境异常缓慢的情况。动态分辨率本节介绍如何在模型构建时支持动态分辨率的功能。IPV350不支持动态分辨率特性。功能介绍在模型推理时对于每次处理图片宽高不固定的场景用户可以在模型构建时设置不同的图片宽高档位。使用方法在Data算子定义时将数据shape的HW维度都设置为-1auto shape_data vectorint64_t({ 8,3,-1,-1 }); TensorDesc desc_data(ge::Shape(shape_data), FORMAT_NCHW, DT_FLOAT); auto data op::Data(data); data.update_input_desc_data(desc_data); data.update_output_desc_out(desc_data);模型编译时在aclgrphBuildModel接口options中设置INPUT_SHAPE/INPUT_FORMAT信息同时通过DYNAMIC_IMAGE_SIZE指定动态分辨率的档位。[!NOTE]说明INPUT_FORMAT必须设置并且和所有Data算子的format保持一致且仅支持NCHW和NHWC否则会导致模型编译失败。INPUT_SHAPE参数必须设置。void PrepareOptions(std::mapAscendString, AscendString options) { options.insert({ {ge::ir_option::INPUT_FORMAT, NCHW}, {ge::ir_option::INPUT_SHAPE, data: 8,3,-1,-1}, {ge::ir_option::DYNAMIC_IMAGE_SIZE, 416,416;832,832} // 设置HW档位支持处理HW为416,416或者832,832的图片 }); }使用注意事项该功能不能和动态Batch、动态维度同时使用。如果用户设置的分辨率数值过大或档位过多可能会导致模型编译失败此时建议用户减少档位或调低档位数值。如果模型编译时通过该参数设置了动态分辨率则使用应用工程进行模型推理时在模型执行接口之前使用aclmdlSetDynamicHWSize接口用于设置真实的分辨率且实际推理时使用的数据集图片大小需要与具体使用的分辨率相匹配。不使用aclmdlSetDynamicHWSize接口则模型执行时默认按照动态分辨率设置范围的最大档位宽、高进行赋值。如果用户设置了动态分辨率即输入图片的宽和高不确定同时又通过INSERT_OP_FILE参数设置了静态AIPP功能该场景下AIPP配置文件中不能开启Crop和Padding功能并且需要将配置文件中的src_image_size_w和src_image_size_h取值设置为0。如果用户设置了动态分辨率同时又通过INSERT_OP_FILE参数设置了动态AIPP功能实际推理时调用aclmdlSetInputAIPP接口设置动态AIPP相关参数值时不能开启Crop和Padding功能。该场景下还需要确保通过aclmdlSetInputAIPP接口设置的宽和高与aclmdlSetDynamicHWSize接口设置的宽、高相等都必须设置成动态分辨率最大档位的宽、高。某些场景下通过该参数设置动态分辨率特性后生成的离线模型网络结构会与固定分辨率场景下的不同推理性能可能存在差异。如果用户设置了动态分辨率实际推理时使用的数据集图片大小需要与具体使用的分辨率相匹配。如果用户设置的分辨率数值过大或档位过多在运行环境执行推理时建议执行swapoff -a命令关闭swap交换空间作为内存的功能防止出现由于内存不足将swap交换空间作为内存继续调用导致运行环境异常缓慢的情况。动态维度编译Graph为离线模型场景当前系统支持在接口中配置动态维度信息从而支持动态输入的场景。本节将给出详细说明。功能介绍用户可以在模型构建时设置ND格式下动态维度的档位。适用于执行推理时每次处理任意维度的场景。IPV350不支持动态维度特性。使用方法在Data算子定义时将数据shape的动态维度设置为-1auto shape_data vectorint64_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);模型编译时在aclgrphBuildModel接口options中设置INPUT_SHAPE/INPUT_FORMAT信息同时通过DYNAMIC_DIMS指定档位信息。[!NOTE]说明INPUT_FORMAT必须设置并且和所有Data算子的format保持一致且仅支持ND否则会导致模型编译失败。INPUT_SHAPE参数必须设置。void PrepareOptions(std::mapstd::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则每档必须设置几个维度。例如void PrepareOptions(std::mapstd::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接口则模型执行时默认按照动态维度设置范围的最大值进行赋值。编译并运行Graph场景当前系统支持在用户脚本中配置动态维度信息从而支持动态输入的场景本节给出具体说明。功能介绍Atlas 200I/500 A2 推理产品不支持该特性。编译并运行Graph场景的动态维度当前仅支持在整图设置使用Session参数设置维度信息输入可以为dataset方式、placeholder方式或者两种混合方式。对于混合输入当前仅支持其中一种为动态变化的场景。使用方法在Data算子定义时将数据shape的动态维度设置为-1auto shape_data vectorint64_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);编译并运行Graph时在Session接口和AddGraph接口的options中设置ge.inputShape/ge.dynamicNodeType信息同时通过ge.dynamicDims指定维度信息。[!NOTE]说明ge.inputShape参数必须设置。整图设置动态维度时用户在脚本中设置的ge.inputShape的输入顺序要和实际data节点的name字母序保持一致比如有三个输入label、data、mask则ge.inputShape输入顺序应该为data、label、maskdata:1,1,40,-1;label:1,-1;mask:-1,-1编译并运行Graph动态维度场景如果模型有多个输入非分档输入支持指定内部Format格式分档输入不支持指定内部Format格式详细使用方法请参见指定Graph输入输出的内部格式。std::mapstd::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::GeSession *session new ge::GeSession(options); // 动态维度参数添加到graph session-AddGraph(graph_id, graph, options);ge.inputShape表示网络的输入shape信息以上配置表示网络中有三个输入输入的name分别为datalabelmask各输入的shape分别为1,1,40,-1、1,-1、-1,-1其中-1表示该维度为动态需要通过ge.dynamicDims设置动态维度参数。ge.dynamicDims用来设置动态维度的档位档位中间使用英文分号分隔每档中的dim值与ge.inputShape参数中的-1标识的参数依次对应ge.inputShape参数中有几个-1则每档必须设置几个维度。结合ge.inputShape信息ge.dynamicDims配置为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)ge.dynamicNodeType用于指定动态输入的节点类型。0dataset输入为动态输入1placeholder输入为动态输入。当前不支持dataset和placeholder输入同时为动态输入。动态输入shape范围本节介绍如何在模型构建时设置动态输入的shape范围。功能介绍Atlas 200I/500 A2 推理产品不支持该特性。用户在模型编译时可以指定模型输入数据的shape范围从而编译出支持动态输入的模型。使用方法在Data算子定义时将数据shape的指定维度设置为-1auto shape_data vectorint64_t({ -1,3,5,-1 }); TensorDesc desc_data(ge::Shape(shape_data), FORMAT_NCHW, DT_FLOAT); auto data op::Data(data); data.update_input_desc_x(desc_data); data.update_output_desc_y(desc_data);模型编译时在aclgrphBuildModel接口options中通过INPUT_SHAPE指定模型输入数据的shape范围。void PrepareOptions(std::mapAscendString, AscendString options) { options.insert({ {ge::ir_option::INPUT_FORMAT, NCHW}, {ge::ir_option::INPUT_SHAPE, 8~20,3,5,-1} }); }INPUT_SHAPE参数设置shape范围时的格式要求支持按照name设置input_name1:n1,c1,h1,w1;input_name2:n2,c2,h2,w2例如input_name1:8~20,3,5,-1;input_name2:5,3~9,10,-1。指定的节点必须放在双引号中节点中间使用英文分号分隔。input_name必须是转换前的网络模型中的节点名称。如果用户知道data节点的name推荐按照name设置。支持按照index设置n1,c1,h1,w1;n2,c2,h2,w2例如8~20,3,5,-1;5,3~9,10,-1。可以不指定节点名节点按照索引顺序排列节点中间使用英文分号分隔。按照index设置shape范围时data节点需要设置属性index说明是第几个输入index从0开始。动态维度有shape范围的用波浪号“~”表示固定维度用固定数字表示无限定范围的用-1表示。使用注意事项如果模型编译时通过该参数设置了动态输入的shape范围使用应用工程进行模型推理时需在模型执行aclmdlExecute接口之前调用aclmdlSetDatasetTensorDesc接口用于设置真实的输入Tensor描述信息输入shape范围模型执行之后调用aclmdlGetDatasetTensorDesc接口获取模型动态输出的Tensor描述信息再进一步调用aclTensorDesc下的操作接口获取输出Tensor数据占用的内存大小、Tensor的Format信息、Tensor的维度信息等。【免费下载链接】geGEGraph Engine是面向昇腾的图编译器和执行器提供了计算图优化、多流并行、内存复用和模型下沉等技术手段加速模型执行效率减少模型内存占用。 GE 提供对 PyTorch、TensorFlow 前端的友好接入能力并同时支持 onnx、pb 等主流模型格式的解析与编译。项目地址: https://gitcode.com/cann/ge创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
RELATED

相关推荐

Nginx Proxy Manager 重定向主机(Redirection Host)完整指南:域名迁移与 301/302 跳转实战

Nginx Proxy Manager 重定向主机(Redirection Host)完整指南:域名迁移与 301/302 跳转实战

Nginx Proxy Manager 重定向主机(Redirection Host)完整指南:域名迁移与 301/302 跳转实战 【免费下载链接】nginx-proxy-manager Docker container for managing Nginx proxy hosts with a simple, powerful interface 项目地址: https://…

📅 2026/9/10 3:44:09
Code Review Graph VS Code 扩展使用指南:在编辑器中可视化代码依赖图、爆炸半径与审查上下文

Code Review Graph VS Code 扩展使用指南:在编辑器中可视化代码依赖图、爆炸半径与审查上下文

Code Review Graph VS Code 扩展使用指南:在编辑器中可视化代码依赖图、爆炸半径与审查上下文 【免费下载链接】code-review-graph Local-first code intelligence graph for MCP and CLI. Builds a persistent map of your codebase so AI coding tools read only …

📅 2026/9/10 3:44:08
Dubbo负载均衡全解析:内置策略源码与权重预热细节

Dubbo负载均衡全解析:内置策略源码与权重预热细节

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📅 2026/9/10 3:39:06
MORE NEWS

更多资讯

📰

GPT-6 Astra幻觉率2%仍被老招数绕过:大模型概率生成边界与工程防御指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📰

Matter协议详解:智能家居互联互通新标准与开发实战

1. Matter协议到底是什么,为什么一夜之间大家都在谈这两年做智能家居的圈子,不管是做硬件的、写固件的还是搞平台集成的,几乎所有人的话题都绕不开一个词:Matter。我最早听到这个协议的时候,还叫CHIP项目(C…

📰

聆听艺术学费贵吗?

导读:近年来,国内素质教育市场持续扩容,少儿艺术培训板块保持稳定增长态势,其中少儿声乐赛道伴随家长美育意识提升,市场规模逐年扩张。相关行业调研数据显示,近三年国内参与声乐学习的 4 至 12 岁少儿数量年…

📰

SpringBoot+Vue+MySQL在线装修管理系统全栈源码解析与部署实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📰

用Playwright实现宽度对比自动化:从配置到报告的前端回归方案

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📰

PaddleRec+Milvus电商推荐系统Linux部署实战

简介:基于PaddleRec的深度学习电商推荐系统完整项目,明确面向Linux环境部署,可作为推荐系统入门实践、课程设计或毕业设计参考,也可在源码基础上二次开发。压缩包共43个文件,以26个Python脚本为核心,搭配7个…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬