Py学习  »  机器学习算法

【演讲实录】深入了解谷歌云AI和机器学习平台 | DevFest 2019

GDG • 4 年前 • 438 次点击  

排版:陈雅婷


12 月 15 日,@上海

❤️2500+ 参会者,60%+ 技术从业者

DevFest 2019 主会场3 个分会场

全仓爆满


这是一场与谷歌技术有关的开发者年度技术盛宴

也是一场汇聚了 GDG 成员爱与奉献的超级年会

更是 GDG 粉丝们一年一度的大型社交聚会



活动内容涵盖了多个领域的分享

包括技术架构解析、框架组件心得分享、金融领域应用实践、云音乐技术框架、二次元图像特效以及TensorFlow应用模块解析等等

每位嘉宾的分享都让到场的小伙伴有所收获




本文为第二篇演讲实录

Google Cloud Engineer王顺的《深⼊了解谷歌云AI和机器学习平台》


回顾第一篇Android GDE 朱凯的演讲《Kotlin Coroutines 和 Jetpack的结合使用》


嘉宾介绍


王顺 - Google Cloud Engineer


专注于谷歌云上大规模分布式数据计算和机器学习技术方案和最佳实践,在深度学习的模型训练及后续开发部署和大数据分析领域有多年的实践经验。曾在人工智能独角兽旷视科技担任主任架构。


开场白


大家好!我是王顺,Google Cloud- Customer Engineer ,非常荣幸有机会到上海来跟大家交流。我的演讲以技术为主,虽然我的主题里面有厂商背景,但还是希望大家关注这里面开源的一些东西,或者说开源在谷歌云上呈现的形态。基于我之前在谷歌云这一段时间的工作和很多客户的沟通、很多客户做的机器学习相关的平台或者训练,我可以参考讲一下怎样去实践。

 

我想跟大家介绍一下谷歌最近的进展,我自己看到的一些比较有趣的东西。基于这些,接下来会介绍在谷歌云上,比如说从下向上IaaS层面有什么独特的东西,然后PaaS层面给大家带来什么样的产品,最后快速地跟大家介绍预训练的一些模型,在云上呈现的服务形态。


谷歌人工智能和机器学习进展  

首先人工智能的进展,从图像分类领域来引入。大家都知道,深度学习虽然是一个有几十年发展的技术,但起起伏伏,最新的一波热潮,是因为2011年(李飞飞)老师做的ImageNet比赛,可以看到在2011年这时候错误率还是在26%,这是基于传统机器学习的方法得到的最佳结果。到了2012年AlexNet它运用了GPU,然后加上深度学习专家,他们当时是拿到了第一,之后包括13年的ZFNet,14年的GoogleNett,到了15年的ResNet,准确率逐渐提升,到了16年错误率已经降低到了3%,而在ImageNet这个领域,大家所认可的人肉眼观测错误在5%,深度学习已经超越了人的结果。



那么,我想跟大家介绍的是AutoML。其实我的同事Sherly在去年的DevFest上海的活动上专门做了AutoML这个主题的介绍。可以看到在AutoML1718年搜索出来的一个网络结构,名叫AmeobaNet,在相同的大规模的算力上面,它超越了刚才提到的Inception, ResNet,机器学习专家Fine-Tuning所找到的最优的网络结构,在相同算力下它的精度会更高。如果需要在移动端使用小模型,相同的AutoML生成的小模型性能,也是优于专家所发现的网络结构。当然AutoML并没有停滞在这个状态下,再看2019年的结果,EfficientNet。把Top1精度值提升到了84%以上--这是更新的结果,做机器学习的人都知道数据的重要性,ImageNet比赛本身它的训练的数据集是120万图片,如果我们去增加数据级的规格到更大的级别,从million扩展到billion,可以看到11月份的这篇文章,他把Top1的提升又涨了三个点到了87.4%。这个摘要里面,有提到一个数字,用了弱标记的数据是3.5B,通过使用更多的数据,把结果提升到更高。



当然AutoML不仅应用在图像分类,在别的领域,比如目标检测,AutoML找到比Mask RCNN更好的结果。在翻译、自然语言同样都取得了更好的结果。传统公司,传统行业很多的场景,是需要提供一个人工智能领域的解决方案,需要的是机器学习的专家,这也是最稀缺的资源。接下来需要的是海量的数据和超强算力。有了AutoML之后,有海量的数据和足够的GPU或者公有云上TPU这样的计算资源,同样可以找到最好的解决方案。这也是谷歌一直在力推的所谓的AI大众化。



另外一个技术的最新进展,BERT应该是19年最热的一个词。左上角是17年Google提出的transformer结构,通过整段的处理文本,相对token-by-token处理的RNN,可以把算力下降大概两个数量级以上,同时得到更好的结果。BERT进一步把很多Transformer堆叠在一起,并且有前向和反向的结构。比如智能问答机器人,可以提供更好的回答,他不仅学到了后面要回答的内容,他还理解了上下文,那么在阅读理解这样的场景里面,可以得到更好的结果,训练通过扣掉15%的单词,然后尝试得到一个模型,能复现原来被mask掉的这些词语。BERT这个模型出来之后,它在GLUE榜单上,不同的测试里面都取得了最好的结果。当然现在最好的结果站在BERT肩膀上又得到了进一步的推进。



可以看一下在我们的实际应用中产生了什么样的效果。这里面也分两个方面,第一个方面就是谷歌把BERT应用到了搜索里面,产生的影响是在谷歌搜索页面上1/10的搜索结果产生了变化。这是2014年RankBrain以来搜索上最大的进展,看右边一个简单的例子,比如搜索,巴西的游客想要去美国,那么输入这几个单词后,返回的结果里面同样包含了美国的游客去巴西的相关信息。因为这些关键词里面的to,它并没有能起到强调的作用。BERT可以更好的理解to这样的词承上启下的作用,所以它返回的结果更精准。另一方面是在Google之外,预训练模型fine-tune的方式已成为NLP领域的标配。以上是跟大家简要介绍Google在学术圈的最新进展。



谷歌几年前提出了A.I.first这种战略,所以看一下谷歌云上A.I.相关的产品都有哪些。从下而上可以看到,如果我简单的想去训练一个深度学习的模型,可以使用谷歌云上的计算资源,虚机加上谷歌云上的英伟达的GPU,或者谷歌云独有的TPU。当然如果我们是DevOps,希望给公司的A.I.团队提供支撑,那么可以参考AI Platform,这是PaaS层产品,可以基于Kubernetes去做深度学习的训练。刚才有提到AutoML,可以通过AutoML训练得到的模型,去扩充预训练的模型,在视觉、语言、对话,甚至结构化的数据,比如AutoML Table去做推理,还有一些更定制化的服务,GCP有ASL、Professional Service。



IaaS-Cloud TPU GCP用户的专有选项


在刚才的结构里面有这么多的选项,我挑其中比较有特色的跟大家做一个简单的介绍。最简单的是虚机,那么虚机有什么特色?它针对深度学习的应用软件,比如Tensorflow、PyTorch、Scikit-Learn、Caffe等,做了性能优化以及版本的适配,可以帮助大家快速设计原型,体验跟on-prem环境下同样都是Jupyter Notebook,体验是一致的。


重点想要跟大家介绍的是谷歌云上独有的TPU,因为TPU这款硬件只能在谷歌云上才找得到。



它的特点就是处理能力特别强,是专门针对深度学习矩阵运算设计的。现在在云上可用的有两代TPU产品,V2和V3。我们看一下产品,每个卡有4个Chips,每个Chip有两个Core,我们叫它 V2-8。对应的处理能力是180 Tflops,对应的高带宽内存64 GB。把64张这样的卡拼成一个大的机群,处理能力可达11.6 Pflops,这就是V2 Pod: 我们称它为 V2-512,可以看到这个图里每个TPU卡连接到一个CPU节点上。



第三代同样的是8个Core,所以叫 V3-8,那么因为处理能力得到了一倍以上的提升,从180 Tflops扩展到了420 Tflops,内存double到128GB,并使用了液冷。



第三代Pod,这是一个完整的Pod的图。是 V3-2048,总核数扩展到了2048个,对应的卡数是256个。那么这么强大的一个硬件,它所能提供的算力,可以和GPU做个比较。对比单块V100的GPU卡训练ImageNet,每秒钟可能处理是数百张图片,大概在600张。在完整V3 Pod上训练,小于两分钟就达到了Benchmark指定的精度。作为对比,在单卡 V2-8上大概在4000张/秒。如果想使用TF2以上的版本,从TF2.1开始支持TPU,目前可以用TF2-nightly版本测试,最新结果大于8000张/秒。刚才介绍的BERT,作者论文里估算了完成训练,在TPU和在GPU上分别需要多少时间。我印象中在V100上是需要两个月以上的时间。V3-2048 76分钟就可以完成训练。



TPU设计核心就是bfloat16, Google Brain提出的16位浮点数和脉动阵列架构。在TPU上的训练,让矩阵运算尽可能去填充满所有的这些运算单元,那么性能提升的倍数是相当可观的。





PaaS - AI-Hub一站式解决方案介绍


快速过一下PasS层提供的解决方案,有了刚才提到的定制好的深度学习虚机和TPU之类的加速器,如虎添翼。可是训练,在整个深度学习生产平台生命周期中,它只是很小的一部分,大概在20%及以下。更多的组件,比如模型的部署、数据的预处理过程占更大的比例。所以期待好的深度学习平台,它可能像这种数据中心一样,非常条理,但实际场景更像这样有些杂乱。我们希望有一个编排器能解决所有的问题。



最近Tensorflow在开发的TFX基本上实现了整个Pipeline生命周期里面所有组件,它是一种模块化的设计、包括模型的验证等。



有了TFX,还需要一个编排器,这里面给大家显示了很多企业级的用户,在使用AirFlow或KubeFlow编排器,对整个的流程做编排。原理上就是一个DAG有向无环图,仔细看这两者生成的结构是完全一致的。



这是谷歌云上的一个A.I.platform,是在开源组件基础上的服务,支持在公有云上使用,兼容On-prem的用户,就是和自建数据中心使用Kubeflow,协议栈是一致的。下面是计算能力,之上是K8S,如果在谷歌云上就是GKE,自建数据中心,就是自己的K8S集群,上面运行KubeFlow Service。最上面的一部分叫AI-Hub,它解决了什么样的问题?相信大家使用中最困难问题,第1个是基础架构的管理。第2个是团队的协作。比如Python代码,或者Jupyter Notebook,怎么和团队的同事分享,或者协作改进代码,或者找回自己几个月前写过的一段代码,可能不是那么容易。有了AI-hub,可以快速的去找到你所想要代码、模型、教程、甚至是整个训练过程的Kubeflow Pipeline。



SaaS - API as a Service


最后这部分是针对在座一些非机器学习领域用户,在谷歌云上的A.I.提供的一些服务如何能帮到你,就是一些预训练模型,封装成一些标准化的API提供给大家。



针对图片,可以分类,识别图片里面特定的动物,或者交通工具等,可以做一些面部情绪表情相关的识别,或者产品的logo,也可以做OCR处理,从中提取超过50种语言的文本,检测一些成人暴力等内容。



针对视频,可以定位超过2万种对象,提取视频中源数据帮助媒体管理。举个例子,用户上传一个不到三分钟的视频,这是实际的API的效果,可以定位到特定的场景,定位到叶子,定位到树,定位到小溪等等。



在自然语言领域,可以识别电商网站用户的评论分类、用户反馈是正面还是负面。同样它包含对多种语言的支持。



在语音这个领域,可以做语音转文字、文字转语音,可以识别语言,涵盖180多种语音及变体,和Firebase MLKit移动端的快速集成。




翻译,谷歌云上支持最多种语言,可以自动检测语言种类。一个最新的特性,支持术语库。



比如”Hello Devfest Shanghai”,直接REST请求,返回的结果就是中间这个词没有识别出来。



这是自定义的术语表,特别很适用于游戏行业,因为游戏里面有很多特殊的词,先做一个POST,上传术语表,然后再基于这个术语表调用翻译API,可以看到得到了很好的翻译。



还可以通过AutoML把定制化的翻译文本对上传,通过AutoML得到模型,这个模型只在自己的Project下面,有特定URI,在调用的时候,传入这样的Json,就可以得到想要的结果。



现实场景中更多的需要是多模态,比如拿到一个图片,想知道里面的文本,知道文本,还想知道它包含是正向还是负面的情绪。所以就需要结合图片的OCR和自然语言理解等功能,甚至结合谷歌助手,做一些智能问答响应,结合翻译可以做更多,那么Document A.I.就是多模态组合的例子。


要点总结



谷歌云规模大、速度快、质量高、定制化。规模大,作为公有云,可以说有取之不尽的资源,速度快,TPU资源是谷歌云上专有,刚才的能力大家都看到了,质量高是这些预训练的模型,包括支持语言的种类,是最领先的。定制化,用AutoML可以实现更复杂的业务场景。

 


最后补充一点,Tensorflow提供企业级的支持,这是上个月在Tensorflow World上发布的新服务,具体的一个例子,如果大家还在用Tensorflow目前版本1.15,通过企业支持,可以把支持的生命周期扩展到三年。当然还跟Google Cloud上面的一些其他的服务,BigQuery、对象存储等做了整合和优化。



这是通过刚才提到的虚机或者一个容器,或者直接起个jupyter notebook使用。




精彩预告


接下来还会有其他嘉宾的演讲实录,将通过上海GDG小编精心整理后,陆续发出与小伙伴们见面,尽请期待吧~








关于我们

Google Developer Groups 谷歌开发者社区,是谷歌开发者部门发起的全球项目,面向对 Google 和开源技术感兴趣的人群而存在的公益性开发者社区。GDG Shanghai 创立于 2009 年,是全球 GDG 社区中最活跃和知名的技术社区之一,每年举办 30 – 50 场大大小小的科技活动,每年影响十几万以上海为中心辐射长三角地带的开发者及科技从业人员。


社区中的各位组织者均是来自各个行业有着本职工作的互联网从业者,我们需要更多新鲜血液的加入!如果你对谷歌技术感兴趣,业余时间可调配,认同社区的价值观,愿意为社区做出贡献,欢迎加入我们成为社区志愿者!


加入方式:关注上海 GDG 微信公众号:GDG_Shanghai,并回复:志愿者。


社区成员加入方式:请发邮件至以下邮箱

gdg-shanghai+subscribe@googlegroups.com




Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/52848
 
438 次点击