热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

基于百度英伟达EasyDL公开课的学习笔记

本文是基于智东西公开课《零算法基础的百度EasyDL定制化图像识别揭秘》整理的学习笔记本文非广告,标注单纯是出于尊重智东西和EasyDL的知识产权如若涉及侵权&#

本文是基于智东西公开课《零算法基础的百度EasyDL定制化图像识别揭秘》整理的学习笔记

本文非广告,标注单纯是出于尊重智东西和EasyDL的知识产权

如若涉及侵权,请联系本人

作者:李皮皮

谢绝任何不标注原出处的转载以及百度百家号抄袭

 

本次公开课为期一小时,涉及四个方面:

1. AI赋能行业的的痛点

2. EasyDL服务端和设备端技术解析

3. GPU集群加速EasyDL训练与推理

4. EasyDL赋能行业案例分享




AI赋能行业的痛点

在目前的AI行业中,需求大致可以分为两种:通用需求和定制需求。

对于通用需求,我们可以用通用模型解决。例如语音识别,图像识别,OCR,人脸识别等。

对于定制需求,则是一些通用模型解决不了的问题。例如辅助医药工作者对中草药进行鉴定,生物研究辅助研究员对生物品种进行分类……在本科阶段,北京邮电大学经管院的陈霞老师曾告诉过我们,电子商务做的就是抓用户的痛点,这一点也同样适用于互联网行业。根据百度AI技术生态部高级算法工程师赵鹏昊老师的介绍,AI定制需求的核心诉求大概有三个:

(1)客户往往需要使用自己的数据训练自己特有的模型

(2)客户通常对自己领域都有很强的专业知识,但是并不了解深度学习(以下简称DL),也不愿意去做复杂的模型训练、服务部署和运维

(3)客户的需求往往比较急切,希望快速验证模型效果(并直接获得可集成的定制化服务API和私有化部署能力)

根据这些痛点,百度的EasyDL应运而生,大致服务流程如下:

——图片摘自智东西公开课课件

 

这款产品的亮点是,它不仅提供云端的API服务,更提供了离线SDK的服务,能让用户在线下部署自己的私有化定制。




EasyDL服务端和设备端技术解析

在EasyDL的服务端,有下面几种核心技术:AI Workflow分布式引擎,百度自创PaddlePaddle深度学习框架,迁移学习,Auto Model Search机制, early stoopping机制,模型效果评估机制。下面来一一了解一下。

对于一个DL建模,大致工作流程如下:

(1)在数据仓库提取数据

(2)ETL*进行数据清洗,特征提取,验证集的切分

(3)分布式训练

(4)模型评估

(5)自动服务(auto serving)

 


* ETL(以下解释摘自百度百科《ETL》【1】): 

ETL,是英文 Extract-Transform-Load 的缩写,用来描述将数据从来源端经过抽取(extract)、交互转换(transform)、加载(load)至目的端的过程。ETL一词较常用在数据仓库,但其对象并不限于数据仓库。

ETL是构建数据仓库的重要一环,用户从数据源抽取出所需的数据,经过数据清洗,最终按照预先定义好的数据仓库模型,将数据加载到数据仓库中去。

信息是现代企业的重要资源,是企业运用科学管理、决策分析的基础。目前,大多数企业花费大量的资金和时间来构建联机事务处理OLTP的业务系统和办公自动化系统,用来记录事务处理的各种相关数据。据统计,数据量每2~3年时间就会成倍增长,这些数据蕴含着巨大的商业价值,而企业所关注的通常只占在总数据量的2%~4%左右。因此,企业仍然没有最大化地利用已存在的数据资源,以至于浪费了更多的时间和资金,也失去制定关键商业决策的最佳契机。于是,企业如何通过各种技术手段,并把数据转换为信息、知识,已经成了提高其核心竞争力的主要瓶颈。而ETL则是主要的一个技术手段。


这里需要注意,可能我们会有一个误区——AI训练集不需要太大。其实,AI的训练集往往都符合大数据的经典3V原则*,所以我们需要用MongoDB,Hadoop的DFS做数据存储、用spark集群做分布式预处理和模型评估、使用百度的PaddlePaddle调用框架建模,最后把训练好的模型通过Docker技术做AI平台服务。个人认为这是一个很好的学习指南,让大数据工程师能够很好查漏补缺。


大数据经典3V原则(摘自动点科技文章【2】):

如果你问人们,大数据是什么?比较样板化的答案通常是三个 V:数量(volume),效率(velocity)和广阔性(variety)。接下来他们会开始讨论,他们的数据到底有多大才能被定义为“大数据”。当你开始看到实际技术的时候,事情开始变得比较复杂。这些主要的挑战使事情发展到,今天已经没有单一的一种科技可以一次性处理有关于大数据的三个 V 的所有问题——数量。效率和广阔性。

 


刚才提到了的核心技术除去AI workflow, 还有百度自创PaddlePaddle深度学习框架。PaddlePaddle全名叫做PArallel Distributed Deep Learning, “是一个深度学习框架/语言”。在EasyDL中,Paddle有如下应用示例:

——摘自智东西公开课课件

可以看到,它可能是一个类TensorFlow的框架,具体我也没有了解过,就过了。

下面重点讲一下迁移学习(transfer learning)*。在我看来,迁移学习在百度这个产品中占据的是核心地位,为什么呢?因为普通的机器学习不能很好满足客户需求。一般来说有定制化需求的客户的标注数据都是很有限的,甚至其领域内的数据标注成本非常高。在这样的情况下,客户的需求确实通过较少的数据快速获得可用且准确率较高的模型。一般来说,从开头开始搭建神经网络显然不符合这样的客户需求。为了解决这个矛盾,百度使用了迁移学习。举个栗子,做中草药识别模型时,EasyDL会将已有的植物识别模型运用到中草药识别当中去:将百度大规模标注的数据集在深度神经网络上做预训练,将预训练参数加入神经网络中做调解(迁移学习),从而大大提高效率。这样可以将几十个小时的训练降低到几小时甚至几分钟量级。此外,EasyDL还支持多点预训练,持续闭环等机制,使得工作流实现配置化和自动化。


迁移学习(摘自知乎用户“刘诗昆”关于《什么是迁移学习(Transfer Learning)?这个领域历史发展前景如何?》的回答【3】)

迁移学习(Transfer learning) 顾名思义就是就是把已学训练好的模型参数迁移到新的模型来帮助新模型训练。考虑到大部分数据或任务是存在相关性的,所以通过迁移学习我们可以将已经学到的模型参数(也可理解为模型学到的知识)通过某种方式来分享给新模型从而加快并优化模型的学习效率不用像大多数网络那样从零学习(starting from scratch,tabula rasa)。


这里不禁想感叹一下当时学《电子商务概论》课程时,就觉得百度和腾讯是紧紧抓住了流量入口的。现在百度的搜索引擎产生的数据量真是奠定了其数据霸主的地位啊。

此外,EasyDL还使用了Auto Model Search 和 Early stopping机制,让少两样本就能有用高精度。Auto Model Search就是对模型结构和超参数做自动搜索,更好匹配不同类型数据,做最佳模型。而early stopping呢,能够降低过拟合风险。做过DL的同学应该都有体会,DL是能分分钟过拟合的,对于这种风险,early stopping能很好抑制过拟合和欠拟合。目前EasyDL的模型绝大多数准确率都在80%以上。

技术本身是一方面,学统计的同学肯定有体会,模型的评估也是至关重要的。在呈现评估结果时,EasyDL就非常好的利用了混淆矩阵的各个指标和F1-score,做了尽可能精细的结果展示。这里我觉得有一个亮点,就是bad case的展示。一般可能大家是不愿意把拟合的不好的结果放出来的,但是百度这里把badcase放出来,让客户对预测结果有了一个感性的认知。再结合其领域内专业知识,说不定可以很好解决错误分类的问题,而且也有利于他们专门对错误分类的数据做一个训练集的补充。

下面来学习一下EasyDL设备端计算(Edge Computing)。据赵鹏昊老师说,这个设备端的实现是谷歌目前都没有的。这个创意我觉得超级好,现在真的有一点资源浪费严重了,上云就是高大上,但是并不是所有开发都需要云端才能完成的,够用就可以了。EasyDL在自己的设备上就可以完成,如果算力不够,就会进入雾计算;如果雾计算也不能满足需求,才会启动云计算。这样的多层计算结构很好的抑制了浪费(就是不知道真实情况如何了)。然后放一个云计算和设备端计算的对比课件:

 

服务器集群训练的机器学习模型通常大小都在200MB-500MB,其本质原因是模型含有上千万的单精度浮点参数。显然对于手机这样的设备端是不可能给这么多内存来计算的。所以就需要对模型进行体积压缩,通常目标体积为20MB-30MB。采用的压缩技术有:参数剪枝(Pruning),将浮点数量化成8bit或者4bit的数值,轻量网络(SqueezeNet, MobileNet)。

除去压缩问题,还有设备加速问题,这里通过异构芯片实现加速。还有一个小知识点,对于IOS的游戏开发,MPS库是一个常用的加速手段,更好利用IOS上的GPU做加速。还有使用ARM芯片通过NEON技术加速。




GPU集群加速EasyDL训练与推理

这一趴老师主要讲了一下英伟达GPU*集群的构成。通常使用的是英伟达特斯拉系列搭建平台,有P4, P40, V100这三个版。P4显存8G, P40显存24G, 所以通常用P4做部署,P40和V100做训练。结论就是GPU集群在做图像分类和物体检测时,性能远超CPU集群。EasyDL用户最快五分钟就可以使用小规模数据集训练,完成定制化模型并获得服务。并且GPU集群的分布式架构能够确保任何单节点的故障都不会影响整体的服务能力。

其实有一个细思极恐的问题,百度的EasyDL能够在短时间内完成如此快速的计算,一方面是算法等百度自身开发的功劳,但是有一个大功劳是英伟达的(“P4提升吞吐量高达30倍,同时延迟降低75%”)。不禁让人想起了中兴的惨案。核心的技术还是掌握在别人手里。


GPU与CPU的区别与联系(摘自CSDN用户“JackZhangNJU”的文章【4】)

从硬件来分析,CPU和GPU似乎很像,都有内存、cache、ALU、CU,都有着很多的核心,但是二者是有区别的。

但以核心为例,CPU的核心比较重,可以用来处理非常复杂的控制逻辑,预测分支、乱序执行、多级流水等等CPU做得非常好,这样对串行程序的优化做得非常好;

但是GPU的核心就是比较轻,用于优化具有简单控制逻辑的数据并行任务,注重并行程序的吞吐量。

简单来说就是CPU的核心擅长完成多重复杂任务,重在逻辑,重在串行程序;GPU的核心擅长完成具有简单的控制逻辑的任务,重在计算,重在并行。

另外,并行和并发的概念是不一样的,并行就是大家一起干,同时去做,并发就是多线程竞争资源





EasyDL赋能行业案例分享

这一部分是我觉得最有意思的了。目前EasyDL能解决的问题有三类,图像分类、物体检测和定制声音识别,还在开发别的功能(文字分类,情绪情感分析,视频监控)。给出了四个案例:

(1)蝶鱼科技:使用3000张图片训练,在制造和组装键盘流水线中,识别键盘组装后的合格性,将键盘图片分类。每条生产流水线每年节省12万人工检测员人力成本,准确率高达99%【科技是第一生产力啊。。。真是可怕】

(2)checkpoint零售安防:这是美国的一家连锁超市,用于识别购物车下层是否有未付款商品,需求是精准排除残疾人购物车和儿童购物车。之前该公司使用的是传感器,准确率极差,使用了DL后,准确率高达95%。据老师说,目前该公司计划全部更新店铺设备,使其能与百度EasyDL全面接轨。

(3)惠合科技e店佳:这个也非常有意思,是通过拍摄视频来识别超市的物品陈列是否符合要求。在以往,需要专人到店铺挨个检查,不但耗时耗力,还有很多作弊情况。使用DL后,审核效率提升了30%。这让我想到了除去法律和道德,科技也可以做到约束人性丑恶,减少作弊。

(4)CELLA(百度合作伙伴):CELLA为圣象地板做木地板瑕疵检测木星,并且发布生成离线SDK.检测率高达95%,提高了产能——处理单片木板原料的单位时间仅为原来的四分之一。



当然EasyDL也存在很多问题,我能想到的一个就是目前的数据标注问题,老师也提到目前是用户自己标注,后面可能会有众包。

真是该好好关注一下各大互联网公司的AI部署了,感觉自己好落后~~



参考文献:

【1】https://baike.baidu.com/item/ETL/1251949?fr=aladdin

【2】https://cn.technode.com/post/2013-11-08/3v-big-data/

【3】https://www.zhihu.com/question/41979241


推荐阅读
  • 产业智能化升级的浪潮并没有因为疫情等原因停滞不前,作为带来人工智能应用井喷式发展的深度学习技术在近几年也可谓是“时代宠儿”,想要尝试应用深度学习技术解决 ... [详细]
  • NoSQL数据库,即非关系型数据库,有时也被称作Not Only SQL,是一种区别于传统关系型数据库的管理系统。这类数据库设计用于处理大规模、高并发的数据存储与查询需求,特别适用于需要快速读写大量非结构化或半结构化数据的应用场景。NoSQL数据库通过牺牲部分一致性来换取更高的可扩展性和性能,支持分布式部署,能够有效应对互联网时代的海量数据挑战。 ... [详细]
  • ### 优化后的摘要本学习指南旨在帮助读者全面掌握 Bootstrap 前端框架的核心知识点与实战技巧。内容涵盖基础入门、核心功能和高级应用。第一章通过一个简单的“Hello World”示例,介绍 Bootstrap 的基本用法和快速上手方法。第二章深入探讨 Bootstrap 与 JSP 集成的细节,揭示两者结合的优势和应用场景。第三章则进一步讲解 Bootstrap 的高级特性,如响应式设计和组件定制,为开发者提供全方位的技术支持。 ... [详细]
  • V8不仅是一款著名的八缸发动机,广泛应用于道奇Charger、宾利Continental GT和BossHoss摩托车中。自2008年以来,作为Chromium项目的一部分,V8 JavaScript引擎在性能优化和技术创新方面取得了显著进展。该引擎通过先进的编译技术和高效的垃圾回收机制,显著提升了JavaScript的执行效率,为现代Web应用提供了强大的支持。持续的优化和创新使得V8在处理复杂计算和大规模数据时表现更加出色,成为众多开发者和企业的首选。 ... [详细]
  • 本文深入探讨了NoSQL数据库的四大主要类型:键值对存储、文档存储、列式存储和图数据库。NoSQL(Not Only SQL)是指一系列非关系型数据库系统,它们不依赖于固定模式的数据存储方式,能够灵活处理大规模、高并发的数据需求。键值对存储适用于简单的数据结构;文档存储支持复杂的数据对象;列式存储优化了大数据量的读写性能;而图数据库则擅长处理复杂的关系网络。每种类型的NoSQL数据库都有其独特的优势和应用场景,本文将详细分析它们的特点及应用实例。 ... [详细]
  • 本指南从零开始介绍Scala编程语言的基础知识,重点讲解了Scala解释器REPL(读取-求值-打印-循环)的使用方法。REPL是Scala开发中的重要工具,能够帮助初学者快速理解和实践Scala的基本语法和特性。通过详细的示例和练习,读者将能够熟练掌握Scala的基础概念和编程技巧。 ... [详细]
  • HBase在金融大数据迁移中的应用与挑战
    随着最后一台设备的下线,标志着超过10PB的HBase数据迁移项目顺利完成。目前,新的集群已在新机房稳定运行超过两个月,监控数据显示,新集群的查询响应时间显著降低,系统稳定性大幅提升。此外,数据消费的波动也变得更加平滑,整体性能得到了显著优化。 ... [详细]
  • 利用PaddleSharp模块在C#中实现图像文字识别功能测试
    PaddleSharp 是 PaddleInferenceCAPI 的 C# 封装库,适用于 Windows (x64)、NVIDIA GPU 和 Linux (Ubuntu 20.04) 等平台。本文详细介绍了如何使用 PaddleSharp 在 C# 环境中实现图像文字识别功能,并进行了全面的功能测试,验证了其在多种硬件配置下的稳定性和准确性。 ... [详细]
  • 技术日志:深入探讨Spark Streaming与Spark SQL的融合应用
    技术日志:深入探讨Spark Streaming与Spark SQL的融合应用 ... [详细]
  • 修复一个 Bug 竟耗时两天?真的有那么复杂吗?
    修复一个 Bug 竟然耗费了两天时间?这背后究竟隐藏着怎样的复杂性?本文将深入探讨这个看似简单的 Bug 为何会如此棘手,从代码层面剖析问题根源,并分享解决过程中遇到的技术挑战和心得。 ... [详细]
  • 深入理解Spark框架:RDD核心概念与操作详解
    RDD是Spark框架的核心计算模型,全称为弹性分布式数据集(Resilient Distributed Dataset)。本文详细解析了RDD的基本概念、特性及其在Spark中的关键操作,包括创建、转换和行动操作等,帮助读者深入理解Spark的工作原理和优化策略。通过具体示例和代码片段,进一步阐述了如何高效利用RDD进行大数据处理。 ... [详细]
  • 2019年斯坦福大学CS224n课程笔记:深度学习在自然语言处理中的应用——Word2Vec与GloVe模型解析
    本文详细解析了2019年斯坦福大学CS224n课程中关于深度学习在自然语言处理(NLP)领域的应用,重点探讨了Word2Vec和GloVe两种词嵌入模型的原理与实现方法。通过具体案例分析,深入阐述了这两种模型在提升NLP任务性能方面的优势与应用场景。 ... [详细]
  • 早晨七点半。北京初秋的凉风叫醒了住在望京西的你,睁开眼睛,一想到又要为人类的信息化事业贡献满满的正能量,你不禁哼唱起那句“早晨起来 ... [详细]
  • 百度AI的2020
    百度AI的2020-世界的2020,是充满不确定性的变局之年;中国的2020,是团结一心、共克时艰、于变局中开新局的希望之年;百度AI的2020,是坚定信念,拥抱变化,践行“科技为 ... [详细]
  • 词表|句子_自然语言处理(NLP)基于序列到序列的中英机器翻译
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了自然语言处理(NLP)基于序列到序列的中-英机器翻译相关的知识,希望对你有一定的参考价值。【自然语言处理&#x ... [详细]
author-avatar
show窝_515
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有