绑定手机号
获取验证码
确认绑定
提问
0/255
提问
订阅开课提醒需关注服务号
回答成功
知道了
扫码关注智东西公开课服务号登录
请使用微信扫描二维码
扫描二维码分享给微信好友
您已订阅成功,有新课程,我们将第一时间提醒您。
知道了
发送提问成功
回答可在
“我的——我的提问”中查看
知道了
失败
欢迎来智东西
关注我们
智东西
车东西
芯东西
智东西公开课
0
0
百度算法大牛35页PPT讲解基于EasyDL训练并部署企业级高精度AI模型【附PPT下载与实操视频】
分类: AI技术
2020-11-03 14:28:46

出品 | 智东西公开课

讲师 | 百度AI开发平台高级研发工程师 饼干老师

导读:

数据不足的情况下,我们可以利用数据增强的方式进行弥补;训练效率的问题,可以通过预训练模型+迁移学习的方式节省训练时间;而在整个“炼丹”的过程中,我们也可以通过超参推荐实现自我优化,减少人工调参的成本;同时加上灵活的部署方式,可以实现高精度AI模型一站式开发与部署。

在5月9日晚7点的高精度AI模型公开课百度EasyDL专场中,百度AI开发平台高级研发工程师饼干老师,为大家系统讲解企业在AI模型开发中的难点,以及针对这些难点,百度EasyDL专业版又是如何解决的。

本文为此次专场的实录:

大家好,我是来自百度的饼干老师,目前负责EasyDL经典版、EasyDL专业版、EasyDL零售版的一些相关开发工作和算法调研工作。

今天的课程主题为《基于EasyDL训练并部署企业级高精度AI模型》。本次讲解的内容分为下面几个部分:

1、企业在开发与部署AI模型中面临的挑战

2、AI开发平台EasyDL介绍

3、EasyDL技术原理解析

4、脚本调参和Notebook开发方式介绍

5、EasyDL企业应用案例

6、实操:饮品检测模型训练、调优与部署

企业在开发与部署AI模型中面临的挑战

目前各行各业都需要AI的落地,但是在落地的过程中,往往需要定制化地开发AI模型。在一次联合调研过程中,我们发现约86%的市场需求需要定制化开发业务场景下的AI模型。这里画一个重点,是“定制”这两个字。

百度的AI开放平台已经提供了一些通用的接口,但是这些通用接口只能满足一部分的需求,并不能满足所有的需求。比如科研机构的野生生物识别,这是属于一个细粒度图像分类的问题;还有工业上统计原材料的数量、或者说统计工业上的一些瑕疵;物流方面的包裹分拣;安防方面的厨师帽检测、安全帽施工检测;零售方面,统计SKU的数量、计算分销率、或者统计货物在货架上的占比等等。

然而在定制AI模型的时候,我们会遇到一些困难和挑战。数据采集与标注的成本非常高,而且由于大部分的开发者缺少训练模型的经验,导致整个模型迭代的优化时间会很长。其次我们需要将训练好的模型快速与业务系统紧密结合,因此在工程中的模型部署环节也需要花费很大的精力。

总体来说,目前定制AI模型面临着成本高、项目效果无法达到预期等问题。

AI开发平台EasyDL介绍

下面是第二部分,EasyDL的介绍。

EasyDL是一个企业级的一站式AI开发平台,同时支持定制化的训练模型。EasyDL为企业、以及个人开发者提供了AI模型开发中的全流程功能支撑,面对不同的群体提供多样化的产品形态。多样化的产品形态,包括EasyDL经典版,帮助零算法基础的用户定制高精度的AI模型;专业版,提供可编程操作,帮助开发者更加灵活地进行AI模型开发;零售版,结合零售场景中的数据、算法,做了一些场景优化和增值服务。

EasyDL底层基于百度自研的飞桨PaddlePaddle深度学习框架实现。支持图片、文本、视频、音频等输入数据。依托飞桨核心框架,提供数据预处理、模型训练、部署以及serving服务。目前提供的服务方式有4种:

1)公有云API:用户可直接调用百度云提供的API进行使用。

2)设备端SDK:做移动端、端设备、以及嵌入式的一些同学可以考虑使用设备端的SDK进行服务部署。

3)Edgeboard/十目软硬一体:目前我们所有的算法都会去优先适配这两款软硬体的设备。

4)本地服务器部署:针对一些有本地化、私有化部署需求的同学,我们提供本地化服务器部署的方式,同样可以达到serving的效果。

-EasyDL经典版

EasyD经典版是2017年11月份推出的全球第一个AI定制化开发平台,目前主要提供图像分类、物体检测、图像分割、文本分类、声音分类、视频分类等功能。其适合AI基础比较薄弱、或追求高效率开发的企业及个人开发者。

-EasyDL零售版

在经典版的基础之上,我们推出了零售版。提供结合了零售行业的数据、算法、工具等一些服务。其次,我们推出了一些增值功能,比如说SKU Cloud、货架拼接、智能排成、翻拍识别,门头识别等。

举个例子,比如说SKU Cloud,我们已经提供了一个1500类日常化品类的API ,在满足场景的情况下,可以直接使用提供的标准化API。如果有其他需求,则可以通过EasyDL零售版平台训练满足实际零售场景需求的SKU模型。该版本适用于有商品识别需求的零售行业企业或者服务商。

-EasyDL专业版

为了满足用户的深度编程、深度调参等需求,去年我们推出的EasyDL专业版。其中内置了百度自有的海量数据训练的预训练模型,目前在CV和NLP领域已经提供了多项的功能。其中在NLP领域,我们预置了百度自研的业界效果最好的预训练模型ERNIE和多种NLP经典算法网络。ERNIE在中英文的16个任务上超越了业界最好模型。2019年底,ERNIE以历史上首次超越90大关的成绩登顶自然语言处理领域最权威的GLUE评测榜单。之后在SemEval 2020 中摘得五项世界冠军。目前通过EasyDL专业版助力业界开发者,模型效果和开发效率全面提升。

最后介绍一下EasyDL的平台特性。与普通的机器学习工具相比,EasyDL从数据、模型训练、到最后的服务,提供了一站式的解决方案。我们面向用户也很广泛,可以是零基础的小白(经典版),也可以是有一定数据处理能力的开发者(专业版)。同时也提供了比较全面的定制化开发能力,包括分类、检测、分割、文本、声音等。在服务端我们提供了端云一体的解决方案,轻快即用,并内置大量的预训练模型。

EasyDL技术原理解析

然后我简单介绍一下EasyDL的一些基本技术原理。

在业务层面上,我们主要提供了数据集管理、模型训练、模型评估、模型校验和模型发布的功能,其底层依托于飞桨PaddlePaddle平台。

在工作流这一部分,我们自研了AI Workflow,可以实现数据服务、数据预处理、模型训练、评估模型、模型部署的整个Workflow定制化。

下面我们先介绍一下AI Workflow,然后主要讲一下数据服务,数据预处理和模型模型训练这三个部分。

-AI Workflow

提到模型训练,我们知道,不仅仅是训练这一个步骤,一般的深度学习都会经历从数据获取、数据预处理、模型训练、模型评估到最后服务部署的流程。EasyDL的AI Workflow,融合了传统的机器学习工作流和大数据处理,其中,数据获取是基于MongoDB和HDFS,数据预处理和评估是基于Spark这个大数据处理框架,模型训练是基于飞桨PaddlePaddle这个深度学习框架,serving也是基于k8s构建的一整套运维系统。

AI Workflow的基本功能就是要把这些架构完全不同的任务组织成工作流,自动完成流水线任务。进一步讲,AI Workflow还需要对任务进行并发管理、优先级管理、任务重试、支持幂等性等功能,此外,还需要对底层资源进行调度和分发,从而保障流水线可以高效有序地完成。

-数据服务

数据服务主要包括数据管理、智能标注、和数据闭环,其都可以通过EasyData来完成。EasyData是近期上线的智能数据服务平台,提供数据采集、标注、清洗、加工等一站式数据服务,助力开发者高效获取AI开发所需高质量数据。接下来重点介绍一下数据服务中的智能标注。

智能标注,只需要用户标注30%的数据就可以训练出与全量数据训练效果相等的模型,其标注的流程如下图右上角所示。当我们有成千上万的数据时,如果全部通过人工标注的方式进行标注,那么需要的工作量很大。所以我们可以先标注少量数据,启动智能标注,然后进行模型训练,通过少量数据训练出的模型自动对其他数据进行标注,而人工只需要对数据中的难例进行判断,如果符合标准,则可以直接进行标注,不符合标准,则启动下一轮智能标注的循环,极大地减少了人为的工作量。同时整个工作流也都可以通过AI Workflow来直接完成。

举个例子,如左上角所示。我们进行一个猫狗数据集的标注,如果利用模型进行识别,第一张图片中的小猫我们可以很容易地判断出它是一只猫,属于Easy Case,而后面两张图片就比较难识别,可能会被识别为其他的类别,属于Hard Case。所以,简单的Case是可以通过模型进行标注,而一些多样性比较大的Case还是需要人为进行标注。从最终标注的结果来看,我们大约只需要30%的标注数据,便可以达到100%标注数据所达到的效果,节省了70%的人力成本。

-数据预处理

我今天主要介绍一下数据预处理中的数据增强。举一个简单的例子,如下图所示。

比如说在我们采集到的数据中,品牌A的车头都是朝左,品牌B的是朝右,那么对于第三张图片,模型是识别为品牌A、还是品牌B呢?会不会将车牌识别为一样的呢?还是会识别车牌的朝向呢?

为了增强其类别的置信度,我们可以对原图进行数据增强,比如水平翻转、180度翻转、和270度翻转等。当然,翻转只是数据增强方式的一种,还有其他如抠图、裁剪等方式。

不同场景下所需要的增强方式是不同的。对于开发者来说,需要了解数据集与应用场景,以及每种数据增强方式的不同参数设置。

在EasyDL专业版中,我们提供了一种超参自动选择搜索的自动数据增强方式。在实际的操作过程中,我们会针对开发者提供的Training Data,提供预设置的增强策略,通过对策略和超参搜索,选择与该数据集特性强相关的增强策略,对数据进行有益地增强。

-模型训练

最后是模型训练部分。模型训练包括了四个部分,Transfer Learning、AutoDL、自动超参优化和分布式训练加速,下面我将为大家一一介绍。

Transfer Learning,所谓迁移学习,就是事先用一个大数据集训练出一个模型,然后用这个模型再接受用户自定义的小数据集来进行训练,对其中网络结构参数进行微调,从而使模型对于用户的小数据集更加敏感,达到好的识别效果。

那么为什么需要用迁移学习?我从0开始训练一个模型不行吗?一个是考虑用户数据稀缺性:从头训练一个深度神经网络模型,很依赖大规模的标注数据,但考虑到行业数据的收集难度和标注成本,非常难以获得。使用迁移学习的另一个原因是考虑训练时长:从0开始训练,往往需要几天甚至几周,但使用迁移学习,训练耗时只需要几小时甚至若干分钟,可以加快用户的模型迭代效率。

当然,迁移学习不是万能的。要使用迁移学习,前提是要保证源领域与目标领域的相似性,这里的源领域是指预训练模型所使用的数据集,目标领域指用户自定义的数据集。迁移学习要求它们具有相似性,只是目标领域更具定制化和细分化。

举个例子,比如你会骑自行车,那么应用迁移学习,相信你也能骑电动车,但若是你会骑自行车就想直接开汽车,那迁移学习做不到,因为差别太大了。

因此,EasyDL是使用了百度自有的海量数据进行预训练,对用户涉及到的各个应用场景,基本上都会有涉及,所以才能满足这个前提。

AutoDL,利用强化学习设计深度学习的框架。具体来说,随着硬件、应用场景和模态的多样化,我们使用的模型结构也需要不断进化。那在设计新模型的过程中,这个搜索空间极为庞大,想要尽可能探索这一空间,就必然要从手工设计模型,转向自动化生产模型。我们实际使用到的技术就是利用深度增强学习完成模型设计,系统由两部分组成,第一部分是网络结构的编码器,第二部分是网络结构的评测器。

编码器通常以RNN的方式把网络结构进行编码,然后评测器把编码的结果拿去进行训练和评测,得到包括准确率、模型大小在内的一些指标,反馈给编码器,编码器进行修改,再次编码,如此迭代。经过若干次迭代以后,最终得到一个设计好的模型。

自动超参调优,做过算法调优的朋友都知道,人工调参,需要设定一组超参数,跑一组实验,然后根据结果再来调整超参数,这个过程会非常耗时费力,因此我们需要转向自动调参。要做自动调参,就要涉及到超参推荐策略,也就是根据上一组实验结果的反馈,推荐出下一组实验的超参值,从而让任务自动化。具体的推荐策略简单的有Random, Grid(网络搜索), 具有推荐算法的策略常见的有TPE,bayes等。

此外,自动超参调优还有搜索方式的优化。普通的搜索方式就是并行独立搜索,即并行跑多组实验,全部跑完后收集结果,哪组结果最好,就认为哪组超参最优。另一种搜索方式是叫PBT,它也是并行搜索,但不独立。

这里我举例来说明,如上图中,有两个并发进行的实验,初始时传入的超参和模型权重都不相同,经过一定轮数的训练之后,到第2步会对两个worker效果进行对比,发现worker 0效果比较好,就进行第3步,把workder 0的权重和超参值复制到worker 1,worker 0本身的训练不受影响,而对worker 1,还要进行第4步,对复制过来的超参值加入一些扰动,使之与worker 0参数有所差异,再继续训练。这样就相当于在训练过程中把worker 1上原始的超参值给过滤了,并在好的超参基础上进行进一步实验,从而加快搜索效率。

分布式训练,前面几个模型训练阶段的优化都是针对模型效果的,其实在训练效率上,我们也有优化加速,那就是使用DGC深度梯度压缩机制。

DGC是由清华大学和斯坦福大学共同发表的论文中提出的一种方式。在分布式训练的过程中,各个Worker和ps,或者是Worker之间(这与分布式方式相关),都需要进行大量的梯度数据同步,而数据同步会花费大量带宽,对训练环境要求较高,同时耗时也高,尤其是随着训练节点数的增多,通信开销也将成倍增长。基于此,DGC算法就是挑选出实际有效的梯度数据,并进行压缩,从而大大减少了分布式训练时的通信开销,在论文中,DGC在保证精度未受损的情况下,压缩比例达到了270倍至600倍。

飞桨PaddlePaddle从1.6.2版本开始也集成了DGC的优化机制,我们也即将应用到EasyDL专业版中。可以看下我们做的对比实验,在v100上dgc机制加速明显,其中两机两卡单batch加速9倍、两机四卡单batch加速7.4倍。分布式的DGC已经在4月份的EasyDL专业版上使用,大家可以在训练的时候选择多节点方式进行训练。

脚本调参和Notebook开发方式介绍

下面给大家介绍一下EasyDL专业版的两种开发模式,脚本调参和Notebook。

脚本调参,进入到脚本调参页面之后,首先是数据集的选择。数据集可以是提前准备的数据集,包括分类、检测。

然后是数据增强策略的选择。我们这边支持自动搜索,如果选择默认配置,我们对每一个模型都会选择一个比较通用的增强策略。选择手动配置的话,用户可以根据自己的行业经验去配置增强策略。针对不同的场景,不同的想法,都可以通过手动的方式进行配置。

其次,是网络的选择。我这边选择的是一个Faster R-CNN网络,你也可以选其他如YOLO、RetinaNet等网络。并且同时支持Python2、Python3两个版本。

重点来了,如果你想修改这个模型的结构,或修改一些模型参数,你可以在这个脚本编辑里面点立即编辑进行编辑。上面暂时并不支持Backbone 的修改,就是说ResNet50+FPN是不能修改,但是box head,就是头部是支持修改的。

还有Batch size、Input of size、Epoch、以及学习率的变化、Learning rate的变化都是支持修改的。包括对于检测任务来说,一些uncle base方法、基于锚框的训练方法,我们都可以设置一些关于锚框的一些训练参数。

Notebook,是一个类似于Jupyter的开发工具。左侧的这几个文件都可以通过本地上传,数据集也可以本地上传,也可以直接用EasyDL把之前上传过的数据集直接拉到这个训练环境当中。你可以把这个环境理解成属于自己的一个高性能GPU服务器终端,我们在Notebook 里面,为每个Notebook 的用户内置了一个32GB、V100的GPU,这个性能是很好的。大家可以用这个Notebook去实现一些简单的模型,这就是完全把主动权交给大家。

如果说之前的EasyDL经典版是一个黑盒,那专业版的就可以修改一些参数,通过Notebook的开发模式,用户可以自己实现模型的定义、数据的读取、数据的增强、以及最后的预处理。大家如果有新的想法,都可以去体验一下我们的Notebook 。

EasyDL企业应用案例

最后再讲一些在EasyDL上经典的应用案例。

这是一个扶贫办的案例。汉中扶贫办使用EasyDL训练房屋类型、医学条件的识别模型,并将识别模型加入到他们的平台系统中,极大地提高工作人员的效率。以前并不能做到家家户户地检查,而通过这种方式,就可以做到全覆盖检查。

这是一个工业喷油嘴瑕疵的质检。柳州源创公司使用EasyDL物体检测的模型去训练它们工业喷油嘴瘕疵的检测模型,大约每年可以节约60万的成本,检测效率提升了30%。中间那个图片是他们的解决方案,其中的检测模型是用到了我们检测的模型。

零售场景中通过定制化的商品检测去进行陈列审核。惠合科技采用了EasyDL训练的商品检测模型,抽取了3000家零售门店并接入陈列审核,那么品牌商就可以通过这种方式计算到商品的排列占比、分销率等。从前是通过人力去观测这些数值,而现在通过AI的方式,让人员的效率大大提升了30%。

这个是我们内部的一个Case ,百度作文的小程序。通过EasyDL文本分类,训练识别出作文中的一些修辞手法,并且将修辞手法作为一个参数来对文章质量进行打分,然后再做一些排序,将文章质量高的结果排在前面,进行推荐。

百度算法大牛35页PPT讲解基于EasyDL训练并部署企业级高精度AI模型【附PPT下...
立即下载