虽然人工智能浪潮已经热火朝天地进行了若干年,但对于很多企业来说,机器学习依然很遥远,听起来既昂贵,又困难,还需要大量高科技人才。不过目前这个复杂的领域有一个趋势:一切皆服务(everything-as-a-service)——无需太多投资,即可快速将机器学习用到实际业务中。通过使用机器学习云平台提供的服务,你可以开始构建第一个模型,只要一个小团队,就可以从机器学习的预测中获得有价值的信息。机器学习服务(Machine learning as a service, MLaaS)指的是包含机器学习大多数基础问题(比如数据预处理、模型训练、模型评估以及预测)的全自动或者半自动云平台的总体定义。
就目前国内市场来看,已有不少企业布局机器学习云平台并对外提供服务,也有很多公司基于开源组件着手开发自己的机器学习云平台,便于更好地开展企业内部的机器学习应用。在竞争激烈的 AI 框架和平台市场,去年下半年问世的华为云 AI 平台 ModelArts 凭什么脱颖而出?开发者为什么要选择 ModelArts?本文将深度解读 ModelArts 的技术架构和具体实践,希望你能从中找到答案。
ModelArts 是华为全栈全场景 AI 解决方案面向用户和开发者的门户,作为一站式 AI 开发平台,提供海量数据预处理及半自动化标注、大规模分布式训练、自动化模型生成,及端 - 边 - 云模型按需部署能力,帮助用户快速创建和部署模型,管理全周期 AI 工作流。
繁多的 AI 工具安装配置、数据准备、模型训练慢等是困扰 AI 工程师的诸多难题。ModelArts 最初是从华为内部衍生出来的一个产品,因为华为内有很多算法工程师、AI 开发工程者,这些痛点都会遇到,我们就把这些已经遇到的 AI 开发问题找到了对应的解决方案,积累下来,最后做成了 ModelArts 这个平台。目标是提供一站式的 AI 开发平台给开发者,从数据准备到算法开发,训练模型,最后把模型部署起来,集成到生产环境。因此,ModelArts 平台在华为云上开放给开发者之前,已经是被内部众多 AI 工程师锤炼出来的 AI 平台,以下是 ModelArts 功能总览:
AI 开发过程中经常需要处理海量数据,数据准备与标注往往耗费整体开发一半以上时间。ModelArts 数据处理框架包含数据采集、数据筛选、数据标注、数据集版本管理功能,支持自动化和半自动化的数据筛选功能,自动化的数据预标注及辅助自动化标注工具。AI 开发者可基于框架实现数据标注全流程处理,如下图所示:
ModelArts 支持各种 AI 场景,如计算机视觉、自然语言处理、音视频场景等;支持图片、文本、语音、视频多种标注任务,如图片分类、对象检测、图片分割、语音分割、文本分类等场景的数据标注任务;同时支持面向自动驾驶、医疗影像、遥感影像等领域标注的数据处理和预标注。
ModelArts 平台提供涵盖以上场景的标注工具,提供满足个人开发者独立标注、业余小团队小规模协作标注,和专业团队的大规划标注协同的项目化管理。针对大规模团队的标注,提供专业的项目管理、人员管理、数据管理,实现从项目创建、分配、管理、标注、验收全流程。针对个人小团队小规模协作标注,提供便捷易用的标注工具,最小化项目管理开销。
标注平台确保用户数据安全性,确保用户数据仅在授权范围内使用,标注对象分配策略确保用户数据的隐私性,实现标注数据脱敏需求。
标注工具提供 2D 框、3D 框、多边形、点、直线、mask、曲线等标注图形。支持像素级的分割,支持数据的预标注功能,通过预置算法和用户自定义算法实现数据在加载后自动标注,人工仅需要少量手工修正;如下图例子支持数据的自动辅助标注能力,标注员可通过简单标识后,由工具自动化标识准确信息(如轮廓信息), 在特定领域可提升人工标注效率 10 倍 。
在 AI 开发过程中搭建开发环境、选择 AI 算法框架、选择算法、调试代码、安装相应软件或者硬件加速驱动库都不是容易的事情,使得学习 AI 开发上手慢门槛高。为了解决这些问题,ModelArts 算法开发平台简化了整个开发过程,以降低开发门槛,算法开发过程如下图所示:
机器学习和深度学习领域,主流开源的训练和推理计算框架包括 TensorFlow、PyTorch、MXNet 等。ModelArts 平台为适应不同开发者的开发习惯及不同应用场景,支持所有主流 AI 计算框架,并提供友好易用的开发和调测环境。支持传统机器学习算法运行,如逻辑回归,决策树,聚类算法等;支持 CNN,RNN, LSTM 等多种类型的深度学习算法执行。
深度学习需要大规模的加速计算,往往需要大规模 GPU 集群进行分布式加速。而现有的开源框架需要算法开发者写大量的代码实现在不同硬件上的分布式训练,而且不同框架的加速代码都不相同。为了解决这些痛点,需要一种轻型的分布式框架或者 SDK,构建于 TensorFlow、PyTorch、MXNet 等深度学习引擎之上,使得这些计算引擎分布式性能更高,同时易用性更好,ModelArts 的 MoXing 可以很好地解决这些痛点,开发者基于 MoXing 开发的代码如下图所示:
简化调参,集成多种调参技巧包,如数据增强的调参策略,可简化 AI 算法工程师的模型调优痛苦。
简化分布式,支持将单机代码自动分布式,使算法工程师不需要学习分布式相关的知识,在自动化分布式的同时,也优化了分布式的性能,自动化和高性能是相辅相成的。
模型训练中除了数据和算法外,开发者花了大量时间在模型参数设计上。模型训练的参数直接影响模型的精度以及模型收敛时间,参数的选择极大依赖于开发者的经验,参数选择不当会导致模型精度无法达到预期结果,或者模型训练时间大大增加。
为了降低开发者的专业要求,提升开发者模型训练的开发效率及训练性能,ModelArts 基于机器学习算法及强化学习的模型训练自动超参调优,如 learning rate、batch size 等自动的调参策略;预置和调优常用模型,简化模型开发。
当前大多数开发者开发模型时,为了满足精度需求,模型往往达到几十层,甚至上百层,参数规模达到百兆甚至在 G 规格以上,导致对计算资源的规格要求极高,主要体现在对硬件资源的算力及内存、ROM 的规格的需求上。端侧资源规格限制极为严格,以端侧智能摄像头为例,通常端侧算力在 1TFLOPS,内存在 2G 规格左右,ROM 空间在 2G 左右,需要将端侧模型大小控制在百 K 级别,推理时延控制在百毫秒级别。在端侧手机场景下,对功耗发热都有更为严格的限制,所以边、端侧场景需要极轻量的小型化模型。
这就需要借助模型精度无损或微损下的压缩技术,如通过剪枝、量化、知识蒸馏等技术实现模型的自动压缩及调优,进行模型压缩和重新训练的自动迭代,以保证模型的精度损失极小。无需重新训练的低比特量化技术实现模型从高精度浮点向定点运算转换,多种压缩技术和调优技术实现模型计算量满足端、边小硬件资源下的轻量化需求, 模型压缩技术在特定领域场景下实现精度损失 <1%,模型大小压缩 10 倍 。
当训练数据量很大时,深度学习模型的训练将会非常耗时。在计算机视觉中,ImageNet-1k(包含 1000 个类别的图像分类数据集,以下简称 ImageNet)是最经典、常用的一个数据集,如果我们在该数据集上用一块 P100 GPU 训练一个 ResNet-50 模型,则需要耗时将近 1 周,这严重阻碍了深度学习应用的开发进度。因此,深度学习训练加速一直是学术界和工业界所关注的重要问题。
分布式训练加速需要从软硬件两方面协同来考虑,仅单一的调优手段无法达到期望的加速效果。所以分布式加速的调优是一个系统工程,需要从芯片、硬件设计阶段从硬件角度考虑分布式训练架构,如系统的整体计算规格、网络带宽、高速缓存、功耗、散热等因素,充分考虑计算和通信的吞吐量关系,以实现计算和通信时延的隐藏。
软件设计需要结合高性能硬件特性,充分利用硬件高速网络实现高带宽分布式通信,实现高效的数据集本地数据缓存技术,通过训练调优算法,如混合并行,梯度压缩、卷积加速等技术,实现分布式训练系统软硬件端到端的高效协同优化,实现多机多卡分布式环境下训练加速。 ModelArts 在千级别资源规格多机多卡分布式环境下,典型模型 ResNet50 在 ImageNet 数据集上实现加速比 >0.8,是行业领先水平 。
衡量分布式深度学习的加速性能时,主要有如下 2 个重要指标:
吞吐量,即单位时间内处理的数据量。
收敛时间,即达到一定的收敛精度所需的时间。
吞吐量一般取决于服务器硬件(如更多、更大 FLOPS 处理能力的 AI 加速芯片,更大的通信带宽等)、数据读取和缓存、数据预处理、模型计算(如卷积算法选择等)、通信拓扑等方面的优化。除了低 bit 计算和梯度(或参数)压缩等,大部分技术在提升吞吐量的同时,不会造成对模型精度的影响。为了达到最短的收敛时间,需要在优化吞吐量的同时,对调参方面也做调优。调参不到位会导致吞吐量难以优化,当 batch size 超参不足够大时,模型训练的并行度就会相对较差,吞吐量难以通过增加计算节点个数而提升。
对用户而言,最终关心的指标是收敛时间,因此 ModelArts 的 MoXing 实现了全栈优化,极大缩短了训练收敛时间。在数据读取和预处理方面,MoXing 通过利用多级并发输入流水线使得数据 IO 不会成为瓶颈;在模型计算方面,MoXing 对上层模型提供半精度和单精度组成的混合精度计算,通过自适应的尺度缩放减小由于精度计算带来的损失;在超参调优方面,采用动态超参策略(如 momentum、batch size 等)使得模型收敛所需 epoch 个数降到最低;在底层优化方面,MoXing 与底层华为服务器和通信计算库相结合,使得分布式加速进一步提升。
在斯坦福大学发布的最新结果 DAWNBench(An End-to-End Deep Learning Benchmark and Competition),在图像识别(ResNet50-on-ImageNet,93% 以上精度)的总训练时间上,ModelArts 排名第一,仅需 4 分 8 秒,排名结果( https://dawn.cs.stanford.edu/benchmark)
自动混合精度训练(充分发挥硬件计算能力)
动态超参调整技术(动态 batch size、image size、momentum 等)
模型梯度的自动融合、拆分
基于 BP bubble 自适应的计算 - 通信算子调度优化
分布式高性能通信库(nstack、HCCL)
分布式数据 - 模型混合并行
训练数据压缩、多级缓存
通常 AI 模型部署和规模化落地非常复杂。如智慧交通,在获得训练好的模型后,需要部署到云、边、端多种场景。如在端侧部署,需要一次性部署到不同规格、不同厂商的摄像机上,这是一项非常耗时、费力的巨大工程,ModelArts 支持将训练好的模型一键部署到端、边、云的各种设备上和各种场景上,并且还为个人开发者、企业和设备生产厂商提供了一整套安全可靠的一站式部署方式:
在线推理服务,可以实现高并发,低延时,弹性伸缩,并且支持多模型灰度发布,A/B 测试。
支持各种部署场景,既能部署为云端的在线推理服务和批量推理任务,也能部署到端,边等各种设备。
一键部署,可以直接推送部署到边缘设备中,选择智能边缘节点,推送模型。
ModelArts 基于华为自研 Ascend 310 高性能 AI 推理芯片的深度优化,具有 PB 级别的单日推理数据处理能力,支持发布云上推理的 API 百万个以上,推理网络时延毫秒。
随着 AI 在技术发展中的不断突破和使用,如视觉场景的很多 AI 场景中,面临数据云上云下传输成本过高,端侧芯片能力无法支撑多模型运算,芯片响应速度不足,场景要求越来越复杂的困难。为此 ModelArts 平台推出针对端云协同的 AI 应用开发平台能力,为个人开发者、企业和设备生产厂商提供了一整套应用能力库(人脸、语音、视频、文字等 Skill 库,有控制代码和模型组成),可以从云端下发部署到端侧,使端侧智能。
ModelArts 平台端云协同关键技术点包括:
针对不同类型的端侧平台,支持模型拆分、任务拆分,从而让端云协同起来。
利用模型管理能力,进行版本管理、模型搜索、模型复用。
支持对第三方平台的管理,针对模型安全进行权限认证,计费管理。
ModelArts 端云结合方案,在图片清晰度检测、智慧小区人脸识别等实际场景进行了应用。如在交警场景就使用 ARM 架构边缘云进行信控和流量检测,优化了交通灯、路灯等市政设施的控制,如对灯光亮度调整达到了 40% 节能的水平。
AI 开发中数据、模型、API 无法在有效范围共享,是 AI 开发资源的极大浪费。那么要如何便捷、高效、安全地实现 AI 开发资源复用技术,满足企业内部和外部开发者场景下对共享和隔离的需求?
AI 市场是在 ModelArts 的基础上构建的开发者生态社区,提供模型、API 的交易,数据、竞赛案例等内容的共享功能,为高校科研机构、AI 应用开发商、解决方案集成商、企业及个人开发者等群体,提供安全、开放的共享及交易环境,加速 AI 产品的开发与落地,保障 AI 开发生态链上各参与方高效地实现各自的商业价值
支持企业团队内部数据、模型、API 的共享管理,提升团队协同开发效率。同时也为广大外部开发者提供数据、模型、API 共享交易平台,实现开发者的知识到价值变现。AI 市场支持百万数量级的数据、模型、API 的云端存储规模,万级用户高并发访问。
AI 要规模化走进各行各业,必须要降低 AI 模型开发难度和门槛。当前仅少数算法工程师和研究员掌握 AI 的开发和调优能力,并且大多数算法工程师仅掌握算法原型开发能力,缺少相关的原型到真正产品化、工程化的能力。而对于大多数业务开发者来说,更是不具备 AI 算法的开发和参数调优能力。这导致大多数企业都不具备 AI 开发能力。
ModelArts 通过机器学习的方式帮助不具备算法开发能力的业务开发者实现算法的开发,基于迁移学习、自动神经网络架构搜索实现模型自动生成,通过算法实现模型训练的参数自动化选择和模型自动调优的自动学习功能,让零 AI 基础的业务开发者可快速完成模型的训练和部署。依据开发者提供的标注数据及选择的场景,无需任何代码开发,自动生成满足用户精度要求的模型。可支持图片分类、物体检测、预测分析、声音分类场景。可根据最终部署环境和开发者需求的推理速度,自动调优并生成满足要求的模型。
ModelArts 的自动学习不止为入门级开发者使用设计,它还提供了“自动学习白盒化”的能力,开放模型参数,实现模板化开发。在调研开发者需求时,很多资深的开发者说,希望有一款工具,可以自动生成模型,然后在这个基础上修改,这很像普通软件的模板化开发,在一个半成品的基础上调优,重新训练模型,提高开发效率。
自动学习的关键技术主要是基于信息熵上限近似模型的树搜索最优特征变换和基于信息熵上限近似模型的贝叶斯优化自动调参。通过这些关键技术,可以从企业关系型(结构化)数据中,自动学习数据特征和规律,智能寻优特征 &ML 模型及参数,准确性达到甚至专家开发者的调优水平。自动深度学习的关键技术主要是迁移学习(只通过少量数据生成高质量的模型),多维度下的模型架构自动设计(神经网络搜索和自适应模型调优),和更快、更准的训练参数自动调优自动训练。
华为与世界雨林保护组织的合作项目里,采用了 ModelArts 自动学习声音分类功能,实现对电锯和卡车噪音的精准识别,结果比很多博士手工调参精度还要高。
AI 开发过程中,如果开发者手动管理 AI 开发数据集、模型、训练参数,当需要大量的调优迭代时,实验过程难以追踪,结果难以复制。现有的代码管理产品不适合管理 AI 资产如图片、视频类的数据集,二进制的模型,部署后的 Web Services 等。为了解决这些问题,ModelArts 提供 AI 开发全生命周期管理,从原始数据、标注数据、训练作业、算法、模型、推理服务等,提供全流程可视化管理服务。
深度学习经常需要大量的数据去做模型训练,一次训练会用到百万张,甚至上亿张的图片(如 OCR 场景)。整个模型训练过程是不断的迭代调优的过程,期间要经常对数据集进行修改、调整以训练出精度更高的模型,所以需要对这样大体量的数据集进行版本管理,使得试验过程可追踪回溯。ModelArts 提供了面向深度学习大体量数据集的版本管理,如图所示:
模型开发过程中会需要大量的试验、迭代、调优。每一次迭代都会产生大量的 Log 和结果数据。AI 开发者需要工具对这些数据进行系统的管理,ModelArts 对所有训练任务进行管理,如下图所示,并且通过可视化的训练任务结果比对,大大提升了开发效率。
AI 开发过程中,需要大量的调优迭代,经常会出现训练完了,结果很满意,但却找不到原始数据来自于哪个版本。ModelArts 基于华为 EYWA 图计算引擎,实现在 AI 开发全生命周期中,从原始数据、标注数据、训练作业、算法、模型、推理服务等,提供全流程可视化管理,如下图所示,支持千万级模型、数据集以及服务等对象的管理,无需人工干预,自动生成溯源图, 选择任一模型,就可以找到对应的数据集、参数、模型部署在哪里 。
AI 模型是 AI 开发过程的核心产物,是企业 AI 开发者需要管理的重要资产。ModelArts 提供一系列的模型管理能力以满足 AI 开发者对于模型的工程管理需求和企业对于模型的审计需求。
模型版本管理:管理模型版本变化,进行模型比对和评估。
模型溯源:通过模型溯源图,直观地回溯模型生成的完整流程,满足企业模型审计的需求。
模型转换:可以将不同框架训练出来的模型转化为在 Ascend 芯片环境下可运行的模型。也会通过支持 ONNX 标准实现常用 AI 框架模型间的无缝转化。
模型精度追踪:模型部署上线之后,可以追踪模型在生产环境下的精度浮动。当模型的精度下降超过设定的阈值时,可以实现自动提醒功能,并且开启重训练过程。
ModelArts 集成了 Jupyter Notebook,可为 AI 开发者提供在线的交互式开发调试工具。开发者通过创建开发环境,可以自行编写和调测模型训练代码,然后基于该代码进行模型的训练。开发者还可以使用华为自研的分布式训练加速框架 MoXing 来编写训练脚本,让代码编写更加高效、代码更加简洁。
MoXing 使用手册请参见:
https://github.com/huawei-clouds/modelarts-example/tree/master/moxing-apidoc
ModelArts Notebook 开发环境非常适合作为人工智能教学的工具,当前已有多个知名教育机构基于 ModelArts 开设人工智能专业课程。
我们将围绕自研 Ascend 910、310 芯片和 Atlas AI 服务器做深度垂直优化,为广大开发者提供更高效、更优性价比的一站式 AI 开发平台,降低 AI 开发过程中每一层的开发门槛,把复杂留给华为云 ModelArts,把简单留给开发者。同时也会在强化学习、小样本训练、分布式二阶优化器、模型计算和通信算子的静态调度、设备感知驱动的多级流水线自适应优化、大规模芯片多级互联等新技术领域上持续进步。
《 Yarn 已过时!Kubeflow 实现机器学习调度平台才是未来 》
《微博深度学习平台如何支撑 4 亿用户愉快吃瓜? 》
《 独家解读!阿里重磅发布机器学习平台 PAI 3.0 》
《 滴滴机器学习平台架构演进 之路 》