当前位置: 首页 > news >正文

如何查找网站济源网站开发

如何查找网站,济源网站开发,泰安 网站建设,昆明的花仙子制作的企业背景 这篇论文是截至目前为数不多的介绍大模型训练配套环境比对的论文#xff0c;对于想要入门大模型训练同学是个不错的入门资料。比较了不同尺寸模型#xff08;比较常用的7、13、70b#xff09;#xff0c;在不同型号gpu、训练框架、推理框架数据。结合自己实际工作需要… 背景 这篇论文是截至目前为数不多的介绍大模型训练配套环境比对的论文对于想要入门大模型训练同学是个不错的入门资料。比较了不同尺寸模型比较常用的7、13、70b在不同型号gpu、训练框架、推理框架数据。结合自己实际工作需要和论文给出的运行时数据分析总结了下面几条1.二次预训练最低硬件配置如果想要自己做简单二次预训练7、13、70B参数最小8卡80g显存A1002.对于小规模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和推理例如vLLMLightLLM和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来研究他们在三种类型的硬件A800RTX4090和RTX3090服务器上对Llama2的训练性能有三个规模7B13B和70B。** (2) 我们研究了整合ZeRO量化激活重计算和FlashAttention对内存和计算效率的影响。 (3) 我们评估了包括LoRA和QLoRA在内的流行PEFT框架以理解他们的微调效率。 (4) 我们使用高度优化的推理库包括vLLMLightLLM和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需要更少的内存资源来微调模型。在PEFT中LoRA [21]或QLoRA [22]LoRA的量化版本和Prompt Tuning [32]是两种被广泛采用的方法。 LoRA. 低秩适应LoRA方法 [21]基于这样的观察即超参数化模型通常在低内在维度内操作。对于预训练的权重矩阵W0 ∈ Rd×k其更新受到低秩分解的约束W0 ∆W W0 BA其中B ∈ Rd×rA ∈ Rr×k且秩r ≪ min(d,k)。在训练过程中W0保持静态不进行梯度更新而A和B是可训练的。修改后的前向传递表示为h W0x∆Wx W0xBAx。因此LoRA通过将LoRA秩r设置为预训练的权重矩阵来训练低秩矩阵近似于Full-FT并在推理过程中产生很小的额外开销。QLoRA. QLoRA [22] 是 LoRA 的量化版本。它将预训练的模型转换为特定的4位数据类型NormalFloat 或 NF4从而大大减少了内存使用量并在保持量化过程中的数据完整性的同时提高了计算效率。Prompt Tuning. Prompt tuning [32] 是一种专为将冻结的语言模型适应到特定下游任务而定制的新技术。具体来说prompt-tuning 强调通过反向传播学习“软提示”使它们可以使用标记示例的信号进行微调。D. 推理框架 TGI. 文本生成推理TGI[15] 是一个专为部署和服务LLMs而设计的工具包。它迎合了一系列著名的开源LLMs包括Llama系列 [BLOOM 。它采用张量并行或模型并行 来加速多个GPU上的推理并采用服务器发送事件SSE[34]进行令牌流。值得注意的是TGI的连续批处理优化了对传入请求的处理最大化了吞吐量。该工具包进一步通过优化的Transformer代码优化了推理利用了诸如FlashAttention 和PagedAttention 等先进技术。vLLM. 受操作系统中的虚拟内存和分页机制的启发PagedAttention算法将动态变化的键值缓存KV缓存内存划分为较小的块这些块可以放置在非连续的区域。这种方法解决了诸如碎片化等问题为优化内存利用率铺平了道路。在PagedAttention的基础上vLLM2是一个高吞吐量的LLM服务引擎。LightLLM. LightLLM 以其轻量级的架构、可扩展性和快速的性能成为了一种尖端的、基于Python的LLM推理和服务框架。LightLLM采用了三进程异步协作方案允许标记化、模型推理和去标记化同时进行从而最大化GPU的利用率。此外它引入了“Nopad”特性以熟练地管理具有不同长度的请求并引入了动态批处理调度机制以简化请求处理。LightLLM的独特的基于令牌的KV缓存内存管理被称为“Token Attention”在推理过程中显著减少了内存使用。另一个特性是Int8KV Cache它有效地将令牌容量增加了一倍。E. 优化技术 ZeRO. ZeRO串行技术即ZoRO-1/2/3 [16]ZeRO-Offload [28]和ZeRO-Infinity [29]优化了训练LLMs的内存效率。ZeRO-1将模型的优化器状态分布在各个GPU上减少了这些状态所使用的内存。ZeRO-2在ZeRO-1的基础上增加了在各个GPU上对梯度的划分进一步减少了梯度所需的内存。然而ZeRO-2在反向过程中引入了额外的Reduce集合通信原语。基于ZeRO-1和ZeRO-2ZeRO-3进一步增加了模型参数划分和激活的模型并行最大化了内存节省并允许以减少的通信开销训练更大的模型但它需要额外的Reduce-Scatter来划分模型参数。有了ZeRO-Offload作者们的目标是使十亿规模的模型训练更容易获得弥合了计算需求和可用资源之间的差距。 图3我们的基准测试概览涵盖了硬件、软件包括有优化技术和无优化技术的情况以及模型。 表IGPU平台规格。每个平台都有8个GPU。激活卸载. 激活卸载 是一种旨在有效管理训练和部署LLMs所固有的大量计算和GPU内存需求的技术。通过在神经网络的前向传递过程中选择性地将激活中间神经元输出从GPU内存转移到CPU内存或磁盘存储并在反向传递过程中重新加载它们进行梯度计算激活卸载有助于内存和计算资源的优化。此外可以采用两种主要方法优化器卸载和模型参数卸载来显著减轻GPU内存的压力。然而这引入了额外的数据传输开销。激活重计算. 它涉及到在训练的反向传递过程中重新计算中间激活而不是从前向传递中保留它们以便优化内存使用。通过避免为模型的每一层存储激活它可以显著减少内存消耗。然而这种方法引入了额外的计算开销。虽然内存的好处是实质性的但重计算过程需要对传统的反向传播算法进行修改增加了训练范式的复杂性。量化. 量化是一种重要的技术用于使用低位格式表示权重或激活以减少内存大小和计算时间。ZeroQuant 是一种流行的系统它引入了一种新颖的后训练量化方法并开发了一种对权重和激活都友好的硬件量化方案一个独特的逐层知识蒸馏算法以及一个高度优化的量化系统后端。它已经展示了将BERT和GPT-3等模型的权重和激活的精度降低到INT8的能力同时几乎不降低精度。FlashAttention. FlashAttention 是专门为解决Transformer在处理大量序列时所面临的固有挑战而定制的。这种算法是IO感知的它优化了GPU内存级别之间的相互作用。它利用切片技术减少了GPU的高带宽内存HBM和片上静态随机存取内存SRAM之间的内存读/写以提高注意力效率。 III. 方法论 我们的基准测试使用自上而下的方法涵盖了在图3所示的三个8-GPU硬件平台上Llama2 [9] 的端到端步骤时间性能、模块级时间性能和操作符时间性能。GPU. 在硬件评估方面我们涵盖了三款8-GPU平台其中的配置显示在表I中。在这些平台上我们使用不同的软件例如DeepSpeed和Megatron-LM测量LLMs在预训练、微调和服务中的时间性能。软件. 在软件评估方面我们比较了DeepSpeed和Megatron-LM在预训练和微调中的端到端步骤时间。为了评估优化技术我们使用DeepSpeed一一启用这些优化即ZeRO-2ZeRO-3卸载激活重计算量化和FlashAttention来测量时间和内存消耗的性能改进和降级。在LLM服务上有三个高度优化的系统vLLM [13]LightLLM [14]和TGI [15]。我们在三个测试平台上比较他们的性能延迟和吞吐量。为了深入理解端到端性能我们提供了模型模块和操作符性能的微观基准测试这些是预训练、微调和推理服务流程中的基本组件。A. 测量端到端性能 我们通过使用步骤时间、吞吐量和内存消耗的指标在四个测试平台上测量预训练、微调和服务三种大小的Llama2模型Llama2-7BLlama2-13B和Llama2-70B的端到端性能。预训练§IV。我们首先比较DeepSpeed和Magetron-LM之间的性能吞吐量、时间和内存差异。然后我们使用DeepSpeed来评估优化技术ZeRO-2ZeRO-3卸载激活重计算量化和FlashAttention对我们的测试平台上的时间和内存效率的影响。为了理解导致测量性能的根本原因我们进一步测量了模块和操作符的性能。微调§V我们比较了两种流行的微调技术LoRA和QLoRA以及基线全参数调整或Full-FT在四个测试平台上的吞吐量和内存消耗的指标。推理服务§VI我们使用三个测试平台评估三个广为认可的推理服务系统vLLM [13]LightLLM [14]和TGI [15]重点关注延迟、吞吐量和内存消耗等指标。最初我们为这些框架的每一个部署了API服务器。随后我们使用一个基准测试脚本利用asyncio向模型服务器发送HTTP请求。为了全面利用计算资源并评估框架的鲁棒性和效率所有的请求都以突发模式发送。实验数据集由1000个合成句子组成每个句子包含512个输入令牌确保了一致的评估环境。我们在同一GPU平台上的所有实验中一致地维护了“最大生成令牌长度”参数以保证结果的一致性和可比性。由于RTX40X0 GPU系列存在一个公认的bug3为了纠正这个问题并确保推理框架在RTX4090上正常工作我们应用了配置NCCL_P2P_DISABLE1。然而这种配置可能会影响最终的性能使RTX4090相对于其他平台处于不利地位。表II在8-GPU A800-80GB平台上预训练Llama2-7B时Megatron和Deep-Speed的性能比较。 图4在不同规模的GPU下训练Llama2-7B时的数据并行训练效率。B. 测量模块级性能 LLM通常由一系列模块或层组成。以Llama2模型为例。顶级类LlamaForCausalLM由一个LlamaModel模块和一个用于下游任务的线性层组成。每个模块都有自己的子模块这些子模块可能具有独特的计算和通信特性。具体来说LlamaModel由一个嵌入层和多个解码器层LlamaDecoderLayer组成LlamaDecoderLayer的数量是可配置的。LlamaAttention是自注意力层由四个线性层组成用于计算Q、K、V和O投影以及一个嵌入层LlamaRotaryEmbedding。LlamaMLP由三个大小可配置的线性层和一个SiLU激活层SiLUActivation组成。LlamaRMSNorm是RMS规范化层。总的来说构成Llama2模型的关键模块是嵌入原生嵌入和LlamaRotaryEmbedding、LlamaDecoderLayer、线性、SiLUActivation和LlamaRMSNorm。在微调中不同的方法引入了额外的模块来更新模型参数或适配器参数。特别地LoRA需要额外的线性层即低秩适配器。QLoRA与LoRA有相似的训练范式但其计算使用低位表示导致低精度的线性层如8位或4位的线性层。 IV. 预训练结果 在本节中我们首先分析了在四个测试平台上不同模型大小7B13B70B的预训练性能迭代时间或吞吐量和内存消耗§IV-A然后进行了模块级和操作级的微观基准测试§VII。除非另有说明每个任务的每个指标迭代时间或吞吐量和内存消耗都测量三次报告平均值。A. 端到端性能 Megatron-LM vs. DeepSpeed: 我们首先进行了一个实验比较了Megatron-LM和DeepSpeed在A800-80GB服务器上预训练Llama2-7B的性能这两者都没有使用任何内存优化技术例如ZeRO。我们使用1024的序列长度以及两组批量大小BS对于Megatron-LM和DeepSpeed从1到最大批量大小。我们报告了训练吞吐量每秒令牌数或tokens/s和消耗的GPU内存以GB为单位作为基准。结果显示在表II中。结果显示当批量大小等于1时DeepSpeed的性能略优于Megatron-LM当它们达到最大吞吐量时差距扩大。由于DeepSpeed的数据并行训练它在训练速度方面领先。然而在相同的批量大小下DeepSpeed消耗的GPU内存比基于张量并行的Megatron-LM更多。即使批量大小很小这两个系统也占用了大量的GPU内存导致在RTX4090或RTX3090 GPU服务器上出现内存溢出OOM。 GPU缩放效率: 我们使用DeepSpeed和量化来研究不同硬件平台上训练Llama2-7B序列长度为1024批量大小为2的缩放效率从1个GPU到8个GPU。结果显示在图4中其中斜率表示缩放效率。该图显示A800几乎是线性缩放而RTX4090和RTX3090的缩放效率略低分别为90.8%和85.9%。RTX4090的缩放效率比RTX3090高4.9%。在RTX3090平台上NVLINK连接有助于提高缩放效率比没有NVLINK高10%。 硬件和优化技术 我们使用DeepSpeed来评估在不同的内存和计算效率方法下的训练性能。我们在所有的评估中使用1024的序列长度和1的批量大小以进行公平的比较并默认将模型权重加载到bf16中进行所有的实验。对于ZeRO-2和ZeRO-3与卸载我们分别将优化器状态和优化器状态模型权重卸载到CPU RAM。对于量化我们使用4位的双重量化配置如前一项研究[22]所建议。我们还报告了在禁用NVLink时RTX3090的性能即所有数据都通过PCIe总线传输结果显示在表III中。 硬件影响。(1) A800的吞吐量超过RTX4090和RTX3090 GPUs的50倍在所有评估的情况下除了量化。在使用量化的情况下RTX GPUs可以达到A800性能的一半。 (2) RTX4090比RTX3090好50%并且RTX3090中的NVLink有助于提高性能约10%。 (3) 由于A800有80GB的内存而RTX4090和RTX3090每个只有24GB所以一些情况例如Naive和ZeRO-2不能在RTX4090和RTX3090 GPUs上运行。 优化技术。在预训练Llama2-7B时ZeRO-2的GPU内存消耗约为Naive的57%而不牺牲模型性能和训练效率。同时ZeRO-3的性能略低于ZeRO-2但内存消耗较少。然而当预训练Llama2-13B时ZeRO-3的性能超过了ZeRO-2。这种差异是因为分片全模型状态有助于进一步减少通信特别是在训练更大的模型时。卸载显著地减慢了训练过程因为它将一些分片和计算卸载到RAM和CPU并减少了GPU内存的消耗。量化在所有硬件平台上都实现了最高的吞吐量但可能影响收敛。FlashAttention也加速了训练可以与诸如ZeRO之类的内存效率方法一起使用。激活重计算进一步减少了GPU内存使用但降低了吞吐量。注意当批量大小1时激活内存很小激活重计算可以在更高的批量大小下节省更多的内存。在表III中当使用ZeRO或卸载时同一方法的内存消耗在各个平台上有所不同具体来说它在A800上占用的内存比其他平台多。这种差异是因为在分片和卸载中内存被固定在CPU上句柄根据可用的物理内存动态加载到GPU内存中而A800的物理内存比其他平台大。这个表也证明训练Llama2-13B达到了Llama2-7B训练的吞吐量的一半对于Llama2-7B和Llama2-13B之间的这种模型性能训练一个有13B参数的模型可能比一个7B模型更好。我们进一步利用不同GPU服务器的计算能力通过最大化每种方法的批量大小来获得最大的吞吐量。结果显示在表IV中。这个表显示增大批量大小容易提高训练过程这也使通信和GPU计算重叠。因此具有高带宽和大GPU内存的GPU服务器更适合进行全参数混合精度预训练而不是消费级GPU服务器。表III在四种类型的8-GPU平台上对基线设置Naive、ZeRO-2Z2和3Z3、卸载O、量化Q、激活重计算R和FlashAttentionF进行预训练性能比较。我们以103 tokens/sT/s为单位报告吞吐量平均值为三次独立运行的平均值每个吞吐量值的右下角显示标准偏差以及峰值GPU内存使用量M以GB为单位。在每次运行中吞吐量是在30个预热步骤后的100个步骤的平均值。-表示OOM。 表IV在最大化批量大小以获得最大吞吐量时6种方法的预训练性能比较。我们使用与表III相同的配置。 表V预训练Llama2-7B模型的一步中前向、反向和优化器的总体和计算内核时间成本。*对于反向阶段由于总体时间包括非重叠时间所以计算内核时间的百分比明显低于前向阶段和优化器。如果从反向阶段中去除非重叠时间这个值变为94.8%。B. 模块级分析 为了更好地了解预训练性能我们对预训练过程进行了详细的模块级分析。具体来说我们选择了在A800平台上的Llama2-7B模型以确保所有的案例都可以进行性能分析。为了确保结果的准确性和可重复性我们计算了LLM常用数据集alpaca的指令、输入和输出的平均长度并随机生成了固定长度的字符串作为我们性能分析的输入。我们使用“torch.profiler”生成了追踪本节中呈现的所有性能数字都是十步的平均值。实验设置与第IV-A节中描述的一致。考虑到A800的内存容量我们将批量大小设置为2。在一个预训练步骤中前向、反向和优化器阶段所消耗的时间详见表V。值得注意的是大约37%的时间被用于优化器这与预期不符因为优化器只有元素级操作。我们在第IV-C节中分析了这种现象重点关注了重计算的影响。我们对前向和反向阶段进行了模块级时间分析结果显示在表V中。在Llama2中基于Transformer-decoder架构构建的解码器层占据了大部分的计算时间。具体来说多层感知器MLP和查询、键和值QKV投影这些都依赖于通用矩阵乘法GEMM操作是最耗时的组件。此外由于元素级操作的数量众多RMSNorm和RoPE模块也需要大量的时间。与前向阶段相比反向阶段需要额外的通信开销来进行GPU之间的梯度同步。C. 重计算和FlashAttention的影响 加速预训练的技术大致可以分为两类节省内存以增加批量大小和加速计算内核。如表5所示GPU在前向、反向和优化器阶段的空闲时间为5-10%。我们认为这个空闲时间是由于批量大小较小。我们测试了可以使用所有可用技术的最大批量大小并发现重计算可以将批量大小从2增加到最大的32。因此我们选择重计算来增加批量大小选择flashattention来加速计算内核分析。重计算。随着批量大小的增加前向和反向阶段的时间显著增加GPU的空闲时间很少表VII。优化器根据优化器状态更新模型参数因此这个过程将有很多元素级操作尽管批量大小增加时间消耗将保持不变。相反前向和反向阶段有很多批量操作这将随着批量大小的增加而增加时间消耗。因此当批量大小相对较小时优化器所占用的时间比例会相对较大当使用重计算技术进行大批量大小的预训练时优化器所占用的时间比例会非常小。表VILlama2-7B的前向和反向阶段的模块级时间消耗和百分比。解码器层中模块的时间消耗是32次迭代的累积时间。 表VII预训练Llama2-7B模型的一步中前向、反向和优化器的总体和计算内核时间消耗。 图5没有批量大小2和有批量大小32重计算的解码器层模块的时间分解。 表VIII在朴素和FlashAttention方法中注意力模块时间消耗的比较。为了进一步探索更大批量大小对预训练性能的影响我们比较了在前向和反向在反向中去除重计算部分阶段使用和不使用重计算即比较批量大小32和批量大小2的解码器层模块所占用的时间百分比。因为反向阶段的重计算部分实质上是重新运行前向阶段所以我们在分析时分别对前向和反向阶段进行分析。图5显示当批量大小从2增加到32时前向和反向阶段的模块在时间分解中的变化不大。这是因为元素级操作是内存受限的它们的运行时间大致与批量大小线性缩放。相比之下解码器层中的GEMM操作是计算受限的改变批量大小通常只影响M、N或K中的一个所以运行时间也随着批量大小线性增长。FlashAttention将KTQ、softmax、PV(Psoftmax( K T Q ))和一些元素级操作融合到一个内核中使用更多的访问低延迟高带宽的GPU SRAM并减少访问高延迟低带宽的GPU DRAM。表VIII显示这种技术可以分别提高注意力模块的34.9%和24.7%的速度。在微调中我们主要关注参数有效的微调方法即PEFT方法因为全参数训练已经在第IV-A节中讨论过。我们报告了LoRA和QLoRA在各种模型大小和硬件设置下的微调性能。我们使用1024的序列长度1的批量大小64的LoRA等级并默认将模型权重加载到bf16中。对于QLoRA我们采用4位双重量化的配置[22]。我们还将LoRA和QLoRA与其他技术结合其配置与第IV-A节中描述的一致。Llama2-7B的微调结果显示在表IX中。表IX显示使用LoRA和QLoRA微调Llama2-13B的性能趋势与微调Llama2-7B的性能趋势保持一致即在所有的评估中LoRA的吞吐量大约是QLoRA的2倍这主要是由于量化和反量化操作的开销。然而QLoRA的内存消耗是LoRA的一半。FlashAttention和ZeRO-2可以与LoRA在微调中结合分别在所有硬件平台上获得比LoRA高20%和10%的吞吐量。ZeRO-3或卸载在LoRA微调中表现不佳因为LoRA只更新一小组参数即低秩适配器。由于优化器状态只处理LoRA参数更新这不是计算受限的卸载或分片这样一小部分状态将引入与计算时间相比的通信开销同时它不能减少太多的内存。微调Llama2-13B的吞吐量比微调Llama2-7B减少了大约30%。当所有的优化技术都结合在一起时甚至RTX4090和RTX3090都可以微调Llama2-70B总吞吐量约为每秒200个令牌。图6在不同的GPU平台上随着LLM大小的变化吞吐量性能的比较。 VI. 推理结果 A. 端到端性能 吞吐量。我们在图6中展示了各种硬件平台和推理框架的吞吐量比较分析。由于Llama2-70B模型在RTX3090和RTX4090上使用TGI框架会引发OOM错误因此在图6中省略了与Llama2-70B相关的数据推理。TGI框架表现出优越的吞吐量特别是在具有24GB内存的GPU上如RTX3090和RTX4090。相比之下LightLLM在A800 GPU平台上的性能显著优于TGI和vLLM吞吐量几乎翻倍。这些实验表明TGI推理框架在24GB GPU平台上表现出优越的性能而LightLLM推理框架在A800 80GB GPU平台上表现出最高的吞吐量。这个发现表明LightLLM专门针对高性能GPU进行了优化如A800/A1000系列。延迟。我们在图7、图8、图9和图10中展示了各种硬件平台和推理框架的延迟比较分析。我们使用累积分布函数CDF来绘制不同推理框架的延迟。CDF表示一个变量取小于或等于样本空间中特定点的值的概率。例如在图7a中LightLLM需要大约20秒的时间来响应60%的请求需要大约80秒的时间来响应100%的请求。在图7中我们比较了同一GPU平台上三个推理框架的延迟。RTX3090和A800平台上的性能表现出类似的趋势TGI显示出最低的延迟其次是LightLLMvLLM的延迟最高。在图9中展示了更多的实验。图9是图7的扩展包含了同一GPU平台上的推理基准的额外延迟实验。RTX4090平台上的性能结果与其他两个平台不同。这种差异可能是由于NCCL_P2P_DISABLE1的设置。在RTX4090平台上LightLLM显示出最高的延迟而TGI对于Llama2-7B模型有最低的延迟。从延迟实验中得到的另一个明显的发现是在消费级GPU平台上随着模型参数大小的增加总推理时间会增加。具体来说在RTX4090平台上Llama2-7B和Llama2-70B之间的推理时间差可以达到13倍从120秒增加到1600秒。然而这种现象在A800 GPU平台上并未观察到在这个平台上对于较大模型的推理时间保持在一个较窄的范围内。这表明对于目前流行的LLM大小A800平台可以处理推理而不会产生任何延迟影响而且70B模型还没有达到A800平台推理的性能极限。在图8中我们比较了不同GPU平台上每个推理框架的延迟。在几乎所有的实验中A800始终表现出最低的延迟。此外RTX3090 GPU平台在大多数实验中的延迟比RTX4090低这种情况也可能是由于NCCL_P2P_DISABLE1的设置。这些实验表明如果一个人的目标是一个具有最小延迟的推理服务A800 GPU平台是最好的选择它在各种模型和推理框架组合中都提供了显著的性能优势。在图10中展示了更多的实验。表IX在4种类型的8-GPU服务器上使用LoRAL、QLoRAQL以及不同的优化方法包括ZeRO阶段2和3Z2Z3、FlashAttentionF、卸载O、激活重计算R进行微调性能比较A800RTX4090RTX3090 w/ NVLink和RTX3090 w/o NVLink。批量大小固定为1。我们报告了三次独立运行的平均吞吐量103 tokens/sT/s及其标准偏差以及峰值GPU内存使用量M以GB为单位。在每次运行中吞吐量是在30个预热步骤后的100个步骤的平均值。 图7在同一GPU平台上使用不同推理框架的延迟比较。图8在不同GPU平台上使用Llama2-13B的延迟性能比较。图10是图8的扩展包含了对同一推理框架进行推理基准测试的额外延迟实验。 总的来说A800平台在吞吐量和延迟方面明显优于其他两个消费级平台。在这两个消费级平台中RTX3090比RTX4090有轻微的优势。在消费级平台上运行时三个推理框架在吞吐量方面没有显著差异。相比之下TGI框架在延迟方面始终优于其他框架。在A800 GPU平台上LightLLM在吞吐量上表现最好其延迟也非常接近TGI框架。B. 模块级分析 在这个小节中我们以LightLLM为例讨论了模块级时间成本。我们将批量大小设置为1024以模拟大量用户使用服务的场景输出长度为64提示长度为512在A800 GPU服务器上。表X和表XI显示了结果。我们发现GPU泡沫卡在了推理框架中。在表X的“其他”行中显示了泡沫占了7.55%。这表明我们可以进一步融合GPU内核以减少泡沫的总时间。图9在同一GPU平台上使用不同推理框架的延迟性能比较。 表X在A800上运行LightLLM的Llama2-7B的模块级时间成本。 表XI在A800上使用LightLLM的Llama2-7B的时间线。 图10在不同GPU平台上使用相同推理框架的延迟性能比较。CDF代表累积分布函数。表XII使用朴素和重计算方法的MLP中第一个GEMM的性能比较。数据来自320次测量的平均值。 图11随着矩阵大小的变化GEMM的性能。 表XIII使用朴素和重计算方法的前向和反向阶段的GEMM内核的时间分解。 VII. 微基准测试 为了更深入地理解实验结果我们进行了涵盖计算和通信的微基准分析。 A. GEMM分析 在第IV-B节中我们观察到包含GEMM操作的模块的时间消耗相对较高。我们分别使用朴素方法和重计算来计算前向和反向阶段的GEMM操作的时间分解。表XIII显示GEMM内核在前向和反向阶段都占用了超过60%的时间。因此GEMM的性能对LLM的性能至关重要。为了更好地理解GEMM的性能我们在MLP中执行了第一个GEMM表XIII。选择这个GEMM操作的原因是MLP是最耗时的模块它包含3个大小相似的GEMM。导致朴素方法的峰值低于重计算的主要原因是矩阵大小太小无法充分利用硬件。使用重计算将大小增加32倍后峰值仍然低于理想值的90%。我们在我们的实验平台A800上测试了不同的矩阵大小结果显示在图11中。在这个GEMM操作中批量大小影响M。由于我们在相同的K和N下逐渐增加M所以有两种选择M的情况。对于N4096 K4096N11008 K4096由Llama2-7B模型确定的形状和N16384 K16384M从4096逐渐增加到16384步长为512这确保了大小是TensorCore计算规模的整数倍。通过比较这三条曲线我们可以看到盲目增加批量大小并不总是能提高峰值性能。当批量大小足够大时我们可以通过增加K和N进一步提高GEMM峰值。对于未对齐的N11008 K4096情况我们的M从409613开始魔数13是一个奇数选择它不会显著影响M的大小并以512的步长增加到1638413。我们通过这个案例分析了M作为TencoreCore计算规模的整数倍和非整数倍的性能差异。结果清楚地显示当M是TensorCore计算规模的整数倍时峰值高于非整数倍。B. 内存复制 卸载和上传是由内存复制内核实现的。表XIV提供了在A800上每次迭代中内存复制的绝对时间成本和百分比的总结。如表XIV所示ZeRO-3比ZeRO-2产生更大的上传和卸载时间。然而在这种情况下内存复制的影响相对较小。图12描绘了上传操作表示为H到D和卸载操作表示为D到H内核的性能。在这个图中上传和卸载操作的吞吐量和延迟都是相似的。对于较小的数据大小启动时间往往占主导地位而对于较大的数据大小带宽变得更为重要。表XIV我们使用DeepSpeed框架设置(bf16)和批量大小为32。在A800中每次迭代的绝对时间和内存复制的百分比。在这种设置下内存复制的影响相对较小。 图12在A800上不同数据大小的卸载和上传比较的延迟和吞吐性能。 图13在RTX3090上使用和不使用NVLink的AllGather的延迟和吞吐量数据大小不同。 图14在RTX3090上使用和不使用NVLink的ReduceScatter的延迟和吞吐量数据大小不同。C. 集体通信 我们首先强调NVLink提供的高通信速度。当进行具有不同数据规模的AllGather时我们观察到带有NVLink的RTX3090优于没有NVLink的对应设备如图13所示。 不同的训练范式涉及到不同的集体通信操作。对于数据并行范式我们在反向阶段使用AllReduce来同步权重如表XV所示。 当进行具有不同数据大小的ReduceScatter时我们观察到带有NVLink的RTX3090优于没有NVLink的对应设备如图14所示。表XVAllReduce百分比。 图15在A800上随着数据大小的变化AllGather、ReduceScatter和Reduce的吞吐量。 表XVI我们使用DeepSpeed框架设置(bf16)和批量大小为32。在A800中每次迭代的绝对时间和通信内核的百分比。C. 集体通信 ZeRO-2在反向阶段需要Reduce集体通信原语。图15b显示了reduce内核的性能。与内存复制类似Reduce内核的小数据大小导致启动时间占主导地位而大数据大小部分的性能取决于带宽。ZeRO-3在反向阶段使用ReduceScatter代替Reduce集体通信原语。图15a显示了ReduceScatter内核的性能。ZeRO-2和ZeRO-3都使用AllGather来更新参数。图15a还显示了AllGather内核的性能。 表XVI总结了在A800中每次迭代的内存复制的绝对时间和百分比。如表XVI所示我们可以看到ZeRO-3的通信时间比ZeRO-2多而且在预训练小模型时通信时间更为重要。 VIII. 相关工作 有大量的研究对模型性能进行了基准测试包括泛化能力和在下游任务中的准确性。然而只有少数研究关注硬件和软件效率的评估和时间分析甚至更少的研究关注训练、微调和服务LLMs。Xu等人提供了一项调查比较了在模型微调和推理中特别有用的模型压缩技术。Cao等人也对诸如ELECTRAPrompt Tuning等算法方面的高效LLMs进行了概述。Liang等人提出了HELM一种全面的性能评估用于比较模型泛化能力和时间效率。然而他们的时间效率结果主要关注在给定软件的特定硬件平台上的推理。MLCommons4是另一个用于比较深度学习也包括LLMs训练和推理的时间性能的前沿基准不受硬件平台的限制。在LLM时代之前一些基准被提出来比较不同模型包括CNNs、LSTMs和/或Transformers的软件和硬件性能。 据我们所知我们提供了第一项在各种硬件平台上分析LLMs管道中所有三个关键阶段预训练、微调和服务的运行时性能的研究。IX. 结论 在这项工作中我们在三个8-GPU硬件平台Nvidia A800-80GRTX4090和RTX3090上对预训练、微调和服务LLMs的运行时性能进行了基准测试。基于基准测试结果我们分析了对总体时间贡献最大的关键模块和操作符。实验结果和分析为最终用户选择硬件、软件和优化技术配置进行预训练、微调和服务LLMs提供了更多的信息。此外对性能的深入理解提供了进一步的优化机会以提高系统性能。
http://www.hkea.cn/news/14511888/

相关文章:

  • 成都网站托管网站建设 管理
  • 阿里巴巴国际站外贸流程阿狸网站建设
  • 网站建设技术入股协议云浮网站网站建设
  • 关注网站怎么做湛江模板建站平台
  • 推广网站设计推广方案网易企业邮箱属于什么类型
  • 百度权重排名高的网站销售型网站营销目标
  • it公司怎么在国外网站做宣传宝安网站改版
  • 公司以优化为理由裁员合法吗yoast wordpress seo
  • 装修网站cms微信客户端官网
  • 可以免费注册的网站一个设计网站多少钱
  • 用html网站登录界面怎么做wordpress 仿煎蛋妹子图
  • 设计师交流网站中山做网站多少钱
  • 怎么优化自己网站篮网目前排名
  • 免费3d模型素材网站专门做图片剪影的网站
  • 有域名了建立免费网站多商户商城系统源码
  • 建设网站宝安区内衣网站建设详细方案
  • 温州微网站公司求助用cms做网站设计_以我的家乡家乡为主题
  • 做ps兼职的网站建设部网站投诉核查企业名单
  • 美食网站建设服务策划书为何用wdcp建立网站连不上ftp
  • 网站建设和优化的步骤中国建设协会官网
  • 国外英语写作网站局域网里做网站
  • 建设部一建查询网站wordpress调用分类栏目
  • 剑灵网站模板网站栏目设计优化方案
  • 网站建设域名有哪些类型服装设计效果图
  • 龙岗网站制作市场没有网站如何做营销
  • 网站建设岗位主要做什么营销方式方案案例
  • 公司注册资金认缴和实缴的区别英文seo公司
  • 做服装设计有什么网站可以参考做网站都有跳转链接
  • 装潢公司网站建设营销的目的有哪些
  • 郑州网站建设创业网络架构图怎么画