在数字化转型浪潮席卷全球的今天,AI 技术已经成为行业公认的升级重点,正在越来越多的领域为业务带来创新价值。但在企业开发 AI 应用的过程中,经常会遇到准备不足、人才紧缺、开发成本高昂等问题,阻碍着 AI 的落地实践。
在 2020 年 12 月 20 日 QCon 2020 上海站上,华为云 AI 首席技术布道师陈亮携手四位华为 AI 领域博士,带来“全栈全场景 AI 应用开发实践”的专题分享。本场专题针对企业 AI 开发应用中面临的痛点和难点,从实践出发帮助企业构建成熟高效的 AI 开发流程。
本文主要总结自王俊博士与白小龙博士的分享内容。
1
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 社区还有很多兴趣小组来交流各类议题,也欢迎新成员持续加入。
2
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 端云协同方案也已经在停车自主缴费等场景实践落地。
3
HiLens:端云协同多模态 AI 应用开发和实践
人工智能的发展正经历从感知到认知,从单模到多模,从云侧到端云协同的演进。华为云人工智能算法专家夏飞博士分享了使用华为 HiLens 平台开发端云协同多模态 AI 应用和落地实践。
华为 HiLens 端云协同多模态 AI 开发应用平台,提供简单易用的开发框架、开箱即用的开发环境、丰富的 AI 技能市场和云上管理平台,对接多种端侧计算设备。打通线上线下开发和部署流程,开发者只需在云上完成一次多模态 AI 应用开发,既可以部署到云侧,也可以部署到端侧和边缘侧,能够很好地解决企业开发端云协同 AI 应用的需求。HiLens 平台还能方便地接入多模态数据,并支持低代码开发流程,开发者只需简单几步即可完成端云协同 AI 应用开发和部署。目前,HiLens 已经在智慧门店、智慧家庭、智慧教育、智慧交通等端云协同场景发挥作用。
4
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 落地方式。
5
解决行业落地痛点,推进 AI 广泛应用:华为云携手开发者共同迎接普惠 AI 时代
四位华为 AI 领域博士的深度分享,为开发者们全方位解析了华为全栈全场景 AI 开发平台的诸多优势与能力,并解决了企业在 AI 应用落地实践过程中遇到的许多顾虑和难题。在华为 AI 计算框架、开发平台和开发套件的支持下,企业可以快速针对当前业务需求开发 AI 应用,方便地嵌入已有的业务流程,并在短期内就能看到实际效果与收益回报。
基于计算机视觉、语音语义和决策优化三大 AI 领域长期的基础研究和各行业的 AI 项目实践,华为云在 AI 技术领域持续创新,不断推出适应市场需求的创新能力,并持续发力 AI 开发生态建设,与企业和开发者共同迎接普惠 AI 的全新时代。
点个在看少个 bug