mindspore-lite模型转换

举报
stable feeling 发表于 2024/04/08 21:23:39 2024/04/08
【摘要】 一、固定shape转换在转换onnx时,指定特定的shape进行转换,参考命令如下:converter_lite --modelFile=./yolox_m_mmyolo.onnx --outputFile=./yolox_m_mmyolo --inputShape="images:1,3,640,640" --fmk=ONNX --saveType=MINDIR --optimize=as...

一、固定shape转换

在转换onnx时,指定特定的shape进行转换,参考命令如下:

converter_lite --modelFile=./yolox_m_mmyolo.onnx --outputFile=./yolox_m_mmyolo --inputShape="images:1,3,640,640" --fmk=ONNX --saveType=MINDIR --optimize=ascend_oriented

注:如果onnx模型是固定shape,--inputShape参数可以不加

二、动态分档

如果业务场景中的输入是确定的几种,那么可以使用动态分档来进行模型转换,这个时候需要使用到配置文件,以开源sd1.5模型为例

根据不同业务场景下,模型的不同输入设置配置文件config.ini

[acl_build_options]
input_format="ND"
input_shape="sample:2,4,-1,-1;timestep:1;encoder_hidden_states:2,77,768"
ge.dynamicDims="128,128;96,128;96,96;64,96;64,64"

设置好配置文件后,进行模型转换

converter_lite --modelFile=unet.onnx --outputFile=./unet --fmk=ONNX --saveType=MINDIR --optimize=ascend_oriented --configFile=./config.ini

三、纯动态模型转换

如果业务场景是完全动态的,则可以使用完全动态的方式将onnx模型转换mindir

还是以unet模型为例,配置文件如下

[acl_build_options]
input_shape_range="sample:[-1,-1,-1,-1];timestep:[-1];encoder_hidden_states:[-1,-1,768]"

转换命令与动态分档的命令相同,参考如下:

converter_lite --modelFile=unet.onnx --outputFile=./unet --fmk=ONNX --saveType=MINDIR --optimize=ascend_oriented --configFile=./config.ini

注意:

1、纯动态的模型转换出来之后,并不是可以随意输入shape信息,前提是业务场景要支持,如unet的hw必须能否被8整除,如果不满足条件,则还是会运行错误

2、纯动态转出来的mindir底层使用的都是纯动态的算子,性能相比前两种方式存在一定程度的劣化

3、该参数不能与动态分档中的ge.dynamicDims参数共用

四、fp32的方式转换模型

默认情况下,是按照fp16的数据格式转换模型,如果想要提升模型精度,可以使用fp32的数据格式来转换模型

需要再配置文件中添加如下参数

[acl_init_options]
ge.exec.precision_mode=force_fp32

五、使能融合算子导出模型

如果想要在导出mindir模型时,应用目前已有的融合算子,如FlashAttention,可以在配置文件中添加如下参数

[ascend_context]
plugin_custom_ops=All

如果只想使能FlashAttention的话,plugin_custom_ops可以赋值为FlashAttention


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

评论(0

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

全部回复

上滑加载中

设置昵称

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

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

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