2018年11月,英特尔人工智能大会(AIDC 2018)在北京国贸酒店举行,这也是英特尔首次专门面向开发者和和技术社区的人工智能大会。PaddlePaddle总架构师于佃海应邀在大会主论坛做了主题演讲,介绍了百度开源深度学习框架PaddlePaddle的最新进展以及百度实际业务中的大规模深度学习应用实践,特别强调了PaddlePaddle在海量数据超大规模稀疏特征场景下的高效分布式训练特色。
于佃海表示,百度很早就开始拥抱机器学习技术,对于深度学习,百度一开始就把握住了先机。早在2012年,百度就成功将DNN模型应用于语音识别和光学字符识别(OCR)任务;而紧接着在2013年,凤巢广告和搜索排序也先后上线深度学习模型,这些都属于业内首次,也奠定了百度在世界范围内深度学习研究和应用的领先优势。从此百度逐步全面进入深度学习时代,在深度学习框架研发、平台建设和技术创新应用等方面都一直走在前沿。
作为国内唯一的开源深度学习框架,PaddlePaddle承载了百度多年以来在深度学习领域的深厚积累。于佃海介绍,PaddlePaddle的原型来自于百度从2013年开始研发的深度学习框架Paddle项目,Paddle的得名就是并行分布式学习(Parallel Distributed Deep Learning)。这个项目是非常有远见和前瞻性的。首先,在当时还没有什么工业界的深度学习框架,也就是百度在深度学习应用刚起步时就意识到了建设通用框架的重要性;另一个是并行分布式,深度学习的威力依赖大数据,工业级的深度学习必须有大规模训练的支持,百度在深度学习框架构建之初就定位了它的分布式训练能力。
而对于百度而言,深度学习的应用确实和大数据、强算力下的大规模训练密切相关。除了大家熟知的语音、视觉、自然语言处理等AI基础方向外,于佃海特别介绍了在搜索、广告、信息流推荐等产品线的核心系统中超大规模深度学习的应用,这些应用除了数据规模大之外,还有高维度稀疏特征的典型特性。
例如在网页搜索中,百度将深度学习技术用于语义匹配特征计算。自2013年初次上线以来,持续优化迭代,目前深度学习语义特征已是百度这个最大中文搜索引擎上的最关键的排序特征,极大破除了搜索排序依赖关键词匹配的弊端,有效改善了长尾和冷门Query的搜索效果,也建立了百度搜索的技术领先优势。对应的网络模型是百度自主研发的深度语义匹配网络SimNet系列模型,输入是Query和网页的各个信息域,利用用户行为数据来进行大规模训练。这个任务的数据规模达到了千亿级别以上,而文本任务的词嵌入(Word Embedding)向量表示特点,也使得参数规模达到了数亿。在实际业务中,每一个语义匹配特征对应的模型,都是使用几十个高性能计算结点多机多线程分布式训练来完成。
而对于广告和信息流推荐业务上的深度学习应用,还有更特别的挑战。这些场景上,深度学习用来构建系统最核心的点击率预估模型,使用了比语义匹配更多的离散特征,包括一些ID特征和组合特征。特别是在信息流业务上,内容端信息更加丰富,展现序列更长,浏览和点击的历史信息也更多,整体特征空间变得更大。结果就是特征规模最终可达百亿级别以上,在Embedding表示下,参数规模能达到千亿甚至万亿,模型大小超过TB。但对每条样本来讲,其对特征的命中又是稀疏的,可能只有数十个到数千个有效特征被激活。这就形成了超高维度加稀疏的特性,给训练和在线部署都带来了极大挑战。一方面,全局参数已经多到单机无法加载,另一方面仍然是海量数据的超大规模训练。还有就是这些场景的时效性非常强,新的训练数据也在不断产生。在实际业务中,百度对于此类任务使用用百结点以上的集群来在线训练,每个小时可以完成数亿样本的充分增量训练,并在线实时提供预测服务。
基于这些实际业务中大规模深度学习应用的介绍,于佃海指出,不同场景的深度学习的特点及规模化的难度存在极大差异。图像类任务,往往网络的深度和计算的密集型比较突出。但对于文本任务而言,一个尤其重要的特点是词语的向量表示,每个词的Embedding向量的维度几十到上千,而词表往往会从几万到百万的规模,这使得词语的参数Embedding就非常巨大,但实际每个句子中词语出现又是很稀疏的,这给计算和并行训练都带来了新的挑战。而在很多实际互联网应用中,往往又广泛引入大量稀疏特征,这使得高维稀疏特征的参数真的变成了一个超级大表,整个分布式并行模式都需要有针对性的设计。
可以看到,深度学习的大规模,不只是大数据和大网络,我们同时要关注其特征量和计算特异性。这些都给通用的高性能深度学习编程框架的设计和实现带来了困难。对于百度当前各产品线上的海量数据超大规模稀疏特征的深度学习任务,当今市面上的大部分开源框架是很难支撑起来的,当然其中一些在设计层面就没有特别考虑工业级的大规模训练问题。而对于PaddlePaddle,是一直伴随着百度的产品业务应用需求成长起来的。于佃海表示,在设计和实现上,除了保持深度学习框架自身的通用性和灵活性之外,PaddlePaddle一直同步强化其大规模并行训练的能力。对大规模高维稀疏数据并行训练的强有力支持是PaddlePaddle的核心关键特色。例如在百度信息流推荐场景下,PaddlePaddle十小时内可轻松完成千亿规模参数模型在百亿日志数据上在线训练,完美支持信息流推荐排序任务。我们注意到,在今年7月的百度开发者大会的深度学习公开课上,百度曾专题介绍过大规模稀疏训练的的相关技术,而在刚刚过去的百度世界大会上的AI论坛上,也特别强调过PaddlePaddle的这一特色。
此外,于佃海还介绍了最近刚刚发布的PaddlePaddle Suite,由核心框架、服务平台、模块组件三大部分组成。除了多平台支持的高性能训练和预测框架外,特别介绍了以AutoDL和PARL为带代表的强大的平台层和丰富的组件层。PARL是基于PaddlePaddle的深度强化学习(Reinforcement Learning)框架。在刚刚结束的在NeurIPS 2018的强化学习AI挑战赛中,面对400多只强手如林的参数队伍,百度的PARL研发团队以绝对领先优势获得第一名。而PARL的高效分布式训练能力,也是其夺冠的重要因素之一。
最后于佃海介绍了PaddlePaddle与英特尔在底层性能优化上开展的包括nGraph在内的广泛而深入的合作,并表示PaddlePaddle对性能优化的追求永无止境,除了大规模分布式训练能力外,对于深度学习框架的各个环节都会持续优化,发挥深度学习框架和大规模分布式训练完美结合的优势,矢志打造能支撑工业级应用的高性能AI框架。