大模型推理并行方向只有2个难点(特指并行而非分布式,个人觉得分离式架构、分布式调度等均属于大模型推理分布式领域),一个是序列并行、一个是张量并行的通信计算重叠优化。序列并行笔者介绍的比较多了(手抓饼熊:大模型推理序列并行),本文介绍一下张量并行通信计算重叠的一些优化方案。

背景

张量并行目前已经是大模型推理的一个必备的技术,笔者之前分析过vLLM的张量并行(手抓饼熊:vLLM源码之模型并行)。然而张量并行一个缺点是通信开销,当推理采用PCIE类卡的时候,该缺点更加明显。

针对通信开销的缺点,训练框架已经有了通信计算重叠优化(手抓饼熊:Megatron-LM Tensor并行计算通信重叠),而目前开源的推理引擎如vLLM和SGLang均没有实现该功能。最近知乎开源的大模型推理引擎ZhiLight支持张量并行通信计算重叠(如何评价知乎刚刚宣布开源的大模型推理框架 ZhiLight?)。笔者认为,在2025年张量并行通信计算重叠将会是所有开源框架的必备功能。本文结合当前最新的论文,介绍张量并行通信计算重叠的做法。

张量并行的几种实现

2.1 朴素版张量并行

如上图所示,标准的Transformer张量并行结构,从图中我们可以看到,每次Transformer前向需要进行2次AllReduce,这会导致模型前向执行AllReduce的时候,计算的GPU比较空闲。

2.2 Gemm版本通信计算重叠

当我们说到张量并行计算通信重叠,一个最直观的实现是分布式Gemm + AllReduce的overlap,目前TransformerEngine、torch([Distributed w/ TorchTitan] Introducing Async Tensor Parallelism in PyTorch)和字节Flux都是采取类似的实现,Flux在优化方面做的更细一点,如上图所示,o_proj其实是一个分布式矩阵乘法,其后面跟着一个Allreduce算子。放大分布式Gemm + AllReduce如上图所示。对上述图示说明如下:

  • 上图上半部分展示的是分布式Gemm,A @ B,其中A是列切,B是行切,A0 @ B0 得到蓝色的 C00 C10部分,A @ B1 得到蓝色的 C01 C11部分。蓝色的 C00 C11和黄色的C01 C11进行ReducesScatter得到 C0 C1。

  • 上图的下半部分是overlap的版本,我们看到原来的A是按照列切分的,计算的时候再按照行分块计算。分2个step计算,在step0时候,A00 @ B0会得到 C00,同样 A01 @ B得到C01,在step1时候,A10 @ B0会得到 C00,同样 A11 @ B得到C11,此时可以同时进行step0计算结果C的规约。

Flux的思想和这个类似,但是还有很多优化,以后有时间再探讨。

2.3 请求间通信计算重叠

上图是张量并行通信与计算重叠的另一种实现(Liger: Interleaving Intra- and Inter-Operator Parallelism for Distributed Large Model Inference)。从图中可以看出该方法有如下特点:

  • 会有多个请求,不同的请求会有不同的stream。

  • 执行请求1的计算的时候,请求2正在进行通信操作,反之依然。

  • 类似的这种做法还有Nanoflow,如下图所示。

  • 这种做法,按理说不需要重写一个计算通信的kernel(右图是计算和通信对应的SM分配情况),但是整体调度实现会很复杂,同样后续有机会再深入分析。

2.4 请求内通信计算重叠

第3种通信计算重叠方式如上图所示(ISO: Overlap of Computation and Communication within Seqenence For LLM Inference),看起来和Flux、Liger均不一样。但凡通过这张图,要是能看懂这个方法的思路,那么大模型并行基础就不错,至少对分布式attention实现还是有很深了解的。

这张图看起来比较疑惑,因为他是单张卡不同的流的图示,把这张图变成多卡。我用红色、黑色、黄色框画了几个step,后续会用到,可以结合着看。如上图所示,上面的是rank0,下面的是rank1 。可以看到一个transformer对于单卡而言,通信和计算是重叠的。从图中可以看出,attention采用了分块attention实现的。关于MLP的计算通信重叠和2.2节应该类似,我们重点看attention如何实现通信计算重叠的。上图是整体流程,可以结合上面的流程图一起看,核心思想是,每张卡,在序列维度分块执行,分块0执行的时候没有通信,分块1执行的时候,执行分块0的通信,具体细节可以看图。

总结

听君一席话,如听君一席话。


AI大模型学习福利

作为一名热心肠的互联网老兵,我决定把宝贵的AI知识分享给大家。 至于能学习到多少就看你的学习毅力和能力了 。我已将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。

在这里插入图片描述

大模型&AI产品经理如何学习

求大家的点赞和收藏,我花2万买的大模型学习资料免费共享给你们,来看看有哪些东西。

1.学习路线图

在这里插入图片描述

第一阶段: 从大模型系统设计入手,讲解大模型的主要方法;

第二阶段: 在通过大模型提示词工程从Prompts角度入手更好发挥模型的作用;

第三阶段: 大模型平台应用开发借助阿里云PAI平台构建电商领域虚拟试衣系统;

第四阶段: 大模型知识库应用开发以LangChain框架为例,构建物流行业咨询智能问答系统;

第五阶段: 大模型微调开发借助以大健康、新零售、新媒体领域构建适合当前领域大模型;

第六阶段: 以SD多模态大模型为主,搭建了文生图小程序案例;

第七阶段: 以大模型平台应用与开发为主,通过星火大模型,文心大模型等成熟大模型构建大模型行业应用。

2.视频教程

网上虽然也有很多的学习资源,但基本上都残缺不全的,这是我自己整理的大模型视频教程,上面路线图的每一个知识点,我都有配套的视频讲解。

在这里插入图片描述

在这里插入图片描述

(都打包成一块的了,不能一一展开,总共300多集)

因篇幅有限,仅展示部分资料,需要点击下方图片前往获取

3.技术文档和电子书

这里主要整理了大模型相关PDF书籍、行业报告、文档,有几百本,都是目前行业最新的。
在这里插入图片描述

4.LLM面试题和面经合集

这里主要整理了行业目前最新的大模型面试题和各种大厂offer面经合集。
在这里插入图片描述

👉学会后的收获:👈
• 基于大模型全栈工程实现(前端、后端、产品经理、设计、数据分析等),通过这门课可获得不同能力;

• 能够利用大模型解决相关实际项目需求: 大数据时代,越来越多的企业和机构需要处理海量数据,利用大模型技术可以更好地处理这些数据,提高数据分析和决策的准确性。因此,掌握大模型应用开发技能,可以让程序员更好地应对实际项目需求;

• 基于大模型和企业数据AI应用开发,实现大模型理论、掌握GPU算力、硬件、LangChain开发框架和项目实战技能, 学会Fine-tuning垂直训练大模型(数据准备、数据蒸馏、大模型部署)一站式掌握;

• 能够完成时下热门大模型垂直领域模型训练能力,提高程序员的编码能力: 大模型应用开发需要掌握机器学习算法、深度学习框架等技术,这些技术的掌握可以提高程序员的编码能力和分析能力,让程序员更加熟练地编写高质量的代码。
在这里插入图片描述

1.AI大模型学习路线图
2.100套AI大模型商业化落地方案
3.100集大模型视频教程
4.200本大模型PDF书籍
5.LLM面试题合集
6.AI产品经理资源合集

👉获取方式:
😝有需要的小伙伴,可以保存图片到wx扫描二v码免费领取【保证100%免费】🆓

在这里插入图片描述

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐