1. 大模型的开发训练与推理部署
随着参数规模和网络结构复杂性的不断提升,大模型开发、训练和推理部署所面临的挑战愈发严峻,其研发依赖算法、算力和数据的综合支撑。**深度学习框架及配套工具为大模型的生产和应用提供了基础支撑,涉及开发、训练、压缩、推理和服务等多个环节。**此外,通过深度学习框架还可以实现与硬件的适配和协同优化,进一步提升硬件的计算和推理性能,降低大模型开发和应用的成本。
1.1 大模型开发与训练
由于大模型参数规模大,计算和存储的需求显著增加,与辨别式AI 模型相比,非常依赖分布式技术提升效率。因此,大模型开发的挑战集中体现在基于深度学习框架对各类分布式并行策略进行本地化配置。**为了支持各种分布式并行策略,需要有一套简单、灵活、高效且易于使用的框架和工具界面,使用户可以快捷地进行模型训练和调优,并方便地配置和管理大规模的并行任务。**大模型开发也离不开高效的调试工具及方法支撑,非常依赖动态图的调试机制、清晰的调试日志和可视化的调试界面等,帮助开发人员更好地分析模型的行为和表现。
大模型的高性能训练旨在通过对模型计算、显存、内存和通信的系统级优化,在保证模型收敛性的前提下,提高训练吞吐量,实现在有限资源下大模型高效训练的目的。
系统级优化方法主要从两个方向实现:
**一是设备内优化方法,**包括降低浮点数的冗余表示的半精度浮点优化、混合精度浮点优化等方法、降低梯度计算过程中冗余表示的梯度检查点( Checkpointing ) 方 法 , 以 及 内 存 优 化 的ZeRO-Offload方法,即通过将数据和计算从 GPU 卸载到 CPU,以减少神经网络训练期间 GPU 内存占用的方法。
二是多设备优化方法,也称分布式优化,即将分布在不同计算节点上的多个 GPU 一起用于训练单个模型,这类方法主要有数据并行、张量并行、流水线并行、分组参数切片并行等多种并行加速策略,下面进行重点介绍。
**数据并行:**数据并行是每个处理器存储全量的模型参数、梯度和优化器状态,但读取不同的输入数据,在反向计算出参数梯度后,对参数梯度做 AllReduce 聚合,然后每个处理器独立进行参数更新。数据并行的优点是实现和使用方式简单,可以通过增加数据并行路数提高训练吞吐,是目前最为常用的分布式并行策略之一。
**张量并行:**张量并行是将神经网络中同一层的张量运算拆分成多个独立的子运算,并相应地对模型参数做切分,由不同的处理器分别执行,生成的中间结果通过分布式通信进行组合。张量并行的优点是可以充分利用多核处理器的计算能力,减少了内存访问的延迟,但需要设计高效的并行算法和通信机制来确保计算的正确性和高效性,避免通信延迟和带宽瓶颈。
**流水线并行:**这种并行策略是将神经网络中的不同层交由不同处理器执行,上下游执行器之间的数据依赖点对点通信传输。基于此技术的高效流水线并行调度策略,支持 1F1B、Interleaving 1F1B 等高效调度算法,并通过“通信-计算”重叠的方式隐藏通信时间,提高整体训练效率。
**分组参数并行:**这种并行策略是一种特殊的数据并行方式,它可以将优化器状态、参数梯度和模型参数切分到不同的处理器上,达到节省大模型显存的目的。分组参数并行的优点是可以有效降低模型显存占用,通过增加数据并行路数提高整体训练吞吐。基于此技术的“组内参数切片+组间数据”并行,可以更合理地分配机内和机间的通信带宽,进一步提升了训练性能。
基于上述基础并行策略,不同深度学习框架的实现方法不同,有的是基于 PyTorch 进行进一步封装形成单独的工具,如微软的DeepSpeed-Megatron、NVIDIA 的 Megatron-LM、清华大学的 BMTrain 等;飞桨 PaddePaddle 框架支持四维混合并行技术,可将基础的并行策略组合使用。
在多维混合并行训练策略的基础上,为了应对模型多样性和训练硬件资源异构性,进一步发展出了端到端自适应分布式训练架构。
图 1-1 端到端自适应分布式训练架构
该架构可以针对不同的深度学习算法抽象成统一的计算视图,自动感知硬件环境并抽象成统一的异构资源视图;采用了代价模型对两者进行联合建模;将模型参数、梯度和优化器状态按照最优策略分配到不同的设备上,构建流水线进行异步高效执行。
对于同地域或跨地域多种异构硬件,可以实现节省存储、负载均衡、提升训练性能的目的。此外,针对大模型训练资源不稳定的问题,设计了弹性资源调度管理机制。
当资源发生变化时,能够自动的感知硬件环境并修正资源视图,重新触发模型切分放置策略选择及异步流水线执行,使得硬件故障下任务恢复可从小时级降至秒级。
1.2 大模型推理部署
大模型推理往往面临显存占用过多、计算规模庞大、输入输出变长等挑战,这些也是大模型应用落地要重点解决的问题。
图 1-2 模型压缩、推理引擎、服务部署三个环节协同优化
在充分考虑大模型结构特性基础上,可以从模型压缩、推理引擎、服务部署三个关键环节,开展全方位的协同优化,在降低时延提升用户体验的同时,最大化提升服务吞吐,做到低时延、高吞吐。
大模型的推理可以采用深度学习框架直接实现,通过框架和模型协同优化,可以显著提升大模型的推理效率;也可以采用专门的工具,如:FasterTransformer、TensorRT-LLM、vLLM、Text Genertion Inference、HuggingFace TG 等实现,这些工具已经针对大模型推理进行了优化,能够高效地完成推理任务。大模型推理效率的提升,不仅可以提升用户体验,还能显著降低开发成本,有利于大模型在千行百业的广泛应用。
产业界非常重视大模型推理性能的优化,如 ChatGPT组建了专门的优化团队,优化其在线推理的成本;再如百度文心一言,通过与飞桨协同优化,推理性能提升 30 多倍;腾讯混元大模型,通过太极机器学习平台的压缩和分布式推理,资源设备占用减少 40%。
1.3 大模型压缩
在大模型压缩方面,常规的模型压缩方法有模型稀疏化、权重矩阵分解、模型参数共享、蒸馏和量化。
**模型稀疏化:**这种方法通过将模型中的某些神经元、连接或层置为零,从而达到压缩模型、加速训练、减少内存消耗等目的。
**权重矩阵分解:**使用包括奇异值分解(SVD)等矩阵分解方法对预训练模型的 Feed-Forward Network(FFN)层的权重矩阵进行分解,从而减少 Attention 层的参数量,提高模型的效率。
**模型参数共享:**部分大型模型如 ALBERT采用了权重共享的方式,特定层之间共享参数,从而减少了模型的参数量。蒸馏:通过使用学生模型来模拟预训练教师模型的行为来减小模型大小的技术。
通常情况下,学生模型由更小的神经网络或线性模型组成。蒸馏的过程是将教师模型的知识转移到学生模型,使学生模型在保持较小规模的同时,能够保持类似于教师模型的预测能力。利用蒸馏技术可以将大模型的知识和泛化能力迁移到小型网络,以支持轻量化的大模型部署。
**量化:**量化是一种将预训练模型中的权重从浮点数转换为低位数的技术。通常情况下,量化的精度可被降低到 8 位或更低。量化可以大大减少模型的存储空间和计算量,但可能会对模型的性能产生一定的影响。
目前量化技术在大模型压缩时被广泛应用,然而很多量化算法难以做到模型效果无损,主要是因为大模型存在激活分布异常值较大,难以量化的问题。自适应 Shift-SmoothQuant 大模型量化方法可以使激活分布更加平滑,提升量化效果。
此外,对于超大模型精度无损的压缩,可以采用多策略组合压缩方案。通过组合使用模型稀疏化、蒸馏和参数共享等压缩技术,可以在精度无损的情况下,将模型参数量压缩至百分之一、甚至千分之一左右。例如,组合使用低比特量化和模型稀疏化,同时从数值和结构两个维度对大模型的冗余信息进行精简,协同优化计算和访存算子,可以进一步提高压缩率。
1.4 大模型推理与服务部署
在推理引擎方面,通用的技术是使用自动计算图融合优化和自动混合并行推理,实现对模型结构和计算硬件的自动感知(Automated Hardware Awareness),协同优化模型推理效率。自动计算图融合优化:以非侵入的方式自动匹配高性能融合算子,通过降低算子数量、减少访存次数,获得自动化推理加速能力。
**自动混合并行推理:**通过自动感知部署硬件的存储、带宽、算力等特性,对模型进行自适应切分,将大模型切分到多个部署硬件上,进行分布式并行推理,尽可能减少卡间通信和跨机通信数据量,从而实现如百亿、千亿参数模型推理部署。
除了上述技术外,推理引擎的优化还可以协同模型压缩,研发符合大模型特点的量化推理方案。例如,语言大模型的上下文计算阶段属于计算密集型,而 Token Generation 阶段则属于访存密集型。
针对这种计算特点,可以通过协同硬件开展优化,研发 LLM.INT8()和 Weight Only 量化混合的推理方案。这种方案能够快速进行量化,并且具有较高的精度,尤其对访存受限的场景,也拥有较好的效果。
在服务化调度协同方面,针对生成式模型计算过程中,同一批次输入输出长度不一致带来的计算效率不高问题,通过变长优化降低计算量,并引入输入动态插入批处理技术,可以大幅提升硬件的计算资源利用率,从而提升整体服务的吞吐量。
动态插入批处理技术具有感知负载的能力,能够在一个请求生成完成之后,及时快速地插入新的请求,结合输入、输出长度的动态变化,有效提升 GPU 资源的利用效率,减少用户的等待时延。
1.5 软硬件适配与协同优化
**目前国际上主要的大模型训练芯片有英伟达 GPU,如 H100、A100,以及谷歌的 TPU(Tensor Processing Unit),国内主要有华为昇腾 NPU、昆仑芯 XPU、海光 DCU、寒武纪 MLU 等,其架构和性能规格各不相同。**大模型除了对训练芯片的计算性能有一定的要求外,还对硬件的规格,如显存大小、访存带宽和通信带宽具有较高的要求。
为实现大模型的高效训练和推理,需要通过深度学习框架实现与硬件的适配和深度协同优化,通过低成本、高效率的硬件适配方案,提升