草庐IT

端云协同,打造更易用的AI计算平台

HMS Core 2023-03-28 原文

内容来源:华为开发者大会2021 HMS Core 6 AI技术论坛,主题演讲《端云协同,HUAWEI HiAI Foundation打造更易用的AI计算平台》。

演讲嘉宾:华为海思AI技术专家

大家好!HHUAWEI HiAI Foundation作为芯片使能的基础平台,基于“芯、端、云”三层开放架构,构筑全面开放的智慧生态,帮助开发者快速利用AI处理能力,为用户提供更好地智慧应用体验。充分利用华为麒麟芯片能力,HUAWEI HiAI Foundation在实时性上,避免网络延迟和拥塞;在隐私性上,保护本地图片、视频、语音信息以及操作习惯等;在成本方面,开发者可最大化利用芯片算力,节省计算成本和带宽成本。自2018年发布以来,HUAWEI HiAI Foundation第三方应用的调用量逐年递增,目前日调用量已破百亿,获得了开发者的价值认可。

HUAWEI HiAI Foundation开放框架

HUAWEI HiAI Foundation之所以受到欢迎的原因是其支撑更多主流推理框架,在引领端侧AI行业标准构筑的同时通过开源,让更多开发者灵活高效地优化模型。

2021年上半年,我们已经完成了与KwaiNN、Bytenn、MNN、TNN等框架的对接。在此基础上,HUAWEI HiAI Foundation可以支撑华为手机以及各产品线非常多的业务和应用。比如视频剪辑、录像直播、线上支付、地图、输入法等。

通过以上框架图,我们可以看到HUAWEI HiAI Foundation作为基础平台,主要由推理加速平台和异构计算平台两个部分组成。推理加速平台的作用是跟更多的上层推理框架完成对接,帮助开发者聚焦模型优化;异构计算平台则更好地使能NPU、CPU、GPU、DSP等计算IP,充分利用芯片算力。之后,HUAWEI HiAI Foundation可以实现多平台统一的赋能手机、平板、智慧屏、音箱等基于麒麟芯片的华为产品,并与HarmonyOS深度融合,在鸿蒙生态中起到端侧AI能力的积极作用。

HUAWEI HiAI Foundation端云协同方案优势

HUAWEI HiAI Foundation上线后,我们还遇到了很多问题。比如在一个应用新特性发布后,业务算子性能需要不断优化并跟随手机等ROM系统版本更新推送,使得整体上线周期较长。部分机型停止支持服务(EOS)后,则无法享受最新的性能优化。由此,开发者的诉求也很明晰,就是跟随互联网节奏,帮助业务快速发布上线以及覆盖更多机型,囊括EOS的机型。

为解决上述典型问题及开发者对接时提出的若干其它问题,HUAWEI HiAI Foundation今年在两个方面进行了重大升级。一是基于端云协同的计算库独立升级能力。支持计算库动态升级,保证性能优化的算子库更快推送至端侧,同时通过插件进行模型编译,保持更优的异构策略和高性能的融合模板。目前,这个能力已经在HarmonyOS 2.0版本上线,满足合作伙伴的快速业务上线需求。

二是易用性的升级。我们会提供更丰富的接口调用,更易懂的用户手册、Demo演示和工具包。具体来说主要包括以下四点:

  • Model Zoo助力开发者快速使能NPU加速。Model Zoo综合了硬件优化模型库、模型优化指导以及技术交流社区的能力,通过它开发者可以快速知道哪一类模型在硬件上跑得速度更快,如何优化模型结构获取更好的能效收益等。技术交流社区除了便于开发者参与讨论交流外,也为后续高校科研合作项目、AI技术竞赛等提供基础。

  • 推出高性能、低功耗、高精度、小模型的模型调优工具。包括模型量化工具包和模型结构搜索工具包。前者推出了16bit、8bit、4bit、2bit和自适应混合量化,模型小巧而灵动,可以保障不丢失模型计算进度。后者则更多是通过自动搜索方式,帮助开发者结合硬件信息调整模型结构,使之更加敏捷快速。

  • 异构计算——CPU、GPU、NPU等IP的高效协同。下图列举了一个典型的数据流。从视频解码器到图像预处理,再到图像处理、渲染优化、送显等,经过了非常多的IP计算。那么这些IP怎样在较长的数据流中高效协同呢?这就需要多IP自动异构。它可以自动融合优化各计算节点,共享计算内存,做到多IP间数据零拷贝。另外,多IP的调度任务可以自动编排,支持优先级控制和节点间内存自动分配。

  • 模型可视化——用户模型信息可见,提升调优效率。在模型结构可视化工具(Netron)上,开发者可以直接看到HUAWEI HiAI Foundation的模型结构,更加便利。

如今,HUAWEI HiAI Foundation已加入AI标准化组织AITISA(人工智能产业技术创新战略联盟),并参与端侧AI标准草案撰写,共同构筑AI行业标准。为了让开发者更好地使用端侧AI能力,HUAWEI HiAI Foundation会保持初心,做更好、更易用的端侧AI计算平台,服务、赋能开发者,提升应用体验,谢谢 !

了解更多详情>>

访问华为开发者联盟官网
获取开发指导文档
华为移动服务开源仓库地址:GitHubGitee

关注我们,第一时间了解 HMS Core 最新技术资讯~

有关端云协同,打造更易用的AI计算平台的更多相关文章

  1. ruby-on-rails - 使用一系列等级计算字母等级 - 2

    这里是Ruby新手。完成一些练习后碰壁了。练习:计算一系列成绩的字母等级创建一个方法get_grade来接受测试分数数组。数组中的每个分数应介于0和100之间,其中100是最大分数。计算平均分并将字母等级作为字符串返回,即“A”、“B”、“C”、“D”、“E”或“F”。我一直返回错误:avg.rb:1:syntaxerror,unexpectedtLBRACK,expecting')'defget_grade([100,90,80])^avg.rb:1:syntaxerror,unexpected')',expecting$end这是我目前所拥有的。我想坚持使用下面的方法或.join,

  2. 计算机毕业设计ssm+vue基本微信小程序的小学生兴趣延时班预约小程序 - 2

    项目介绍随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱小学生兴趣延时班预约小程序的设计与开发被用户普遍使用,为方便用户能够可以随时进行小学生兴趣延时班预约小程序的设计与开发的数据信息管理,特开发了小程序的设计与开发的管理系统。小学生兴趣延时班预约小程序的设计与开发的开发利用现有的成熟技术参考,以源代码为模板,分析功能调整与小学生兴趣延时班预约小程序的设计与开发的实际需求相结合,讨论了小学生兴趣延时班预约小程序的设计与开发的使用。开发环境开发说明:前端使用微信微信小程序开发工具:后端使用ssm:VU

  3. ruby - 如何计算 Liquid 中的变量 +1 - 2

    我对如何计算通过{%assignvar=0%}赋值的变量加一完全感到困惑。这应该是最简单的任务。到目前为止,这是我尝试过的:{%assignamount=0%}{%forvariantinproduct.variants%}{%assignamount=amount+1%}{%endfor%}Amount:{{amount}}结果总是0。也许我忽略了一些明显的东西。也许有更好的方法。我想要存档的只是获取运行的迭代次数。 最佳答案 因为{{incrementamount}}将输出您的变量值并且不会影响{%assign%}定义的变量,我

  4. ruby - 使用 Ruby,计算 n x m 数组的每一列中有多少个 true 的简单方法是什么? - 2

    给定一个nxmbool数组:[[true,true,false],[false,true,true],[false,true,true]]有什么简单的方法可以返回“该列中有多少个true?”结果应该是[1,3,2] 最佳答案 使用转置得到一个数组,其中每个子数组代表一列,然后将每一列映射到其中的true数:arr.transpose.map{|subarr|subarr.count(true)}这是一个带有inject的版本,应该在1.8.6上运行,没有任何依赖:arr.transpose.map{|subarr|subarr.in

  5. arrays - 计算数组中的匹配元素 - 2

    给定两个大小相等的数组,如何找到不考虑位置的匹配元素的数量?例如:[0,0,5]和[0,5,5]将返回2的匹配项,因为有一个0和一个5共同;[1,0,0,3]和[0,0,1,4]将返回3的匹配项,因为0有两场,1有一场;[1,2,2,3]和[1,2,3,4]将返回3的匹配项。我尝试了很多想法,但它们都变得相当粗糙和令人费解。我猜想有一些不错的Ruby习惯用法,或者可能是一个正则表达式,可以很好地回答这个解决方案。 最佳答案 您可以使用count完成它:a.count{|e|index=b.index(e)andb.delete_at

  6. ruby-on-rails - 在 Rails 3 中进行身份验证最常用的方法是什么? - 2

    我需要在rail3中使用标准注册/登录/忘记密码功能进行身份验证。是否有大多数人为此使用的插件或其他东西? 最佳答案 我不确定最常用的方法是什么-但可以肯定的是,Plataformatec的“Devise”是一个非常流行的方法:http://github.com/plataformatec/devise我已经尝试了一些authgem,对我来说,它是最简单的设置和修改以满足我的需要。它内置了密码恢复、帐户确认(如果需要)和其他一些非常方便的功能。 关于ruby-on-rails-在Rail

  7. ruby-on-rails - 如何在 Rails 中添加禁用的提交按钮 - 2

    我在ruby​​表单中有一个提交按钮f.submitbtn_text,class:"btnbtn-onemgt12mgb12",id:"btn_id"我想在不使用任何javascript的情况下通过ruby​​禁用此按钮 最佳答案 添加disabled:true选项。f.submitbtn_text,class:"btnbtn-onemgt12mgb12",id:"btn_id",disabled:true 关于ruby-on-rails-如何在Rails中添加禁用的提交按钮,我们在St

  8. ruby - 如何保持我不常用的编程语言技能 - 2

    关闭。这个问题是off-topic.它目前不接受答案。想改进这个问题吗?Updatethequestion所以它是on-topic用于堆栈溢出。关闭11年前。Improvethisquestion我不经常使用ruby​​-通常它加起来相当于每两个月或更长时间编写一次脚本。我的大部分编程都是使用C++进行的,这与ruby​​有很大不同。由于我与ruby​​之间的差距如此之大,我总是忘记语言的基本方面(比如解析文本文件和其他简单的东西)。我想每天练习一些基本的东西,我想知道是否有一些我可以订阅的网站,并且会向我发送当天的Ruby问题或类似的东西。有人知道这样的站点/Internet服务吗?

  9. ruby-on-rails - 如何计算 Ruby/Rails 中 JSON 对象的数量 - 2

    Ruby中如何“一般地”计算以下格式(有根、无根)的JSON对象的数量?一般来说,我的意思是元素可能不同(例如“标题”被称为其他东西)。没有根:{[{"title":"Post1","body":"Hello!"},{"title":"Post2","body":"Goodbye!"}]}根包裹:{"posts":[{"title":"Post1","body":"Hello!"},{"title":"Post2","body":"Goodbye!"}]} 最佳答案 首先,withoutroot代码不是有效的json格式。它将没有包

  10. ruby - 如何计算自 Ruby 中给定日期以来的周数? - 2

    目标我正在尝试计算自给定日期以来周的距离,而无需跳过任何步骤。我更喜欢用普通的Ruby来做,但ActiveSupport无疑是一个可以接受的选择。我的代码我写了以下内容,这似乎可行,但对我来说似乎还有很长的路要走。require'date'DAYS_IN_WEEK=7.0defweeks_sincedate_stringdate=Date.parsedate_stringdays=Date.today-dateweeks=days/DAYS_IN_WEEKweeks.round2endweeks_since'2015-06-15'#=>32.57ActiveSupport的#weeks

随机推荐