nxcjh 2019-07-01
基于华为云EI ModelArts,体验从零打造AI应用模型
现如今 AI 技术、概念火爆、落地应用更是繁多,但开发呢?是否困难?到底有多痛?
据了解,大部分 AI 开发者的工作时间并不长,并且十有八九可能不是“科班出身”。从编写的教材、录制的课程中就可以看出,所有的教学都不可避免地带有很强的的学术性,即便有意避免研究导向,仍然离产业界的需求相去甚远。
并且随着新一波人工智能的热潮,人们发现手里的数据多了,电脑运算的更快了,但实际上,这些 AI 开发者使用的工具并不顺手。
为帮助开发者更深入地了解 AI 开发,快速上手 AI 开发必备技能,12 月 20 日的AIcon活动上,华为云举办了一场以「基于 ModelArts 平台的 AI 开发实战」为主题的现场挑战 Workshop!现场由来自华为云EI深度学习服务团队负责人为开发者讲解了 ModelArts 的 相关技术与应用,帮助开发者学习如何从 0 到 1 打造一款 AI 应用模型。
ModelArts——更快的普惠 AI 开发平台
ModelArts 是面向 AI 开发者的一站式开发平台,提供海量数据预处理及半自动化标注、大规模分布式训练、自动化模型生成,以及端-边-云模型按需部署能力,帮助用户快速创建和部署模型,管理全周期 AI 工作流。
同时,ModelArts 能够在 AI 开发全生命周期中,从原始数据、标注数据、训练作业、算法、模型、推理服务等,提供全流程可视化管理。支持千万级模型、数据集以及服务等对象的管理,无需人工干预,自动生成溯源图,选择任一模型就可以找到对应的数据集、参数、模型部署在哪里。其中最实用的训练断点接续功能、训练结果比对功能,在华为内部开发者中也颇受欢迎。
简单来说,ModelArts 的特点是“四快”:
数据管理快——让数据准备效率百倍提升
想象一下,如果你的老板给了你 10 万张无标签的图片,并要求你为这些数据打上标签。你该怎么办呢?
许多公司都在数据的大海里遨游,不论是交易数据、物联网传感器产生的海量数据、安全日志,还是图像、语音数据等等,这些都是未标注的数据。
正如华为云EI深度学习服务团队负责人所说,“当前做 AI 开发,最让开发者头疼的就是数据的采集和数据的处理。曾有开发者吐槽,光是数据准备就要占掉整体开发时间的 70%。”那么,为什么数据的处理这么难?效率为什么这么低呢?
人工智能界有一个说法:“有多少人工就有多少智能。”因为目前实现人工智能的主要方法是机器学习(目前火热的深度学习也是机器学习的一部分),而机器学习中目前大部分应用都是有监督的学习,即需要大量的 标注样本 去训练人工智能算法模型。
例如图像识别任务中,必须有大量已经标注好的图片,比如一张猫的图片,狗的图片等,你必须明确的告诉 AI 算法,这些图片里面是什么东西,它再从中去学习出相应的“知识”。
所以,AI 并不像传统想象的那样,丢一堆数据给 AI 算法,AI 算法就能够从中学习到各种有用的知识。而是背后有大量的人工在标注数据。
而 ModelArts 在数据管理方面,会将数据进行预处理,用 AI 的数据去标注数据,即自动化标注和半自动化标注。ModelArts 可对数据采样和筛选,预标注,缩减需要标记的数据量,降低工作量。目前, ModelArts 已经在自动驾驶领域有非常多的应用,包括人车模型、信号灯模型等等,这些模型在自动驾驶的场景里面,可以快速地提升数据处理的效率,实时地处理数据。在未来,ModelArts 也将面向通用计算机的其他领域。
训练快——模型训练耗时减低一半
在模型训练部分,ModelArts 通过硬件、软件和算法协同优化来实现训练加速。尤其在深度学习模型训练方面,华为 将分布式加速层抽象出来,形成一套通用框架——MoXing(“模型”的拼音,意味着一切优化都围绕模型展开)。
采用与 fast.ai 一样的硬件、模型和训练数据,ModelArts 可将训练时长可缩短到 10 分钟,创造了新的纪录,为用户节省 44% 的时间。
MoXing 是华为云 ModelArts 团队自研的分布式训练加速框架,它构建于开源的深度学习引擎 TensorFlow、MXNet、PyTorch、Keras 之上,使得这些计算引擎分布式性能更高,同时易用性更好。
MoXing 内置了多种模型参数切分和聚合策略、分布式 SGD 优化算法、级联式混合并行技术、超参数自动调优算法,并且在分布式训练数据切分策略、数据读取和预处理、分布式通信等多个方面做了优化,结合华为云 Atlas 高性能服务器,实现了硬件、软件和算法协同优化的分布式深度学习加速。
有了 MoXing 后,上层开发者可以聚焦业务模型,无需关注下层分布式相关的 API,只用根据实际业务定义输入数据、模型以及相应的优化器即可,训练脚本与运行环境(单机或者分布式)无关,上层业务代码和分布式训练引擎可以做到完全解耦。
另外,衡量分布式深度学习框架加速性能时,主要看吞吐量和收敛时间。在与吞吐量和收敛时间相关的几个关键指标上,华为云 ModelArts 都做了精心处理:
在数据读取和预处理方面,MoXing 通过利用多级并发输入流水线使得数据 IO 不会成为瓶颈;
在模型计算方面,MoXing 对上层模型提供半精度和单精度组成的混合精度计算,通过自适应的尺度缩放减小由于精度计算带来的损失;
在超参调优方面,采用动态超参策略(如 momentum、batch size 等)使得模型收敛所需 epoch 个数降到最低;
在底层优化方面,MoXing 与底层华为自研服务器和通信计算库相结合,使得分布式加速进一步提升
那么,在 MoXing 一系列的优化之后,实际效果如何?以国际权威成绩来参考:
在斯坦福大学发布 DAWNBenchmark 最新成绩中,在图像识别(ResNet50-on-ImageNet,93% 以上精度)的总训练时间上,华为云 ModelArts 排名第一,仅需 10 分 28 秒,比第二名提升近 40%。
在这个汇聚谷歌、亚马逊 AWS、fast.ai 等高水平队伍的国际权威深度学习模型基准平台上,华为云 ModelArts 第一次参加国际排名,便实现了低成本、快速又极致的 AI 开发体验,其海量数据预处理及半自动化标注、大规模分布式训练、自动化模型生成以及端 - 边 - 云模型按需部署能力,更是体现了当前中国业界深度学习平台技术的领先性。
上线快——一键部署到云、端、边,支持各种上线场景
现如今,纵观整个 AI 产业,不仅仅是云,还会有边和端都需要部署的场景。然而,在 AI 规模化落地的场景下,模型部署会非常复杂,需要写代码集成到应用系统,维护、更新。例如在智慧交通领域,更新后的模型,需要一次性同时部署到各种不同规格、不同厂商的摄像头上,这是一项非常耗时、费力的巨大工程。
对于此类场景,ModelArts 可以一键推送模型到所有边缘、端的设备上,云上的部署还支持在线和批量推理,满足大并发和分布式等多种场景需求。
开发者可以在 ModelArts 上获得一些高并发、自动弹性伸缩的特性。能够根据用户制定的策略,自动调整云服务器的计算资源,跟随用户的业务需求变化。在业务需求下降时自动减少云服务器,节约资源和成本;在业务需求高峰时自动增加云服务器,保证业务平稳健康运行。
上手快——自动学习,零 AI 基础构建模型
ModelArts 具备自动学习功能,支持模型的自动设计与自动调参等,能够帮助开发者提升开发效率、快速上手。
为什么需要自动学习?
AI 开发有两大类,第一类为 AI 认知服务,比如图像识别和 OCR 等,这一类门槛很低,但灵活性差,只支持特定类型。当不满足需求时,只能定制一个模型,周期非常长费用也比较高。第二类就是找 AI 的算法工程师、算法专家,去做自己的模型;还有一类就是那些直接用 AI 的框架自己写代码以及自己训练数据,这一类的门槛较高,灵活度也很高。而自动学习就是希望能够打破这两者,既有一定的定制化的能力,又能够降低 AI 定制化模型的门槛,不需要写代码,用户可以定制化自己的模型的特点。
在自动深度学习里面,关键的技术是能够做到多维度下的模型的架构自动设计,包含模型的元学习,涉及一些训练指标,还有推动网络涉及的推理速度和监控等。另外还包括一些元学习的训练参数的自动配置、模型训练的参数配置及搜索等。
另外,由于深度学习向计算机视觉输入原始数据,整个特征工程是在神经网络里面做的,而机器学习需要很多算法工程师去识别哪些特征是对业务是起正向作用的,所以自动机器学习的关键技术,就是高效自动特征工程和自动调参。
除此之外,据华为云EI深度学习服务团队负责人介绍,华为云 ModelArts 还有一个特色,就是面向应用开发者。对于有经验的开发者,可以在 ModelArts上自行编写并导入算法代码,核心组件 MoXing SDK 支持丰富的模型库、优化算法和各类工具库;支持自动超参数调优;包含训练 - 验证 - 预测 - 模型导出的整套框架;开发者只需要编写一套代码就能自动实现单机及分布式化。
对于编程苦手却想快速生成模型的 AI 初学者,ModelArts 也预置了能够覆盖大部分常用应用场景的算法模型(如 RestNet_50、Faster_RCNN、SegNet_VGG_16 等,未来还将上线更多算法模型),所有预置模型的基于开源数据集训练,模型精度领先。只需配置数据路径 / 日志输出路径和 Hyper Parameter 自动选择设置就可以一键启动训练。
ModelArts 应用实例:金融票据 OCR 识别
金融票据,包括银行承兑票据和商业承兑票据,目前银行承兑票据占了 90% 以上的票据市场份额,金融票据 OCR 识别工作重点在于银行票据的识别。
对于业界普通 OCR 软件,在金融票据领域识别准确率不高,对于现有一些针对金融票据做过优化的 OCR,识别准确率也算达到 90%。由于金融票据金额不低,对于 OCR 识别要求很高,而金融票据难点在于票据格式多样且差别细微等。
另外,票据模型开发训练难点包括数据标注、模型训练、调参和部署上都有较多难点,对于 AI 开发水平要求很高,需要非常资深的 AI 专家进行繁琐和长时间对于票据 AI 进行不断训练。
通过 ModelArts 助力金融票据 OCR 识别的实战。多位 ATN 社区使用者使用后认为:ModelArts 适合 AI 的初学者,通过数据集的分类,可自动学习,无需调参等操作;适用于迁移学习;线上部署便利,逐步集成更多的数据标注工具,扩大应用范围。
后续,华为云 ModelArts 将进一步整合软硬一体化的优势,提供从芯片(Ascend)、服务器(Atlas Server)、计算通信库(CANN)到深度学习引擎(MindSpore)和分布式优化框架(MoXing)全栈优化的深度学习训练平台。
华为云 ModelArts 会逐步集成更多的数据标注工具,扩大应用范围,将继续服务于智慧城市、智能制造、自动驾驶及其它新兴业务场景,在公有云上为用户提供更普惠的 AI 服务