Creator 面对面 | 如何突破 AI 实践中的资源限制与壁垒?

AI 的实际应用尚处于早期,对于大多的AI开发者来说,「从无到有」比「从有到优」要重要得多。能在有限的资源下跑通业务流程,比跑得姿态优雅要更重要,模型精度虽然是越准确越好,但当精度达到可用需求之后,精度就不再起决定性作用。

在这样的背景下,打破 AI 实践中的资源限制与壁垒的重要性也越发显著。在即将到来的一年里,在 AI 算法的工程优化与本能提升的道路上,将有哪些值得探索的偏向呢?

2022 年 1 月,来自华为昇腾 CANN 的首席架构师闫长江先生、一流科技 OneFlow 创始人袁进辉博士及北京大学数据与智能实验室崔斌教授指导的河图团队负责人苗旭鹏做客机器之心「2021-2022 年度 AI 技术趋势洞察」的「工程专场」直播间,共同探讨了「如何突破 AI 实践中的资源限制与壁垒?」这一主题。

Creator 面对面 | 如何突破 AI 实践中的资源限制与壁垒?

 当前AI盘算体系架构方面的进展回顾

在 2021 年的 AI 盘算体系架构相关方面的工作回顾中,最让您印象深刻的是哪一个?

袁进辉先生介绍到自己印象最深是有关偏底层的一个软硬协同设计工作。该工作是出于国外的一家创业公司 Tenstorrent 做的一个软件和硬件的架构层面的创新:实现了在单个芯片内部以及多个芯片协同和通讯的抽象的统一,这一套抽象机制简单高效,同时软件栈要比其他芯片的软件栈要简单很多。

苗旭鹏博士回答到自己印象深刻是以 Transformer 为代表的一系列设计深度进修稀疏性的相关工作。在过去的这几年中, 使用 GPU 或者其他加速器加速一些稠密的深度进修模型的盘算已经得到很好的解决,因为 GPU 本身就适合去从事一些稠密的矩阵盘算,再加上现在的算子库在不断的优化,甚至包括新的编译器的出现。GPU 的本能在很多场景上已经达到了一个极致的水平。在过去这一年当中,我们看到 Transformer 可以解决 CV、NLP 里面的很多问题。Transformer 模型里面主要矩阵乘法,这个时候有人就会觉得好像只要解决大规模的分布式矩阵乘法,AI 盘算的加速就完成了。但事实上这个显然是比力片面。在过去一年的研究中,比如说在 Transformer  内部去从事 sparse attention 这样的一个盘算。在  Transformer  之间,可以通过 MOE 这样的架构来从事连接。甚至 Google 后面提出的 Pathways 等更高级的面向多模态多任务场景下新模型架构。事实上这种稀疏性深度进修模型的出现能够会导致我们不会再专注于稠密的盘算场景,能够会在这些稀疏场景上对底层的 AI 芯片包括体系架构有更新的一些探索。

目前在AI盘算的实际应用中,尤其是随着大模型时代的到来,经常会遇到各种被开发环境卡住的情况,基于您的观察,目前有哪些具体的场景是比力明显的具有限制?以及,在过去一年当中,随着AI盘算体系架构方面的进展,有哪些问题被比力好地被解决了?几位嘉宾 各自团队去年都在哪些相关偏向从事探索,目前取得了哪些进展?还有哪些具体问题让人头疼?

袁进辉先生觉得训练大模型现在显然能看到的是它需要非常大的盘算集群,这个是需要比力多投入的。再一个就是在集群上去训练这种模型的时,并行的模式比力复杂,它里面要用到数据并行、模型并行、流水并行、专家并行等等,还要用到一些比如说亚线性内存等等。第一,目前盘算资源是非常昂贵的,第二个是并行技术还是比力复杂的。在过去几年 OneFlow 团队也一直在攻坚的一个问题:在框架中原生支持大型预训练模型需要的这些数据并行、模型并行、流水并行、专家并行等等这样的技术。而去年 OneFlow 发布《从零重新设计分布式深度进修框架》这一论文,一流科技基于 SBP(split, broadcast和partial-value)抽象和 actor 模型,研发出拥有各种并行范式的 OneFlow 分布式深度进修框架。SBP 使数据并行和模型并行的编程比现有框架更容易,并且actor提供了一套简洁的运行时机制来管理分布式深度进修中的资源约束、数据搬运和盘算所施加的复杂依赖关系。

那还有什么问题比力让人头疼呢?有一个比力明显的是,即使现在支持数据并行、模型并行、流水并行、专家并行等等,它还是需要人工的去为某一个模型某一个集群配置它的并行模式。在这种工业级的大模型训练上,还没有一个企业到今天为止完全自动地解决好这个复杂的并行。

再来闫长江先生谈到,华为在大规模集群训练这方面研究比力靠前的。华为跟鹏城实验室建立了一个大集群,整体算力相当于有 4k 个节点,有 1000P 的算力。模型相对较小的时候,我们通常采用数据并行,这样就足以满足训练需求。但模型扩大时,几百亿到上千亿能够就开始采用模型并行,但它不完全是模型并行。实际上是模型并行加上数据并行,相当说把盘算资源分成一些组,一组内从事模型并行,组间从事数据并行的一个策略。随着模型进一步扩大,后来就考虑另外一个方案:再分一层还从事流水并行。就相当于把数据并行、模型并行、流水并行在整个系统中去穿插使用。但这个过程中整体也有一些非常大的难点,包括切多少节点作为模型并行多少节点从事数据并行,以及流水并行用多少节点。这种探索起来就非常困难,因为最终要以整体的本能来衡量算法好坏。在真实环境中从事不断实验是挺困难的,所以实际上一开始能够需要借助建模去分析,相当于通过一些优化软件去从事探索不同技术部分所需要的节点。在这些方面做了不少的探索研究事实上追求的目标就同袁博士刚是讲的希望能够让用户表达盘算,之后通过软件去解决用户表达盘算在大规模集群上怎么跑本能更高。也能够有个建模工具去帮助分析这个本能,然后比力早到实际环境上去跑。总体上也就这几个思路。难点确实怎么在大模型的基础上,在这个集群上,怎么表达简单又能够跑得高本能。这始终是未来几年能够是大家一直努力的偏向。

突破资源限制之道,“从上往下,还是”从下往上”?

袁进辉先生在过去和机器之心的交流中也谈过,未来的事实工业标准是需要完备性、易用性、高效性等各方面综合都需要做好,在保证算子库、模型库、文档教程、上下游工具链等的完备之外,需要能够通过简单操作、动静合一、自动并行、训练推理一体化等 加速开发流程,最后在本能上还要能实现高吞吐、低延时、内存优化、线性加速比、数据并行、模型并行、流水并行等等。目前要实现这样的效果还是非常不容易的,我们看到算法领域有算法的解法、算力领域有算力的解法,有的是从矫正算法入口”从上往下”,有的是从算力适配入手”从下往上”,下面想要去各位嘉宾谈谈在这方面的看法。

苗博士谈到自己在早期科研的时候是从后者来说,从下往上。先去看底层算力,它的硬件本能有没有达到一个最高。比如说在吞吐上想要本能尽能够好,我们能够会去看 GPU 的利用率、 GPU 里面的一些 kernel 的执行时间,并期待从这些 GPU 的这些本能指标上入手,发现它存在哪些问题,然后去优化它。如果这个指标达到了我们期待的目标的话,能够我们认为本能达到极致了。而随着后面科研的工作展开,我们逐渐发现说其实这样是片面的有瓶颈的。后面其实就会考虑说从算法的角度来入手。机器进修系统领域本质上是 AI 和系统的一个交叉领域,所以更多的情况下是从下往上和从上往下反复迭代的过程。我们能够从算法上去从事矫正的,例如能够是数量级这的一个加速。但是往往在矫正到一定程度的时候,会发现实现的底层硬件利用率没有达到要求,这个时候再去矫正算法,能够会和期望产生一些冲突。所以这个时候需要尽能够地去优化实现,要去充分地利用硬件。然后当硬件达到极致之后,能够再回过头再去思考算法领域是否还能再进一步去调优,通过这个反复的迭代过程,能够这样最终才能达到一个比力理想的情况。

接着闫长江先生谈到自己做的有关算力在这里面就算从下往上。比如说今年做的很多本能优化工作基本上就是把业界的网络拿过来,到我们的这个系统上去跑,整个这个优化措施有几点:一个是单算子层面,因为我们知道算子面临不同的 shape 的时候,算子的本能表现能够不一样。所以我们首先能够网络一跑就会快速地找到哪些算子的本能是明显有问题的,所以要优化算子。再来闫先生谈到他们会针对盘算图从事分析优化,看看图层面算子融合,哪些能做常量折叠,哪些这个格式转换能消除。这样结合图层面优化,结合算子层面优化,包括算子融合这些技术去矫正算力。他们内部也提供了一些工具,包括跑一个网络,它自动会分析这个网络里面哪个算子盘算利用率没达到。图层面也会告诉图层面哪页占的盘算时间最长,会有很多的矫正建议直接提出来。这是他们的矫正。另外华为本身内部也会做上层模型算法的优化矫正,例如华为的诺亚方舟团队。

请袁进辉先生跟我们聊聊最近观察到一些您感觉比力有启发的角度?

袁先生谈到最近感觉一个比力有启发的思路是在训练这些大模型,它都是在专用集群上做的,而且服务器之间的带宽是非常高的,同时这个芯片也高度同构的,基本上都是同一类型的 GPU 或者同一类的 AI 芯片。这基本上意味着训练要提前做比力多的投资。在以前做分布式盘算,以及更早有一个概念叫网格盘算。比如有一些不同的GPU卡,而且各个服务器之间带宽没那么高,并通过广域网连起来的 GPU 卡,在集群上能不能训练出来比力大的模型呢?这个是闫先生感觉比力有意思的一个问题。最近也看到一些觉得使得这个事能够性提高的一些做法,例如快手提出的Bagua,它实际上在分布式盘算中不要求所有节点之间都要通讯,只是关心必要的节点之间做一下通讯,这样通讯量肯定减少,但在数学上是一种近似。灵活的通讯策略,还有弹性的盘算性质,袁先生觉得会使得基于广域网上大多数的算力能不能整合进来成为一种能够。

AI盘算的软硬结合之道

算法在不断演进,硬件的利用率由架构和编译器决定,架构负责把算法转化为相对架构而言最优的质量、序列和执行模式。算法+芯片需从事联合优化,才能兼顾盘算架构和算法设计。在软硬联合优化方面,想请袁先生和闫先生分享一下您们的一手经验与思考?首先想请袁先生跟我们分享一下。那么袁先生,OneFlow 在没有自己的硬件产品的情况下,通过研发深度进修编译器来支持第三方的硬件的一些相关案例?

袁先生谈到深度进修软硬件协同就是 Software/Hardware Co-Design 是一个趋势,在实力非常雄厚的大企业里面,几乎都是同时做软件和硬件。对于一流这样的创业公司,事实上没有实力去做硬件,所以就聚焦在软件。通过和很多专门做硬件的公司去合作提取出通用的需求,例如和我们合作的芯片公司,包括寒武纪岁元,曙光 DCU、英伟达 GPU 等,在这样的多种芯片上提炼出通用的规律。比如,软件和硬件的最通用的接口是什么?那在框架层次就把最小的接口集合设计出来,任何一款新的芯片只要支持了这个最小的接口集合,就可以和 OneFlow 对接起来,就是通过这样一些思路出发。另外在做分布式的时候,基本上所有的框架在使用英伟达 GPU 做分配盘算时,都是依赖于 NCCL 。但是一般的芯片是没有研发 类似 NCCL 这样的通讯集群通讯库,基于此袁先生团队研发出一个与硬件无关的集群通讯库,当另一款芯片过来之后,只要提供一个最基础点到点的通讯功能,即一个卡拷贝到另一个卡这样一个基本的功能,就可以和 OneFlow 这个集群通讯对接起来,就能让别的芯片具有集群通讯的能力。这是袁先生团队在做的一些工作,总结来说两点,一个是说提炼出软硬件界面最小的接口,再来在分布式硬件无关的集群通讯库上做一些努力。

下面请闫长江先生给我们分享一下CANN的解法思路,讲讲相关的一些案例?
闫先生分享到 CANN 在昇腾架构设计上起到了一个核心的责任。比如在芯片设计里面的 AI Core 有两个盘算引擎,一个矩阵盘算引擎 ,另外一个是向量盘算引擎,它们内部之间还有一个 buffer 的通讯硬件通道。在神经网络里大部分是做完矩阵乘积例如卷积,再来跟着向量盘算。这种情况下如果不跟硬件结合优化,能够做的就是利用 AI Core 里的这个矩阵乘盘算单元,把矩阵乘算完。盘算结束后把数据保存到 DDR。然后再从事向量盘算。这个过程会发现盘算矩阵乘的时候,向量盘算单元是空闲的,而在向量乘盘算的时候,向量乘盘算单元是属于空闲的。这样的话整个资源利用率只有50%。所谓设计的算子融合,例如 10 兆数据按 100K 平均切分,这样第一个 100K 矩阵乘盘算完成之后送到向量盘算单元去从事加法盘算,接着第二个 100 K数据类似,以及形成流水盘算。在这个过程中会发现 cube 和 vector盘算单元实际上盘算这 100 兆数据的过程中只有一个启动开销。而这种算子融合就是典型软硬结合的一个设计。像这种其实案例很多,包括格式转换消除、集合通讯等也是类似。再来华为的芯片里面内嵌了一个 100G 参数量的通讯网口,这样直接可以在芯片中直接发起即刻通讯,这使得通讯效率很高,线性度很高。                              

                   

AI盘算体系架构未来发展偏向

您团队目前所发力的偏向,往下一步发展,目前存在的主要瓶颈是什么?您目前比力关注哪个方面?您认为下面一年在AI盘算体系架构的发展或者说在AI盘算的工业标准逐步形成的道路上,能够会有较大进展与突破的偏向是什么?为什么?

首先,苗博士说到合图团队的研究偏向偏向相对来说会广一些,从稀疏大模型,包括稠密的 Transformer 模型、 Graph 领域最近比力火的 GNN 模型以及 AI 框架周边的工具,比如上游的数据管理等。目前主要的工作重心在于当下比力紧迫的预训练大模型的探索。尤其是最近以 MOE 为代表的万亿规模的大模型训练其实是一个还没有完全成熟的领域。大家对这一类模型从 AI 模型设计来看,它的进修机理还尚不完善,还有很多矫正的空间。如何充分发挥这些 expert 之间的一些差异性等等,这些都是可以给系统检索带来能够性的一些偏向。过去的一年,企业训练了很多大规模的模型,这些模型真正让它落地发挥作用的话肯定离不开一个问题,就是解决它实际部署和应用上的一个问题。目前来说,对于超大规模参数的模型还没有一个特别公认的一套解决方案,大家还是沿着之前的一些思路,比如去做蒸馏或者压缩等等。苗博士期待说在未来的一年能不能在系统和算法上去从事一个结合来对这一类大模型的实际落地部署产生一些帮助。

再来袁先生谈到自己关注的是刚谈到的自动并行,即做分布式训练时如何做到不需要用户去关心任务怎么分布,中间怎么连,数据怎么划分,只要写出来单卡代码就在一个集群上,就能以最优的或者接近最优的方式并行出来。再来关注的是微观层面的自动化分布式。微观层面指的是一个 AI 芯片上,用户写了一个数学逻辑算子,怎么能为这款芯片或是另一款芯片自动化生成最高效的代码。这个其实就是深度进修编译器这个课题所研究的问题。那现在这偏向我们也看到了有比力大的进展,比如说基于 TVM 的这种编译器的工作。在有的算子上自动优化出来的 binary 已经是不输于专家写的代码了。但是还存在一些不足,所以比力预期的说在微观单芯片层面的代码生成能完全实现自动化。这是袁先生比力期待的一个偏向。

最后闫先生跟我们分享到自己团队会持续地在图优化、算子优化领域发力,以解决如何模型跑得更快。以及在编程易用性方面能够做出比力大的提升,让用户更容易写入程序。然后在团队开发编译器的努力下,能够编译出高本能的盘算。同时这里有一个比力大的问题是将来面向大模型,我们怎么做集群?让用户表达盘算,剩下的事情交给我们来做。这个也是 CANN 盘算架构的核心责任。再来是关于工业体系这个方面,闫先生认为比力关键的方面,第一个是如果在一个标准体系形成,即上层应用表达标准化之后形成一个工业体系,这样实际上会大大降低整个工业体系的应用开发成本。另外比力关键的地方是图的 IR 和算子 IR  这两层结合底下的体系结构如果有一套工业标准,能够在创新矫正速度上会更快一点。

Creator 面对面 | 如何突破 AI 实践中的资源限制与壁垒?

AI

ICLR 2022 | 鉴于心智理论的多智能体通讯与分工

2022-7-18 17:06:00

AI

行业现状令人失望,工作之后我又回到UC伯克利读博了

2022-7-19 14:21:00

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索