飞桨x昇腾生态适配方案:12_动态OM推理

举报
RaceSnail 发表于 2025/05/18 11:42:44 2025/05/18
【摘要】 动态BatchSize OM推理以档位1 2 4 8档为例,设置档位为2,本程序将获取实际模型输入组Batch,每2个输入为一组,进行组Batch。示例命令:python3 -m ais_bench --model ./inference/om/dynamic_batch_size_det.om --input ./inference/input/ --output ./inference...

动态BatchSize OM推理

以档位1 2 4 8档为例,设置档位为2,本程序将获取实际模型输入组Batch,每2个输入为一组,进行组Batch。
示例命令:

python3 -m ais_bench --model ./inference/om/dynamic_batch_size_det.om --input ./inference/input/ --output ./inference/output/ --dymBatch 2

推理结果:
01_动态BatchSizeOM推理

输出结果:
执行完毕后,输出会被保存在 ./inference/output/路径下:

inference/output/
    ├── 2025_03_17-11_11_48
        ├── image_0.bin
    └── 2025_03_17-11_11_48_summary.json

动态分辨率 OM推理

以档位224,224;448,448档为例,设置档位为224,224,本程序将获取实际模型输入组Batch。
示例命令:

python3 -m ais_bench --model ./inference/om/dynamic_image_size_det.om --input ./inference/input/ --output ./inference/output/ --dymHW 224,224

推理结果:
02_动态分辨率OM推理

输出结果:
执行完毕后,输出会被保存在 ./inference/output/路径下:

inference/output/
    ├── 2025_03_17-11_47_25
        ├── image_0.bin
    └── 2025_03_17-11_47_25_summary.json

动态维度 OM推理

固定维度模式

以设置档位1,3,224,224为例,本程序将获取实际模型输入组Batch。
示例命令:

python3 -m ais_bench --model ./inference/om/dynamic_dims_det.om --input ./inference/input/ --output ./inference/output/ --dymDims x:1,3,224,224

推理结果:
03_固定维度模式

输出结果:
执行完毕后,输出会被保存在 ./inference/output/路径下:

inference/output/
    ├── 2025_03_17-11_53_04
        ├── image_0.bin
    └── 2025_03_17-11_53_04_summary.json            

自动设置维度模式

动态维度模型输入数据的Shape可能是不固定的,比如一个输入文件Shape为1,3,224,224,另一个输入文件Shape为 1,3,448,448。若两个文件同时推理,则需要设置两次动态Shape参数,当前不支持该操作。针对该场景,增加动态Dims模式,可以根据输入文件的Shape信息,自动设置模型的Shape参数。
示例命令:

python3 -m ais_bench --model ./inference/om/dynamic_dims_det.om --input ./inference/input/ --output ./inference/output/ --auto_set_dymdims_mode 1

推理结果:
04_自动设置维度模式

输入文件:

# 输入的input文件夹内容如下
ls ./inference/input/
image_1_224_224.npy  image_1_448_448.npy

输出结果:
执行完毕后,输出会被保存在 ./inference/output/路径下:

inference/output/
    ├── 2025_03_18-23_54_55
        ├── image_1_224_224_0.bin
        ├── image_1_448_448_0.bin
    └── 2025_03_18-23_54_55_summary.json

动态shape OM推理

固定shape模式

以ATC设置[1~8,3,224~448,224~448],设置档位1,3,256,256为例,本程序将获取实际模型输入组Batch。
动态Shape的输出大小通常为0,建议通过–outputSize参数设置对应输出的内存大小。

示例命令:

python3 -m ais_bench --model ./inference/om/dynamic_shape_det_linux_aarch64.om --input ./inference/image.npy --output ./inference/output/ --dymShape x:1,3,256,256 --outputSize 10000

推理结果:
05_固定shape模式

输出结果:
执行完毕后,输出会被保存在 ./inference/output/路径下:

inference/output/
    ├── 2025_03_19-00_12_07
        ├── image_0.bin
    └── 2025_03_19-00_12_07_summary.json            

自动设置Shape模式

动态Shape模型输入数据的Shape可能是不固定的,比如输入文件Shape分别为1,3,224,224;1,3,256,256;1,3,448,448。若三个文件同时推理,则需要设置三次动态Shape参数,当前不支持该操作。针对该场景,增加动态Shape模式,可以根据输入文件的Shape信息,自动设置模型的Shape参数。

示例命令:

python3 -m ais_bench --model ./inference/om/dynamic_shape_det_linux_aarch64.om --auto_set_dymshape_mode 1  --input ./inference/input/ --output ./inference/output/ --outputSize 10000

推理结果:
06_自动设置Shape模式

输入文件:

# 输入的input文件夹内容如下
ls ./inference/input/
image_1_224_224.npy  image_1_256_256.npy  image_1_448_448.npy

输出结果:
执行完毕后,输出会被保存在 ./inference/output/路径下:

inference/output/
    ├── 2025_03_19-00_21_55
        ├── image_1_224_224_0.bin
        ├── image_1_256_256_0.bin
        ├── image_1_448_448_0.bin
    └── 2025_03_19-00_21_55_summary.json

注意:该场景下的输入文件必须为npy格式,如果是bin文件将获取不到真实的Shape信息。

profiler或dump场景

–profiler参数和–dump参数,必须要增加–output参数,指示输出路径。

–profiler和–dump可以分别使用,但不能同时启用。

python3 -m ais_bench  --model ./inference/om/det.om --output ./inference/output/ --dump 1
python3 -m ais_bench  --model ./inference/om/det.om --output ./inference/output/ --profiler 1

常见问题

未设置环境变量

每次使用离线推理前务必先设置环境变量:
source /usr/local/Ascend/ascend-toolkit/set_env.sh

实际输入HW和OM模型不一致

报错信息:
07_实际输入HW和OM模型不一致

错误原因:
det.om模型的输入input_shape=x:1,3,224,224;而image.npy的输入为:1,3,256,256。

实际输入Dims和OM模型不一致

报错信息:
08_实际输入Dims和OM模型不一致

错误原因:
dynamic_dims_det.om模型的输入dynamic_dims=“1,224,224;8,448,448”;而实际的输入为:1,3,224,224;1,3,448,448。

动态OM模型未设置动态参数

报错信息:
09_动态OM模型未设置动态参数

错误原因:
使用动态OM模型(包括动态BatchSize、动态分辨率、动态维度、动态shape)推理,但并未设置相关的动态参数。

CANN包版本老旧

报错信息:
10_CANN包版本老旧

错误原因:
CANN包版本老旧,参考“环境准备->更新CANN包”章节更换CANN版本。

API推理

请参考ais_bench interface python API使用指南:
https://gitee.com/ascend/tools/blob/master/ais-bench_workload/tool/ais_bench/API_GUIDE.md

参考链接

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。