华为全栈AI技术干货深度解析,解锁企业AI开发“秘籍”
摘要:针对企业AI开发应用中面临的痛点和难点,为大家带来从实践出发帮助企业构建成熟高效的AI开发流程解决方案。
在数字化转型浪潮席卷全球的今天,AI技术已经成为行业公认的升级重点,正在越来越多的领域为业务带来创新价值。随着行业AI落地逐步加速,企业在开发AI应用的过程中,经常会遇到准备不足、人才紧缺、开发成本高昂等问题,阻碍着AI的落地实践。
在2020年12月20日QCon全球软件开发大会 2020上海站上,华为云AI首席技术布道师陈亮携手四位华为AI领域博士,带来题为“全栈全场景AI应用开发实践”的专题分享。本场专题针对企业AI开发应用中面临的痛点和难点,从实践出发帮助企业构建成熟高效的AI开发流程。
本文主要总结自王俊博士与白小龙博士的分享内容。
MindSpore:端边云统一训练和推理的AI计算框架
首先,华为高级AI算法工程师王俊博士深度解析华为MindSpore AI计算框架。
在AI领域,AI计算框架扮演着一个非常核心的角色。过去八年多来,AI框架经历了三个阶段的发展:第一阶段主要奠定理论基础,第二阶段则引入了分布式训练、计算图、动态图等理念,TesnorFlow和PyTorch两大框架也是在这一阶段占据了行业主导地位。
如今AI框架的发展已经逐渐进入了第三阶段,但行业还在探索这一阶段的具体演变方向。归结起来,行业对AI框架的需求主要分为用户态、运行态和部署态三大层面。
- 用户态。这一层面主要决定用户的使用方式,具体分为动态图和静态图两种模式。静态图效率高,但是对开发者不够友好;动态图易编程,但底层性能会慢很多。用户希望能尽可能结合这两种模式各自的优势,这对框架而言是一个难题。
- 运行态。在这一层面,用户希望框架实现尽可能高的模型运行效率。如今,业界面对的一大难点就是切分模型实现分布式训练的具体方式。分布式训练的目标是充分利用大规模计算资源提升模型性能,但如何合理地切分模型,保证分布训练的效率是非常耗时耗力的工作,给模型的规模扩张带来了障碍。
- 部署态。模型部署的过程中,一方面用户希望算法可以很好地落地产生效果,另一方面却不希望用户数据出现隐私安全问题。因此框架需要在铺平落地道路的同时确保数据安全。
针对上述需求,华为开发了MindSpore AI计算框架,通过诸多创新解决了传统框架未能解决的一系列难题。
面对用户态中动态图与静态图两种需求的矛盾,MindSpore引入了名为MindIR的图层中间表示形式。
IR(Intermediate Representation)是源代码于目标代码之间的翻译中介,好的IR有利于AI模型的编译优化和执行,是AI框架高效训练和推理的基础。MindIR选择的技术路线是Functional Graph IR,由ParameterNode、ValueNode和CNode组成有向无环图。在MindSpore自动微分时,MindIR会计算ParameterNode和CNode的梯度贡献,并返回最终ParameterNode的梯度,而不计算ValueNode的梯度。
MindIR可以将动态图或静态图编成IR表示,使开发者可以在开发过程结合动态图与静态图两种模式,根据需要随时切换使用。
在运行态,为了帮助开发者从手动切分模型的繁重任务中解脱出来,MindSpore提供了自动并行方案。
这套方案不需要改变用户代码结构,用户启用方案后框架会自动搜索并行策略,之后切分算子,最后切分整图。
框架基于自动规划方式来生成切分策略,过程中会尽量切除一些明显不可行的策略,最后生成整图的切分。整体策略的目标是最大化计算通信比,尽可能将更多的计算时间放在前向计算和反向计算,而非计算卡之间的通讯上面。切分策略也支持用户手动调整,手动自动两种方式可以结合使用。这套方案还支持优化器并行,最终能够显著降低分布式训练的额外内存开销。
出于进一步提升算法性能的目的,MindSpore还引入了二阶优化和图算融合策略。
训练深度学习模型需要大量计算,训练收敛时间较长。二阶优化方法可以有效加速模型收敛,减少迭代次数,但同时会引入大量复杂计算,限制了其在深度模型训练中的广泛应用。因此对于计算框架而言,如何高效求解二阶矩阵是一个技术难点。MindSpore的应对方法是矩阵求逆,只考虑对角线上的元素块和每一层内的影响。同时框架不会做全量二阶,会将一阶与二阶优化交替进行,基于动态结果决定二阶计算量。基于这些优化,MindSpore将端到端的训练时间节省了20%。
算子融合是AI框架常见的优化方法。现代计算机硬件架构采用多级内存体系,数据运算时需要逐级输入输出。算子融合就是将相邻算子的计算逻辑合并,节约逐级输入输出的次数,从而提升时间效率。MindSpore还引入了图算融合。最终获得了15%的端到端性能提升。
在硬件层,MindSpore原生支持高性能的昇腾AI芯片,并针对昇腾的技术特性做了软硬结合优化。在多种优化措施的共同作用下,MindSpore+昇腾芯片的方案比基于V100的方案提升了70%-80%的性能,并在5月份取得了行业AI算力榜第一的成绩。
在部署态,为了将AI模型部署到端侧以实现端云协同,MindSpore提供了轻量化的MindSpore Lite版本。Lite版本与云端完整版使用了统一的MindIR,但在端侧上充分考虑到端侧硬件做了针对性优化。这些优化包括一些算子替换(用一些轻量化的运算代替一些重型运算),还会做一些算子前移后移,避免冗余计算。对于单个算子而言,则会设法希望提升其在端侧CPU上的运行效率。
这些措施结合取得了很好的性能表现。在华为P40手机上,MindSpore Lite的大多数性能指标都超过了TF Lite。
如今,MindSpore开源社区生态快速发展,在国内开发者群体中发挥着越来大的影响力。MindSpore已于今年开源,代码托管在码云平台。目前MindSpore已发布1.0商用版本,月底即将推出1.1版本。新版将支持40多个通用模型,上线270多个应用。MindSpore社区还有很多兴趣小组来交流各类议题,也欢迎新成员持续加入。
ModelArts:全流程加快AI应用开发和部署
有了AI计算框架,下一步就需要一套端到端的AI开发平台来实现AI应用的快速落地。华为云ModelArts架构师白小龙博士就此分享了华为云ModelArts一站式AI开发平台及关键技术,应用案例。
AI开发的核心流程主要包括了前期准备(方案设计)、数据准备、算法选择与开发、模型训练、模型评估与调优、应用生成/评估与发布、应用维护子流程。各个子流程都涉及很多复杂工作,存在成本、门槛、效率和可信等多方面的挑战。
由于目前AI开发者的数量远少于软件开发者的数量,如何让更多人以低门槛的方式上手AI开发、落地AI应用就成为了一个核心问题。在所有子流程中,华为云ModelArts通过提供大量的预置算法和框架,以及WorkFlow编排能力,最大化地降低了AI应用开发的门槛,从而加速了AI应用开发和部署全流程。华为云ModelArts整个平台分为基础平台和上层的预置套件两大部分,对上通过ModelArts Pro使端到端行业应用AI开发更简单。其中,基础平台覆盖AI开发、部署和交易过程需要的各项能力,预置套件则主要针对具体的应用场景提供具备一定泛化能力的沉浸式AI工程与WorkFlow模板,包括面向智能感知的视觉相关的WorkFlow、面向智能认知的NLP相关的WorkFlow、面向决策智能相关的WorkFlow等。以计算机视觉领域的目标检测任务为例,用户无需AI领域知识,只需简单几个步骤(上传数据、标注数据、训练、测试)即可完成一个AI应用开发,以低代码甚至零代码的方式大幅降低AI应用开发门槛。
当开发者需要深入到AI应用开发的各个子流程时,ModelArts提供了多项关键技术来帮助降本增效,并且降低门槛。
1)数据准备子流程
- 智能化数据增强:可根据跨域迁移自动生成新的可训练数据,从而减少了数据采集和数据标注的工作量。
- 智能数据筛选,自动化过滤约40%的脏数据。以停车位识别为例,平台可以自动筛除遮挡、过曝、过暗等图像,节省后续开发成本。
- 智能标注:1)支持基于半监督/主动学习的混合智能标注,可以混合无标注和已标注数据进行训练,减少主动学习所需的迭代次数,获得5倍标注效率并提升标注精度。平台还会自动生成优化建议,判断难例样本,建议采集更优化数据增强难例。2)支持交互式智能标注,以目标检测为例,仅需确认即可而无需画包围框,以图像分割为例,不需要手工通过多边形的方式标注轮廓,而仅需标注少数几个点就可以实现轮廓的自动识别。这种智能的交互式能力使得标注量将大大降低。
- 数据智能分析,根据图像亮度、饱和度、分辨率、复杂度、色彩等信息给出分析建议。这将为后续训练集和验证集的对比分析、超参选择提供量化依据。
2)算法开发和选择子流程
- 算法选择:为了解决一个AI应用问题,大多数算法工程师或者数据科学家大多不会从头开发一个全新的算法,而是选择已有的算法,进行快速实验,然后不断改进迭代。为了实现真正的普惠AI开发,使得AI算法的选择更加方便,ModelArts提供了几十种高性能、高精度的预置算法库,可以直接使用而无需任何手工修改。大多数算法的精度比开源版本高0.5%~6%,性能高30%~100%。部分预置算法底层基于自研的EI-Backbone预训练模型,在多项数据集上都可以使得精度有所提升。通过AI资产分享交易中心——AI Gallery,用户可以购买或订阅优秀的这些预置算法资产,也可以上传和贡献新的预置算法。
- 算法开发:如果已有预置算法不能满足要求,开发者可以使用ModelArts提供的Serveless化Notebook开发环境,相比于业界已有的开发环境,开发调试成本可降低数倍,并且在Notebook中,ModelArts平台预置了大量算法开发样例,开发者可以基于这些样例进行二次开发。
3)模型训练子流程
- 训练加速:ModelArts内置了训练加速框架MoXing,底层对接了常用计算引擎(如MindSpore、TensorFlow、PyTorch等)通过一系列优化措施(数据、计算、训练策略、优化器、分布式通信等)来提升模型的训练性能,最大可支持4096卡分布式训练,训练性能业界第一。平台还实现了同一套算法代码同时兼容单机单卡和多机多卡,也支持在不同的AI设备之间切换,用户改一个配置项就可以从训练模式变成验证模式或预测模式。
- 弹性训练:当多个用户共享训练资源时,可以允许用户的训练作业在模型精度不变的前提下实现资源动态伸缩。这样当整个集群存在空闲时,就可以将已有训练作业进行扩容,使训练速度获得成倍提升。用户在ModelArts上训练的时候有高性能、标准和经济三种模式可供选择。经济模式会尽可能复用底层,成本可大幅下降。
- 联邦训练:为了在训练过程中保证数据安全,ModelArts还支持联邦训练方案,并提出自研的联邦聚合算法FedAMP,并通过自适应方式,使得有相似数据的用户之间联邦作用更强。
4)模型评估与调优子流程
- 多元搜索:开发者只需修改3行代码即可提升精度或性能,ModelArts还可以针对训练时间较长的作业,实现快速调参策略,大幅缩减超参搜索时间。并提供可视化能力将多个搜索结果按照各种指标排序便于开发者快速选择。
- 模型评估与智能诊断:ModelArts可以自动针对模型的精度或性能给出调优建议。此外,针对模型的鲁棒性,平台内置了一些鲁棒性对抗工具,能够自动识别算法存在的安全问题并给出改进和调优建议。
5)应用生成、评估与发布子流程
- 模型编排与推理框架:针对模型推理成本高、AI开发流程难以闭环的问题,ModelArts平台引入了Serveless端边云混合部署和自研高性能推理框架。平台底层推理框架可根据用户描述的算子自动生成推理图;模型在云端部署时,平台支持自动弹性伸缩和动态加载,在边缘部署时则支持一键下发。
6)应用维护子流程
- 数据采集与难例诊断:AI模型上线后,ModelArts平台可自动采集模型运行数据,识别并筛选出数据漂移,自动生成诊断建议。
整体上华为云ModelArts关键技术总结如下:
华为云ModelArts自发布以来,在园区、工业、城市、交通、家庭、水务、环保等领域获得广泛应用。ModelArts平台可以很好地满足全场景的AI应用需求,包括智能感知、智能认知和智能决策等领域都有成熟的实践。典型案例包括面包店的自动面包识别和结账机器、OCR文字语义识别、游戏AI(智能对战)、药物生成等等。ModelArts端云协同方案也已经在停车自主缴费等场景实践落地。
HiLens:端云协同多模态AI应用开发和实践
人工智能的发展正经历从感知到认知,从单模到多模,从云侧到端云协同的演进。华为云人工智能算法专家夏飞博士分享了使用华为HiLens平台开发端云协同多模态AI应用和落地实践。
华为HiLens 端云协同多模态AI开发应用平台,提供简单易用的开发框架、开箱即用的开发环境、丰富的AI技能市场和云上管理平台,对接多种端侧计算设备。打通线上线下开发和部署流程,开发者只需在云上完成一次多模态AI应用开发,既可以部署到云侧,也可以部署到端侧和边缘侧,能够很好地解决企业开发端云协同AI应用的需求。HiLens平台还能方便地接入多模态数据,并支持低代码开发流程,开发者只需简单几步即可完成端云协同AI应用开发和部署。目前,HiLens已经在智慧门店、智慧家庭、智慧教育、智慧交通等端云协同场景发挥作用。
ModelArts Pro在行业多模态AI开发的应用实践
随着行业AI落地逐步加速,在行业多模态AI开发中也面临诸多挑战,如行业业务复杂度高,AI应用开发需要丰富的行业经验支持;定制代码工作量大,耗时长,无法快速业务上线;通用AI具有局限性,不支持行业特定业务流程等。华为云EI智能体技术总监朱声高博士分享了如何利用华为云ModelArts Pro企业级AI应用开发套件加速AI场景化落地。
华为云ModelArts Pro是专为企业级AI应用打造的专业开发平台,平台内以预置工作流和功能套件的形式,沉淀了行业AI应用实践场景的Know-How,使企业实现零基础、零代码快速AI开发。另外,企业也能根据需求灵活编排新的行业工作流,基于AI市场,用户还可以互相分享不同行业场景的行业AI工作流。ModelArts Pro以“授人以渔”的方式助力企业构建AI能力,赋能不同行业的AI应用开发者,让AI变得触手可及。
面向物流、石油、零售、金融、医疗、交通等行业场景,华为云基于领先算法及行业知识,首批推出了ModelArts Pro文字识别、视觉、自然语言处理、知识图谱等开发套件及端云协同多模态AI应用开发套件HiLens,并在自助表单识别、食品种类识别、测井油气层识别等业务场景中落地实践,全面提升行业AI开发效率和行业落地效果,带来全新的行业AI落地方式。
解决行业落地痛点,推进AI广泛应用:华为云携手开发者共同迎接普惠AI时代
四位华为AI领域博士的深度分享,为开发者们全方位解析了华为全栈全场景AI开发平台的诸多优势与能力,并解决了企业在AI应用落地实践过程中遇到的许多顾虑和难题。在华为AI计算框架、开发平台和开发套件的支持下,企业可以快速针对当前业务需求开发AI应用,方便地嵌入已有的业务流程,并在短期内就能看到实际效果与收益回报。
基于计算机视觉、语音语义和决策优化三大AI领域长期的基础研究和各行业的AI项目实践,华为云在AI技术领域持续创新,不断推出适应市场需求的创新能力,并持续发力AI开发生态建设,与企业和开发者共同迎接普惠AI的全新时代。
华为全栈AI技术干货深度解析,解锁企业AI开发“秘籍”的更多相关文章
- SpreadJS + GcExcel 一出,谁与争锋!全栈表格技术轻松应对复杂公式计算场景(一)
设计思路篇 Excel是我们日常办公中最常用的电子表格程序,不仅可满足报表数据的计算需求,还可提供绘图.数据透视分析.BI和Visual Basic for Applications (VBA)宏语言 ...
- 全栈工程师-史上最强VSCODE插件-提高开发效率
当你点进来的时候 ,你可能是被标题吸引进来的,也有可能是 偶然间,看到的,首先恭喜你,已经准备好向全栈开发工程师靠近 ,那我们不说废话,直接开始,咱们先从安装步骤开始讲起 ,因为有些人连插件在哪都不知 ...
- 一图读懂基于鲲鹏处理器的全栈混合云华为云Stack6.5
[摘要] 够料的全栈混合云干货信息,速戳! 近日,在2019华为云城市峰会广州站上,华为云发布基于鲲鹏处理器的全栈混合云解决方案HCS 6.5.x86+鲲鹏,双驱动开启云上新架构;云上+本地,双平台无 ...
- 老男孩Python高级全栈开发工程师三期完整无加密带课件(共104天)
点击了解更多Python课程>>> 老男孩Python高级全栈开发工程师三期完整无加密带课件(共104天) 课程大纲 1.这一期比之前的Python培新课程增加了很多干货:Linux ...
- 【Bugly技术干货】那些年我们用过的显示性能指标
Bugly 技术干货系列内容主要涉及移动开发方向,是由 Bugly 邀请腾讯内部各位技术大咖,通过日常工作经验的总结以及感悟撰写而成,内容均属原创,转载请标明出处. 前言: 注:Google 在自己文 ...
- 【Bugly 技术干货】Android开发必备知识:为什么说Kotlin值得一试
1.Hello, Kotlin Bugly 技术干货系列内容主要涉及移动开发方向,是由 Bugly邀请腾讯内部各位技术大咖,通过日常工作经验的总结以及感悟撰写而成,内容均属原创,转载请标明出处. 1. ...
- 全栈必备 JavaScript基础
1995年,诞生了JavaScript语言,那一年,我刚刚从大学毕业.在今年RedMonk 推出的2017 年第一季度编程语言排行榜中,JavaScript 排第一,Java 第二,Python 反超 ...
- 全栈必备Log日志
Log日志,不论对开发者自身,还是对软件系统乃至产品服务都是非常重要的事情.每个开发者都接触过日志,以至于每个人对日志的了解都会有所不同. 什么是日志 日志是什么呢?老码农看来,日志是带有明确时间标记 ...
- 分享一款自带工作流引擎的NodeJS全栈框架,接单快手、创业神器
CabloyJS是什么 CabloyJS是一款自带工作流引擎的Node.js全栈框架, 接单快手.创业神器, 基于koa + egg + vue + framework7 + mysql 在线演示 场 ...
随机推荐
- Leetcode 周赛#202 题解
本周的周赛题目质量不是很高,因此只给出最后两题题解(懒). 1552 两球之间的磁力 #二分答案 题目链接 题意 有n个空篮子,第i个篮子位置为position[i],现希望将m个球放到这些空篮子,使 ...
- 快要C语言考试了,大学生们收好这些经典程序案例,包你考试过关!
距离考试越来越近 编程大佬早已饥渴难耐 电脑小白还在瑟瑟发抖 但是不要怕! 来看看这些经典程序案例 包你考试过关! [程序1] 有1.2.3.4个数字,能组成多少个互不相同且无重复数字的三位数?都是多 ...
- LeetCode 018 4Sum
题目描述:4Sum Given an array S of n integers, are there elements a, b, c, and d in S such that a + b + c ...
- 如何自动化你的Excel导入导出(Java)?
GitHub | 中文 | English | 博客 为什么使用AutoExcel? Excel导入导出在软件开发中非常常见,只要你接触过开发,就一定会遇到.相信很多人会跟我一样选择用Apache P ...
- 第15.38节 PyQt(Python+Qt)入门学习:containers容器类部件QDockWidget停靠窗功能详解
专栏:Python基础教程目录 专栏:使用PyQt开发图形界面Python应用 专栏:PyQt入门学习 老猿Python博文目录 一.概述 QDockWidget类提供了一个可以停靠在QMainWin ...
- mysql中innodb引擎的mvcc机制和BufferPool缓存机制
一.MVCC (1)mvcc主要undo日志版本链和read-view一致性视图来保证多事务的并发控制,mvcc是innodb的一种特殊机制,他保证了事务四大特性之一的隔离性(原子性,一致性,隔离性) ...
- 洛谷P2423 [HEOI2012]朋友圈
题目大意: 有\(A,B\)两个点集,每个点有点权,在\(A\)集合中,两个点之间有边满足\(a_i\ xor\ a_j\ mod\ 2 = 1\),在\(B\)集合中,两个点之间有边满足\(b_i\ ...
- CF1406E 【Deleting Numbers】
蒟蒻语 蒟蒻这次 \(CF\) 又双叒叕掉分了,\(C\) 都没有调出来. 还好再最后 \(10\) 秒钟调了下 \(E\) 块长 (块长 \(100\) => \(98\)),才没有掉得那么惨 ...
- 页面上下载canvas中的内容作为图片
使用如下代码,获得Canvas图像对应的data URI,也就是平常我们所说的base64地址 var dataUrl = document.getElementById("canvasId ...
- 移动端H5微信分享
移动端H5微信分享功能,可以使项目更好地传播. 微信官方教程文档: 微信JS-SDK说明文档 步骤一:绑定域名 先登录微信公众平台进入"公众号设置"的"功能设置&quo ...