技术干货|昇思MindSpore Lite1.5 特性发布,带来全新端侧AI体验
昇思MindSpore Lite 1.5版本我们主要在异构推理、混合精度推理、端侧训练和混合比特权重量化等特性进行了重点优化,在推理性能、模型小型化和端侧训练易用性与性能等方面带来新的体验。下面就带大家快速浏览这些关键特性。
01
多硬件异构推理
如何在有限的端侧硬件资源上获得最优推理性能是端侧AI推理框架的主要目标之一。而异构设备混合计算就能够充分利用CPU、GPU、NPU等异构硬件资源,充分利用资源的算力与内存,从而达到端侧推理的极致性能。
本次我们在1.5版本中支持了多硬件异构推理的能力。用户可以设置对外开放的mindspore::Context使能不同后端异构硬件,包括CPU、GPU、NPU。并且用户可以根据需要设置各个硬件的优先级。实现了Mindspore Lite在多种异构硬件上的灵活部署,和高性能推理。
根据用户选择进行算子异构部署
早期版本Mindspore Lite只支持CPU+的模式,只能支持CPU与NPU或者CPU与GPU的异构执行,并且无法选择异构硬件的优先级。当前最新版本的多硬件异构推理特性,给了用户更多的异构硬件选择,增加了易用性,对异构硬件上的推理更加友好。
多硬件异构推理特性使用的资料请参考:
https://www.mindspore.cn/lite/docs/zh-CN/r1.5/use/runtime_cpp.html#id3
02
混合精度推理
我们经常发现用户在使用float16对模型进行推理的时候出现精度误差过大的问题,其原因可能是部分数据较小,使用float16能表达的精度较低导致误差过大,也可能是因为部分数据过大超出了float16的表达范围。
针对这类问题,我们在最新版本中提供了混合精度推理特性支持。用户可以指定模型中具体算子的推理精度,目前可选的精度有float32、float16两种。该特性可以解决部分模型无法整网使用float16进行推理的问题,用户可以将模型中因为数据原因导致的使用float16推理精度误差的部分算子,转为使用float32进行推理,从而确保整网推理精度。这样可以在使用高性能float16算子的基础上,保证了模型的推理精度提高。
混合精度推理特性使用的资料请参考:
https://www.mindspore.cn/lite/docs/zh-CN/r1.5/use/runtime_cpp.html#id13
03
端侧混合精度训练
为了在确保训练精度的前提下尽可能地提升端侧训练性能,我们在1.5版本中支持了端侧混合精度训练特性,实现了包括1)支持将fp32模型在线转成fp16混合精度模型,以及2)直接无缝运行MindSpore导出混合精度模型两种方案。
第一种方案,可以根据传入的traincfg实现自动混合精度,并提供了不同优化级别(O0不改变算子类型,O2将算子转成fp16模型,batchnorm和loss保持fp32,O3在O2基础上将batchnorm和loss转成fp16),也支持配置fp16算子自定义配置手动混合精度方案,提供了性能和精度之间的选择,更具灵活性。其计算流程如下:
可参考相关API:
https://www.mindspore.cn/lite/api/zh-CN/r1.5/api_cpp/mindspore.html#traincfg
第二种方案,支持将MindSpore导出的混合精度模型导出后在端侧直接进行增量训练,相比fp32训练内存、耗时均有明显提升,平均提升20-40%。
04
端侧训练支持resize
由于端侧内存限制原因,训练的模型batch不能过大,因此需要对输入模型的batch进行可配置,因此我们在这个版本中支持了将训练模型resize的能力。我们为训练算子增加了resize接口,同时在框架增加支持了训练内存的动态分配。使用resize接口只需要传入resize input shape。
可参考相关API:
https://www.mindspore.cn/lite/api/zh-CN/r1.5/api_cpp/mindspore.html#resize
05
端侧训练支持在线和离线融合
端侧训练大部分是finetune模型,其中大部分层都会被冻结,权重参数不会在训练过程中改变,因此可以通过在离线阶段对这些冻结层进行相关的融合优化来提升训练性能。我们通过分析模型节点的连接关系,实现了对冻结层进行动态识别融合优化点的方案,从而使训练性能得到提升显著。我们通过对Effnet网络训练进行试验,从结果看耗时可以节省约40%,训练内存开销降低30%。
同时我们支持在训练结束后,在端侧训练结束导出推理模型时进行在线融合,无需额外进行离线优化,用户可以直接使用此模型进行在线推理,由于复用了离线融合pass,动态库仅增加76k,保证了端侧训练库的轻量性。
06
混合比特权重量化
针对模型大小有严格要求的场景,权重量化(weight quantization)无需数据集,即可直接将权重数据从浮点型映射到低比特的定点数据,方便模型的传输和存储。而传统的权重模型量化方法都是将整个模型的权重值都固定量化到某个特定的比特位,例如8比特量化是将Float32的浮点数映射到Int8的定点数,理论上模型可达到4倍压缩,但是这种方法存在一个问题:高比特的量化能保证高精度,但需要更大的存储空间占用;而低比特的存储空间占用更小,但会存在更大的精度损失。
MindSpore Lite在1.5版本中支持了混合比特权重量化,根据神经网络的数据分布情况,自动搜索出最适合当前层的量化比特位,能够有效在压缩率和精度之间达到细粒度的trade-off,实现对模型的高效压缩。
由于神经网络不同层对量化损失的敏感度不同,可以将损失敏感度较低的层用更低的比特位表示,而对损失敏感度较高的层用更高的比特位表示。MindSpore Lite的混合比特量化采用均方误差作为优化目标,自动搜索出最适合当前层的scale值。
针对量化后的模型,同时采用有限状态熵(Finite State Entropy, FSE)对量化后的权重数据进行熵编码,可以进一步获得更大倍率的压缩,最高可达50+倍。
具体功能使用请参考:
https://www.mindspore.cn/lite/docs/zh-CN/r1.5/use/post_training_quantization.html#id9
MindSpore官方资料
GitHub : https://github.com/mindspore-ai/mindspore
Gitee : https : //gitee.com/mindspore/mindspore
官方QQ群 : 871543426
技术干货|昇思MindSpore Lite1.5 特性发布,带来全新端侧AI体验相关推荐
- 探索AI视觉技术新应用,夸克扫描王首推“离线模式”端侧AI算法提升隐私安全
手机扫描正在超越传统扫描仪,给大学生和职场人带来更高效.更便捷的信息服务体验. 在基于手机相机功能的搜索行为中,大学生的学习场景占比超过一半. 手机扫描的"离线模式",让夸克成为第 ...
- 昇思MindSpore全场景AI框架 1.6版本,更高的开发效率,更好地服务开发者
本文分享自华为云社区<昇思MindSpore全场景AI框架 1.6版本,更高的开发效率,更好地服务开发者>,作者: 技术火炬手. 全新的昇思MindSpore全场景AI框架1.6版本已发布 ...
- 【直播回顾】昇思MindSpore易用性SIG2022上半年回顾总结
2022年3月17日,昇思MindSpore社区技术委员会(TSC)决议通过昇思MindSpore易用性SIG的申请,正式成立易用性SIG,帮助开发者打通使用昇思MindSpore过程的"最 ...
- 致AI开发者,昇思MindSpore发来“成长”邀请
撰文 / 张贺飞 编辑 / 沈洁 2020年,应届毕业的蒋倩成了一名算法工程师,因为工作的原因,蒋倩接触到了刚刚开源的昇思MindSpore. 和许多开发者一样,蒋倩对人工智能和开源社区充满了好奇心, ...
- AI科学计算领域的再突破,昇思MindSpore做“基石”的决心有多强?
过去的十多年,人工智能技术越来越深刻地影响了人类社会,越来越多成熟的人工智能产品逐渐渗透到每一个人的生活.就在大家享受着人工智能带来各种便利的同时,AI也不断影响着最前沿的科学研究领域.过去的数百年来 ...
- 如何加速大模型开发?技术方案拆解来了:昇思MindSpore技术一览
随着人工智能爆火出圈,狂飙之势从22年底持续到23年初,与以往的技术突破不同的是,此次的大模型不仅被技术界关注,而且备受投资界.产业界和大众消费者的追捧,使它成为历史上最快月活过亿的现象级应用,继而引 ...
- 昇思MindSpore技术公开课系列:保姆级的大模型专题实践课程来了
相信很多小伙伴对在昇思MindSpore支撑下训练出的一系列大模型并不陌生了:鹏程.盘古.鹏程.神农.紫东.太初... 昇思MindSpore大模型历程 昇思MindSpore具备丰富的并行能力,能轻 ...
- 昇思MindSpore年终盘点 | 看完这篇正式开启虎年!
2020年3月28日,新一代全场景AI框架--昇思MindSpore开源至今,秉持硬核技术特性.支撑科研创新与产业应用的理念,不断地追求更高的标准.2021年昇思MindSpore再一次交出了满意的答 ...
- 单卡就能运行AI画画模型,小白也能看懂的教程来了,还有100万卡时免费NPU算力可用丨昇思MindSpore...
允中 发自 凹非寺 量子位 | 公众号 QbitAI 昇思MindSpore首个可训练的diffusion模型DDPM马上要和大家见面了,操作简单,可训练+推理,单卡即可运行,欢迎广大产学研开发者使用 ...
最新文章
- C语言关闭日志文件时忘了将日志文件全局变量指针置为NULL
- [深度学习基础] 5. 实现细节
- Tomcat服务器java.lang.IllegalArgumentException异常
- oracle的oradata,Oracle使用oradata恢复数据库
- Fedora 17 Beta 版发布
- ReportViewer教程(15)-矩阵报表-4
- [Windows Phone] 如何在 Windows Phone 应用程式制作市集搜寻
- SFP光模块与SFP+、XFP、QSFP、GBIC、BIDI的区别
- LNK2026	module unsafe for SAFESEH image
- 【论文推荐】结合KB和answer selection的相关论文推荐
- JSON数据实际应用
- python通过http上传文件
- 只利用 phpstudy 如何运行PHP文件 超详细教程
- T(n)=2T(n/2)+n的解为T(n)=O(nlogn)的求解
- android发送http post请求函数带参数带返回数据 静态类 源码
- OpenCV论道:为什么我的伽马校正函数只有一行?
- vue在初始化时给scrollTop设置一个值,但scrollTop却始终为0
- 卷积、池化、激励函数的顺序
- 使用百度API获取地名坐标信息
- 基于Linux (RHEL 5.5) 安装Oracle 10g RAC