开发者学堂课程【PAL 平台学习路线:机器学习入门到应用:感知类模型构建及应用-AI 架构师成长计划(三)】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/855/detail/14134
感知类模型构建及应用-AI 架构师成长计划(三)
服务
1.数据标注服务
本课题将从深度学习,尤其是感知类模型去研究架构师需要具备的技能思路和方法论。
之前已经介绍人工智能爆发的过程,深度学习在搜广推领域中的特点以及这些特点背后对应的工程上的需求。搜广推的应用,更多是在搜索推荐广告,尤其是信搜广推在信息流的公司很常见,对于日常的老百姓,更加熟悉感知类的图片的理解、语音的理解和自然语言的处理,在该领域中与搜广推不一样,因为在图领域有较为清晰的 ground truth,知道模型最终想达到的结果,同时,往往需要数据标注的服务,因为搜广推可以通过最后的行为来做点击预估,例如通过实际购买,实际发生的行为做推荐和搜索,而在深度学习中,需要标注来告诉系统 ground truth 是什么,让机器学习人的判断,得到较好的分类或者识别的模型,数据标注服务,许多情况下对于公司并不容易,因为标注需要许多成本,需要许多人共同努力。甚至标注需要买数据或者买服务,因为云的发展,对于标注服务有较好的助力,可以通过云来分发标注的能力,例如在一些 web 服务当中会有判断是不是机器人的操作,以上操作都是在帮助人工智能的公司沉淀标注的数据,同时,云的平台可以通过众包,把标注的服务分发,使得许多人能够加入到平台做标注,所以标注的服务对于感知类的深度学习是很重要的。
2.数据管理的服务
有许多的数据,在众多数据当中还要进行数据的增强,所以需要有个管理服务,深度学习在感知类,对于云的弹性和共享性的要求更高,因为在搜广推的场景中,对实时性的要求很高,模型的训练时时刻刻在进行,并没有太多弹性,时时刻刻在进行模型更新,工程体系很复杂。在感知类中,会花大量的功夫在线下验证,去查看是否能得到更好的模型。如果得到更好的模型,就更新线上的服务,如果没有得到,会继续的探索。探索的想法,并不像 online能力和实时化能力,需要在系统工程上时时刻刻进行,想法有时候会有,有时候会缺乏想法,此时可以利用云的弹性以及共享性来降低研发的成本,每当有新的想法就申请云上的异步资源进行大规模的训练,当没有想法的时候,可以先在云上的单机的系统,例如在 notebook 上做结构性的探索,认为这种想法是可行的,再增大规模。云的弹性和共享性大量降低研发的成本,由于近几年硬件成本提高,如何利用云的弹性降低公司研发成本是需要考虑的。在前几年,领域中的模型基本上用数据运行的方式,随着 GPU 的能越来越大,模型越来越大,在 GPU 上可以完整的存下模型,只把数据进行分片,进行分布训练。现在趋势是分布式训练,提示,从数据并行到模型并行,类似于语言模型。在单卡已经训练不动了,需要切割模型,不管用 paplan 的方式还用算子切分的方式,做到模型变形,称为混合变形,混合变形对于工程的要求和数据变形的工程的要求不能同日而语,因为数据变形的行为较为简单,因为每个worker 基本上同构的,在最后汇集梯度的时候有 All reduce,如果要涉及到混合变形,就是复杂的分布式,在设备上运行模型的哪一部分、如何汇集,每一种方式都不一样。在做深度学习,尤其是感知类,这个趋势会越来越明显。
对于工程的要求明显,因为越来越觉得更大的模型能够提高模型的精度,如果大模型做模型的训练很耗费成本,感知类较有相通性,不像千人千面,每个人的想法都不一样。不需要自己训练大基础模型,可以在云上共享,或者使用公司共享的大基础模型,许多公司都会推出 model zoo,将训练好的模型放在云上。通过自己的小样本学习,在此基础得到符合自己场景的定制化的模型,是在该领域上大量使用到的技术。服务需要许多的 GPU,服务的 lengthy服务的性能也很重要。推理的优化以及如何支持高并发的服务平台也是需要考虑的。
3.PAI-DSW 交互式建模平台
在该领域上,由于和大数据的模型不一样,许多情况下用户有许多算法的创新需求,会在单机上,先证明模型结构的有效性,所以许多情况下,用户会在较为单机的环境下做算法上的探索。降低研发成本。由此需求推出云上产品。
在云上研发环境推出了交互式的建模平台:
在平台上可以通过 notebook、命令行的方式,随心所欲的安装自己的预处理的包,例如图的包,语言的包,语音的包等等,可以做快速的模型的连接和迭代。开发体验是云上的,不用担心模型的丢失,因为随时打开都会回到工作环境。
4. PAI-DLC 云原生深度学习开发平台
开发有雏形时,希望进行更大规模的训练,推高精度,需要用到分布式的环境,通过云上弹性,推出了云原生的深度学习开发平台,开发平台上可以申请做多机多卡的训练,能够云延伸的,也可以在容器中安装自己的 Python的库或任意的软件,具有较好的弹性,在该领域也会做许多优化,帮助更好做大规模的分布式训练,虽然 AI 的深度学习的框架很多,但要自己真正操作是复杂的,例如自己装 CUDA 库,因为基本上偏异构计算,有许多的计算库,库要和引擎配合。平台会解决以上问题,能够开箱即用,同时管理每一次分布式的训练,每个训练都有日志记录。能够加速算法工程师进行模型的演进和迭代。
5. PAI-DLC 数据并行到混合并行
现在模型变得越来越大,原来框架中,默认支持的数据并行就不够了,真正要过度到混合并行,对于工程的挑战很大,在平台中会提供对于并行的理解,在领域中也有许多的工作,例如 Horovod、Deepspeed 等。今年推出能够支持混合并行、数据并行,pipeline 并行和模型并行,一体化并行的框架,在框架下面可以构造很复杂的并行方式,在工具的加持下,得到了很好的加速比。
如果模型大小达到了一定的量级,就发现撞到的数据并行的线性加速就加速不上了,此时应该考虑到混合并行的模式,分别在以下的两个场景:
因为想看到的语句越来越长以及模型越来越大,从图像得到 embedding,在图像空间中做相近查找。现在更多的趋势是希望直接做百万分类,甚至千万分类场景,直接在很大的全连接层,在这种场景中,也要做全连接层的算子拆分,在领域框架的支持下,得到很高的加速。
6. PAl-Easy 系列深度学习工具套件
在感知类模型中,许多情况下不需要从头训练,得不到足够的数据,以站在别人的肩膀上,对于自己的场景和数据进行小样本的训练或者得到自己更好的细分场景的模型,在 PAI 上推出一系列 easy 系列的深度学习框架,框架中有积累好的 backbone 模型,能够对模型模块化,组件化,可以在模型基础上快速的进行开发。如果对于某一部分有自己的理解,可以用自己的理解替换掉组件,这是一种快速构建模型的方式。
同时,在工具套件中也有许多迁移学习工具,增强学习工具,同时也提供较好的 Model Zoo:
在 Model Zoo 中,推出了 EasyTransfer 工具,把许多的迁移学习的范式考虑进取。因为迁移学习不只有一种范式,在不同的迁移的方式,不同的场景中,用不同的迁移方式,把工具沉淀下来,能够快速的进行各种各样的小样本的训练,可以快速的查看哪一种方法更符合业务,还提供较好的 MODEL ZOO 的基础模型,例如预训练的模型,通过平台对于超大规模,特别是混合并行的支持,训练出更好的基础模型,把基础模型提供给用户,用户可以在基础模型上做自己的二次开发,甚至,更高阶的组件,甚至可以用已经训练好的东西,快速的构建 opplication。作为架构师,可以对行业的需求、业务的需求来选择,如果对于模型精度有更高的要求,可以应用组件构建自己的模型,如果自己的业务需要快速迭代的开发,可用现成的来快速组装应用,取决于选择。
7. PAI 基于编译技术的通用&自动优化
训练好的模型只是 offline 的,没有真正服务客户,真正服务客户的是训练好的模型的推理,在推理上,为了让产品或者平台更具有竞争力,需要做服务的优化,例如在推理上如何降低成本?如何提高 qps?如何能够在有限资源上服务更多客户?有一系列的模型优化的技术以及工程优化的技术,PAI 基于编译优化做通用的自动化的优化,也提供plug in 或插件的机制,作为平台方,由于 ai 模型变化十分迅速,跟不上用手写或工程师的方式,需要用更加系统的方式,更加编译的技术,来做自动通用优化。在 PAI 的平台上,集合了自动编译优化的能力,在推理上空间更大,因为推理是较为确定性的计算,没有收敛的问题,更多的是如何加速计算,也适配不同的硬件。
也可以做模型的量化压缩,帮助用户做更加智能化的工作。因为在许多的服务平台,英特尔是重要的平台,因为英特尔系统更加通用,与英特尔展开了深度合作,采用的阿里的云服务器 ecs 的第7代高主频的实例,采用了英特尔的第3代的至强的处理器,在处理器中包含了专门的部件来加速AI的推理,同时,全面的支持 bf 16,精度的指令做训练和推理,提高计算的密度,因为具有编译优化的能力,所以可以更加智能的选择在哪些层上利用 bf16,在不掉精度的情况下,提高计算的效能,同时,在通用推理的平台上,也结合 CPU 上的各种优化。所有的能力可以在 PAI 的 服务平台,称为 ES 的在线推理平台享用。
在该平台上,帮助架构师更加 focus 在自己模型的演进和迭代,帮助自运维,减少运维的负担,同时提供较好的和云上平台的弹性,例如云原声,能够较好的和语音上的网络互联,如何支持高并发的吞吐?如何和自己的网络互联?在深度学习场景中,通过 POP 网关转发,可能会打爆 POP 网关。在线服务中,如何支持高并发的直联通讯方式。模型有服务有管理有切流,如何做蓝绿的部署版本的控制,如何智能的监控流量是否有抖动,如何帮助模型预热等方面,在线服务平台会赋能来构建以上情况。
现在模型也越来越大,服务也越来越多,需要有分布式的模型和服务包含多个模型这两类需求,都需要有模型编排的能力,在线服务能够帮助完成以上内容。
8. PAI EAS 在线推理服务
(1)与 PAI-Studio、PAI-DLC、PAl-DSW 无缝对接
(2)云原生,在 EGS 平台之上
(3)支持用户本地模型部署
(4)高并发高吞吐、毫秒级响应
(5)深度学习/传统机器学习模型
(6)弹性扩缩容
(7)蓝绿部署/版本控制
(8)智能运维监控
(9)结合推理优化工具
(10)服务编排
9.机器学习
(1) 可解释性强
(2) 需要比较强的特征工程能力
(3) 实时性
深度学习在搜广推和感知类对于架构师的有共性的地方,例如都对推理优化、编译优化、模型的性能有需求,都需要用到深度学习的引擎,但也有不同,例如,在搜广推中,对数据的预处理要求更高,需要有实时训练的能力,工程体系较为复杂,感知类的模型,对于标注,对于弹性的需求,例如在训练时需要申请很多 GPU 卡,平时不需要,推理的优化上,两者不一样。机器学习称为传统机器学习,深度学习生产出之后,会将原来的机器学习归类为传统机器学习,相比深度学习解释性较强,深度学习是让神经网络捕获样本和样本,feature 和 f eature 之间的关系,解释性不强,传统机器学习模型中解释性很强,对于解释性需求很高的行业,包括金融、风控。传统学习对于数据量的要求小,更多的要求抓准好的特征,特征的输入需要有专家知识,不同的人对于特征的理解不一样,所以在传统机器学习中,需要很强的特征能力。传统机器学习中的实时性要求越来越高,希望模型有 online 能力,因为风控金融方面有实时性,风险随时会变化。对于阿里来说,更看重实时性的需求,在 FLINK 的基础上,推出了 FLINKmlib, 又称为alink,和 Blink 作为组合在 BLINK 社区中进行投入。在19年的时候发布了 FLINK 的 alink 的开源版本,持续推出更多传统的机器学习算法,使得算法能够提高性能,充分利用迭代的算子,提高运行的效果,也可以在 PAI 平 台上享用该能力。
10.新算法:GraphLearn
AI 架构师需要往前看,深度学习更多的是神经网络,在新的算法来的时候,会诞生新的框架新的平台,作为架构师需要往前看。 GraphLearn,也称为基因或图学习,图学习和传统的深度学习不一样,因为深度学习就是把东西变成embedding,再进行 new network 训练,但在 graph 上,encoding 的过程就是 graph,希望捕获 graph 的信息变成 encoding,再接 new network,对于引擎的要求不一样,所以诞生了许多的算法。
深度学习可解释性不强或人的干预性不强,在这种情况下,可以用到图的信息,如何在 graphnn 上推动深度学习算法的变化,在方向上,对于引擎、平台、IO 、计算力的需求都不一样。
阿里本身也在积极进行探索,阿里本身的业务,也需要用更新的算法,所以推出了 GraphLearn 开源项目,在项目中,更注重的训练,希望得到更好的模型, 如何和现有的深度学习框架进行整合,包括 tensorflow、pytorch能够充分利用 graph 信息。以上是从 AI 的架构在深度学习以及浅层学习,以及未来可能有新的算法的介绍。