开发者学堂课程【PAL 平台学习路线:机器学习入门到应用:搜广推模型构建及应用-AI 架构师成长计划(二)】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/855/detail/14133
搜广推模型构建及应用-AI 架构师成长计划(二)
内容介绍
一、爆发的三要素
二、深度学习
一、爆发的三要素
本课程将介绍如何从 AI 架构师的角度构建应用及 AI 架构师需要的技能,即将从深度学习和机器学习2个维度进行介绍。AI 的工程是处于动态的状态中,有多变性,有许多行业人员在其中做探索。 AI 的爆发由 AI 的以下三要素来决定:
(1) 数据基础算法能力
(2) 大数据能力
(3) 工程能力
有海量的数据,大规模的计算能力,推动各种各样算法的创新。从 AI 工程架构师的角度来说,如何能够快速进行算法的迭代,希望算法工程师能够聚焦于算法本身,而由工程或者AI的架构师,或者工程的平台,解决AI的制动化,能够达到较好的高可用、高性能、低成本的 AI 平台,在架构师首先需要具备以下能力:
(1)需要算法的基础,因为工程是加速 AI 算法的,有许多情况下,机器学习或深度学习的算法,并不像数据处理,是确定性的计算,是概率性的计算,因为最终希望收敛到精度好的模型,没有人定义什么样的模型才是最好的。如果有算法的理解,可以做到模型和系统联合优化,不拘泥于对算法进行加速。如果在模型上面有方法,能够在概率上收敛在同样的趋势上,如果在数学上面有方法,使得在概率上是等价的,得到的优化效果会远远大于在底层在计算上面挖掘的效果,所以要理解算法以及理解算法的原理,才能够更加以巧拨千金的优化点;
(2)大数据能力,因为 AI 的爆发是因为大数据的积累,许多算法工程师,在运行训练模型之前,先要进行数据的清理或者整理,为了能够支持算法,需要构建平台,平台上面不可或缺的就是要有大数据的能力。如何做大数据的计算,大数据清理,如何把许多的数据整合在一起,做数据预处理或清洗等是很重要的能力;
(3)工程能力,随着模型越来越大,越来越深,对于异构机器对于分布式的需求会越来越多,往往会将模型的执行计算,不论是前向还是前向和后向一起,都会描述成 DAG 图,如何较好的映射到下面的资源、硬件、存储 IO 和计算,需要很强的工程能力。
二、深度学习
深度学习分两个场景,第一个场景是搜索推荐广告,另一场景一般称为感知类,例如图像语音和自然区语言处理。这两类,对于 AI 的架构师有相同的需求,但也有不一样的特点。
搜广推,一般称为搜索广告和推荐,首先是大数据,一般称为大数据的模型,因为数据很多情况下是半结构和结构化的数据,例如点击、日志,许多的稀疏的 feature 特征,这些情况下往往有很大的稀疏化的特征,在搜索中并不是每个特征都是有值的。例如对某个电影感兴趣,就会在这些电影上面有特征。其他人对这个类别的电影没有兴趣,就没有特征。稀疏性的特征对于搜广推是常见的;
有复杂的数据处理流程,因为搜广推是做点击的预估、推荐的数据称为在信息流数据流的服务中埋点,把数据做复杂的加工,把相关的数据排列在一起,工程流程上也会较为复杂,因为搜广推往往是动态性的,对实时性要求高,因为人的兴趣不是感知类的,感知类也就是当人看到一张图片之后,这个图片是一只猫,那么它就是一只猫,是一条狗,那么他就是一条狗,并不会快速的变化,但是人的兴趣是会变化的,在搜广推中,实时化、千人千面、实时学习、增量学习。是常见需要的工程,正是因为有实时学习,千人千面、增量学习,工程体系也会较为复杂,因为模型会时时刻刻在学习的状态中,也要时时刻刻的把新的模型推到线上,在该场景中,ground choose 很难确定。
如果是一段语音识别出来的结果,很容易知道结果和正确的值之间有多少的偏差,在推荐中只能代表自己。真正的模型在整个业务上面得到的效果,需要在线上的系统做许多 verification,但是要在线上的系统验证,就需要在工程体系中有许多的很复杂的流程,包括如何做实验筒、灰度、如何收集结果来评价模型的更新,对于工程体系要求会较高,同时因为是超大规模的稀疏特征的训练,首先数据很大,需要较好的分布式训练的框架,同时因为模型很大,有很大的稀疏特征,会用称为 parameter server 的训练框架的模式,模型本身不能够在一个节点全部放下,特别是个巨大的embedding,所以需要把模型在这个 embedding 层,用分布式的 ParameterServer 的存储来管理,walker server 获取要训练的模型或者参数来做训练,所以一般是 ParameterServer 的架构,同时因为很稀疏,为了提高训练加速比,会用分布式的异步的训练方式,而不是用同步的训练方式。
相反的,在语音自然语言处理感知类中,往往不是稀疏的模型,是稠密的,所以需要很高的算力,而这种模型往往具有许多很密集性的算子,例如 convolution 算子,它的训练加速比和推理优化要求很高,因为最后产生的模型深度很深,也有高密度的计算,如何提高落地,也就是在推理上面的性能,训练加速比用了许多 GPU 集群训练,如何提高训练的效果,这一类对于数据的标注是很重要的,现在的趋势也有利用半监督的学习或者自学习的方式,能够减少标注,但是对于标注的质量还是重要的。
自然语言处理,现在更多的不是自己训练 BASE MODEL,但如果有能力、有算力或有成本能够训练较大的base model,是更好的。
往往情况下,是通过别人的 BASE MODEL,在自己的垂直场景中,做迁移学习,以上是现在的 AI 架构师需要考虑的问题。在训练方面,有大量的 benchmark 做打榜,例如自己的模型能够比他人的模型在标准集上得到更好的精度。
竞争都是在研究如何能够让模型的精度高,所以大量的算法工程师,都会用同步的训练框架,因为精度能够更加保证,所以一般会基于 ALLreduce 框架来进行训练。这两个场景下都是通过深度学习框架来支撑,主要有以下两大类框架
(1) tinselflo
(2) petalch
在搜广推中,平台需要一体化,因为数据是纷杂的,需要较好的平台把数据进行较好的清理,有时候数据中还会有脏数据,因为搜广推平台往往较为实时化,较为动态的情况下,会不停的上载数据,更新服务,有时服务可能会造成BUG,会造成脏数据,所以必须要有较方便的大数据平台做数据的处理。第二个趋势就是模型的实时化,人的兴趣会变化。
对于业务的相关性很高,每个行业、每个人对于自己的业务理解不一样,往往在模型中,业务方需要掌握特征选择和模型调优的技巧,而工程师只是提供工具,提供平台,提供应用性,使得快速的进行模型调优。
最后就是工程的体系会较为复杂。基于该基础上,阿里基于 PAI 构建在线机器学习的平台,从千人千面到更加实时化
平台中就包括大数据的引擎,实时计算以及离线计算的引擎,在计算平台中有blink,把大数据的应用性,整合到 flink 的社区中,在离线计算中,有超大规模的离线计算的引擎,把这两类的特征融合在一起,生成样本库,支持大规模,稀疏化训练的平台,有深度优化的训练引擎,持续做 Online 训练,训练中间的会不断有 delta 的 snapshot 的产生,会进行模型的验证,最后部署,以及在线的观察、做反馈等等。
以上框架只要是做搜广推都需要。这套的工程体系具有可复制性,但是对于每个行业,业务理解都不同。
对于阿里业务是电商,但业务搜索推荐和广告目标不是新零售,可能是娱乐化或其行业需要做算法,可以分享经验,但是行业和行业之间会有 GAP,例如同样是做视频直播,但软件、受众、目标人群不一样的,因为有自己的运营的策略,所以需要自己掌握算法调优的能力,但是架构师可以在工程上辅助,以上也是做推荐方案的原因。因为在搜广推中工程很复杂,架构师会把工程的流程串联起来,中间的算法及中间的调优的方式赋能给用户,用户可以在基础上为自己的业务负责。
以上图片只是将图片展开,例如用户数据如何存放?物料数据如何存放?行为数据如何存放?如何用大数据引擎将其结合起来?如何进行训练?训练的时候如何发布到召回排序模块?如何实时做服务?分统等。因为服务于阿里的搜索和推荐,阿里受众用户群体巨大。
双11的节点有很多的用户,有许多物料、商品、商家、人群,模型很大,现在搜索推荐和广告从原来的 logistic regression 慢慢往深度学习在引进。现有的框架在大规模的体量上,遇到了许多的问题瓶颈,例如分布式训练,不能够分布到上千个节点训练,又例如能够分布到上千个节点进行训练,但是训练的效率不好。由于存在这种需求所以迫使企业不断优化。
正是因为需求的推动,所以深度的优化 Tensorflow 版本,称为 PAI-Tensorflow,分别向通讯算子融合、基于通信算子如何下推?在运行框架下,因为会有上千个 walker 同时训练,PS 端压力会很大,如何提高 PS 的 skelebility、如何利用 spas 的特性做通讯、运行的 library 如何优化,做了优化,使得规模能够 scale 到上千个节点的训练,能够比开元的版本更高的加速,得到了更高的提高,以上是在去年云栖大会的时候就已经达到了的很好的数据。
由于实时性的要求,会使得模型持续不断更新。模型的要求同时,因为时时刻刻在训练,特征不是固定不变的,要让引擎能够支持动态的特征的变化,才能够实时不断的训练,所以也会在引擎上面推出动态的 embedding 等 feature。在该领域和谷歌团队紧密合作,把大规模稀疏化的能力以及实时动态 INBED 的能力,积极推回社区,赋能给更多的用户。
直接到阿里云机器学习平台,直接使用优化好的框架,支撑超大规模稀疏换模型训练。
以上内容是搜广推中AI架构师需要考虑的问题,例如需要看业务场景和需求,在某些地方可能需要考虑的内容,下一章内容是深度学习在图像语言和自然数学等感知类,对于技能的要求是不一样的。