背景
这篇论文是截至目前为数不多的介绍大模型训练配套环境比对的论文,对于想要入门大模型训练同学是个不错的入门资料。比较了不同尺寸模型(比较常用的7、13、70b),在不同型号gpu、训练框架、推理框架数据。
结合自己实际工作需要和论文给出的运行时数据分析,总结了下面几条:
1.二次预训练最低硬件配置,如果想要自己做简单二次预训练(7、13、70B参数)最小8卡80g显存A100
2.对于小规模sft对考虑PEFT做训练就可以,freezen fintune方法需要硬件还是较大
3.FlashAttention对向量并行化计算对训练起到加速作用,使用时候需要增大内存量
4.vLLM是一个在个硬件表现都不错的推理库,可持续关注
5.高性能卡(比如A800、A100)对于f全float优化做了很多优化,适合高性能高精度预训练
6.消费卡(RTX开头)对于低精度计算做了较多优化,比特化训练推理性价比高
大模型分布式系统
摘要
大型语言模型(LLMs)在学术界和工业界都取得了巨大的进步,它们的流行导致了许多开源框架和技术用于加速LLM的预训练、微调和推理。训练和部署LLMs需要大量的计算资源和内存,因此开发了许多高效的方法来改进系统管道以及操作符。然而,运行时性能在不同的硬件和软件堆栈之间可能会有显著的差异,这使得选择最佳配置变得困难。在这项工作中,我们旨在从宏观和微观的角度对性能进行基准测试。首先,我们对预训练、微调和服务不同大小的LLMs进行端到端的性能基准测试,即7、13和70亿参数(7B、13B和70B)在三个8-GPU平台上,包括和不包括个别的优化技术,包括ZeRO、量化、重计算、FlashAttention。然后,我们深入研究,提供了LLMs中子模块(包括计算和通信操作符)的详细运行时分析。对于终端用户,我们的基准测试和发现有助于更好地理解不同的优化技术、训练和推理框架,以及硬件平台,以选择部署LLMs的配置。对于研究人员,我们的深入模块分析发现了未来工作进一步优化LLMs运行时性能的潜在机会。
索引词 - 大型语言模型,性能评估,基准测试
图1:使用Llama2 [9] 和Llama2-Chat作为例子部署LLM的流程,包含三个主要阶段:预训练、微调和服务。
I. 引言
近年来,大型语言模型(LLMs)在AI应用中变得非常流行,。随着LLMs的规模增大,它们在各种任务中展示出更好的泛化能力–。然而,最近的工作中模型的规模变得非常大,例如,GPT-3有1750亿个参数,PaLM有5400亿个参数。因此,训练和部署LLMs变得复杂且昂贵。
具体来说,LLMs的流程(如图1所示)有三个主要阶段,预训练、微调和服务,用于部署一个真实世界应用的LLM。首先,模型(例如,Llama2)在应用于下游任务之前,使用自监督学习进行预训练,这是LLM流程中最耗时的阶段。例如,预训练一个PaLM模型需要大约2.5 × 10^24次浮点运算(FLOPs),并且在6144个Google TPUv4芯片上执行时需要64天。其次,预训练的模型在下游任务或指令数据集上进行进一步的微调,以提高其在实际应用中的性能,例如,Llama2-Chat使用Llama2进行微调,并使用RLHF数据。第三,模型经过微调后(例如,Llama2-Chat),它被部署为一个网络(或API)服务,为给定的输入查询提供推理结果。
为了减少LLMs流程中的计算成本,已经提出了专用框架,用于有效的预训练(例如,DeepSpeed和Megatron-LM)、微调(例如,PEFT)和推理(例如,vLLM,LightLLM和TGI)。在每个框架内部,都应用了优化技术来提高内存和计算效率。具体来说,在预训练中,通常采用内存效率方法(ZeRO,激活重计算–,和量化)来使具有有限内存的GPU能够训练大型模型。在微调中,使用了参数高效微调(PEFT)方法,如LoRA,,通过调整适配器的参数而不是模型的全部参数来微调LLMs,以便具有有限内存的GPU能够微调LLMs。在LLM服务中,为了最大限度地利用部署中的GPU资源,对训练好的模型进行了量化和内核级优化。
然而,由于各种LLM框架和相关优化技术在不同类型的硬件上运行(例如,高端GPU如Nvidia A800和消费级GPU,例如Nvidia Geforce RTX4090和RTX3090),存在两个对最终用户和研究人员至关重要的未被充分探索的问题。首先,为了平衡效率和成本,特定应用的预训练、微调和部署LLMs需要什么配置?例如,8x A800 80GB GPU是否足以预训练一个7B模型,需要多长时间,以及应该启用哪种优化技术来加速训练?其次,现有的最先进的系统是否充分利用了GPU资源,性能瓶颈在哪里?特别是,在不同配置下,现代GPU服务器的计算和带宽资源的峰值利用率是多少?
为了解答这些问题,我们对LLM流程中现有系统在各种类型的GPU服务器上的运行时和内存性能进行了基准测试。具体来说,我们提供了以下详细的基准测试,以理解不同软硬件系统的时间和内存效率。
(1) 在框架级别,我们选择DeepSpeed和Megatron-LM来研究他们在三种类型的硬件(A800,RTX4090和RTX3090服务器)上对Llama2的训练性能,有三个规模(7B,13B和70B)。
** (2) 我们研究了整合ZeRO,量化,激活重计算和FlashAttention对内存和计算效率的影响。
(3) 我们评估了包括LoRA和QLoRA在内的流行PEFT框架,以理解他们的微调效率。
(4) 我们使用高度优化的推理库(包括vLLM,LightLLM和TGI)研究了端到端的推理性能。
(5) 为了深入理解性能,我们对最耗时的关键内核进行了微观基准测试。
通过全面的基准测试和分析,我们得出了以下重要的发现。
(1) DeepSpeed在所有配置中都比Megatron-LM实现了更高的吞吐量。
(2) ZeRO在不牺牲训练效率的情况下节省了大量的内存,或者当GPU的数量少于4时,它可能会遭受OOM。
(3) 内存卸载进一步减少了内存使用,但显著减慢了训练过程。
(4) 激活重计算只有在与其他优化技术结合使用时才能工作良好,否则它不能减少太多的内存消耗。
(5) 量化提高了训练速度,在所有硬件平台上实现了最大的吞吐量,与其他方法相比。然而,它可能导致收敛失败。
(6) FlashAttention在各种硬件平台上加速了训练过程,峰值内存消耗略高,可以与其他内存高效的方法迁移。 (7) PEFT方法使各种设备能够训练LLMs。
(8) 在A800平台上,LightLLM表现出优越的吞吐量。 相反,在24G GPU平台上,TGI展示了增强的吞吐量,而vLLM和LightLLM显示出相当的吞吐量水平。**
背景和初步研究
A. 仅解码器
基于Transformer的LLMs 预训练、微调、服务 软件 DeepSpeed (Q)LoRA vLLM TGI 解码器 RMSNorm 线性 传统的Transformer [24]由编码器和解码器组成,解码器已被广泛用于现代文本生成LLMs(例如,GPT-3 [25],Llama [26],Llama2GPU [9],BLOOM [27]等)。解码器的结构如图2所示。输入数据首先通过嵌入层进行编码,其输出被馈送到多个注意力块中。每个注意力块由一个多头注意力和一个前馈网络组成,前馈网络有几个线性层。然后,多个块的输出被连接作为下一个线性层的输入,称为生成或分类头,然后通过softmax层计算下一个标记的概率。
图2:仅解码器LLMs的解码器结构。
B. 预训练框架
DeepSpeed.
DeepSpeed [10]是一个用于大规模训练和推理的尖端深度学习(DL)优化软件套件。它采用了ZeRO,内存卸载,以及DeepSpeed-Inference 和其他技术。该软件被封装在一个开源库中,允许无缝地集成到训练和推理中。它已经在DL社区中被广泛采用,并且是微软AI at Scale倡议的基石。
Megatron-LM.
Megatron-LM ,解决了有效训练昂贵的Transformer模型的挑战。Megatron-LM对支持3D并行和激活重计算 进行了很好的优化。它还引入了序列并行,以与张量并行结合,因此它大大减少了激活重计算的需要。由于Megatron-LM具有很高的可扩展性,因此它已经成为一个常用的LLM训练系统。
C. 微调框架
微调LLM用于下游任务的直接方法是微调所有参数(即,Full-FT),但这非常消耗内存和时间。在实际应用中,参数高效微调(PEFT)[12]方法更受欢迎,因为它们比Full-FT需要更少的内存资源来微调模型。在

本文对大语言模型(LLMs)在不同硬件和软件配置下的预训练、微调和推理性能进行了基准测试。比较了不同尺寸模型在不同GPU、训练和推理框架的数据,分析了多种优化技术的影响,为用户选择配置提供信息,也为系统性能优化提供机会。

7433

被折叠的 条评论
为什么被折叠?



