本期问题聚焦于大模型的推理优化技术
本期问题快览
有哪些常见的大模型推理优化技术 介绍下通过流水线处理技术来加速大模型推理方案 介绍下并行计算技术来加速大模型推理的方案 有哪些通过硬件来加速大模型推理的方式? 模型量化是如何加速大模型推理的? 有哪些通过缓存来加速大模型推理的方式? vLLM 如何优化大模型并行推理加速 什么是 PagedAttention? PagedAttention 技术细节 什么是Flash Attention? Flash Attention 技术细节?有哪些常见的大模型推理优化技术
混合精度:通过结合FP16+FP32或BF16+FP32进行训练,可以减少模型在显存中占用的空间,从而加速推理过程。 DeepSpeed分布式:使用ZeRO-1、ZeRO-2、ZeRO-3等技术,可以在多张GPU上分布式存储权重、梯度和优化器状态,降低单个GPU的显存占用。 Torch FSDP + CPU Offloading:通过在推理时将部分数据从GPU转移到CPU,可以有效地管理显存使用。 3D并行:结合数据并行、模型并行和流水线并行,可以在多个维度上优化模型的训练和推理。 INT8模型量化:通过对模型进行量化,使用更低的精度来存储和计算,从而减少模型大小和加速推理。 混合专家训练(Mixed-of Experts,MoE):每次只对部分参数,可以减少训练和推理时的计算量。 Flash Attention:一种优化的注意力机制,可以减少推理时的计算量。References
太通透了!大模型训练和推理优化技术最全汇总! - 知乎 大模型常见推理框架简介:vLLM、Tensorrt-LLM、DeepSpeed、Text Generation Inference | 数据 … 大模型推理加速常用手段 - 百度文库 大语言模型推理加速技术:模型压缩篇 - 知乎 - 知乎专栏 LLM 大模型推理加速:技术解析与实践 - InfoQ 写作社区介绍下通过流水线处理技术来加速大模型推理方案
流水线处理技术通过将模型推理过程分解成多个阶段,并行执行,从而提高整体的处理速度和效率。一些关键点:
分布式并行:大模型推理通常依赖于分布式并行技术,包括数据并行、模型并行、流水线并行和张量并行。这些技术通过在多个计算节点上分配任务来提高计算效率。
流水线并行(Pipeline Parallelism):这种方法将模型纵向拆分,每个GPU只包含模型的一部分层,数据在一个GPU完成运算后,传给下一个GPU继续计算。这样可以在多个GPU上同时进行不同阶段的计算,提高资源利用率。
张量并行(Tensor Parallelism):将模型横向拆分,每一层的计算都需要多个GPU合作完成。这种方式适用于单个GPU无法容纳整个模型的情况。
优化技术:包括层融合(Layer Fusion),减少数据传输并增加数学密度,以及自回归模型的推理优化,例如激活缓存(Activation Caching),以减少重复计算的成本。
推理过程:大模型推理分为prefill和decoding两个阶段。Prefill阶段计算用户输入并生成KV缓存,decoding阶段则基于已知输入序列和上一步预测出来的词计算下一个最可能的词汇的概率分布。
性能评价指标:评价大模型推理性能的指标包括吞吐量(Throughput)、首字延迟(First Token Latency)、延迟(Latency)和每秒请求数(QPS)。
通过这些技术和优化方法,可以显著提升大模型推理的速度和效率。例如,NVIDIA的FasterTransformer就是一个专门为Transformer架构设计的推理加速引擎,它利用了流水线并行和张量并行技术来加速大模型的推理过程。
References
大模型训练与推理优化技术详解 - 百度智能云 AI大模型推理过程和优化技术 - 知乎 - 知乎专栏 大模型推理学习记录 - 51CTO博客 目前业界大模型推理框架很多,各有什么优缺点,应该如何选择? - 知乎 大模型推理速度飙升3.6倍,「美杜莎」论文来了,贾扬清:最优雅加速推理方案之一 - 知乎介绍下并行计算技术来加速大模型推理的方案
一些主要的并行计算策略:
数据并行技术(Data Parallelism):这种技术将每批输入的训练数据在多个工作器(worker)之间平分,不同的样本在不同的GPU设备上完成前向推理和反向传播计算。在传播后,需要通信并规约梯度,以保证在各个工作器上进行相同的更新。
模型/张量并行技术(Model/Tensor Parallelism):在多个工作器之间划分模型的各个层,即不同层分配到不同的GPU设备上分别完成计算。模型并行性的计算和通信方法因模型结构而异,实际实现上有很大工作量,针对不同的大型语言模型(LLM)需要分别适配。
流水并行技术(Pipeline Parallelism):流水线并行通过分阶段运行模型,不同阶段之间可以流水化执行,以提高GPU利用率并减少内存消耗。
混合并行训练:结合以上几种并行技术,可以进一步优化大模型的推理和训练过程。例如,DeepSpeed框架就提供了多种并行策略来加速大模型的推理。
推理自适应并行性(Inference-adapted parallelism):允许用户通过适应多GPU推理的最佳并行策略来有效地服务大型模型,同时考虑推理延迟和成本。
推理优化的CUDA内核(Inference-optimized CUDA kernels):通过深度融合和新颖的内核调度充分利用GPU资源,从而提高每个GPU的效率。
References
DeepSpeed 通过系统优化加速大模型推理 - 知乎 - 知乎专栏 大语言模型推理加速技术:计算加速篇 - 知乎 - 知乎专栏 大模型训练与推理优化技术详解 - 百度智能云 大模型分布式并行技术:从理论到实践-百度开发者中心 大模型推理加速调研(框架、方法) - 知乎 - 知乎专栏有哪些通过硬件来加速大模型推理的方式?
加速大模型推理的硬件方法有多种,以下是一些主要技术及其简介:
vLLM (Virtual Large Language Model)
开发者:Nvidia 核心思想:将模型的一部分保存在内存或硬盘上,只将当前计算所需的部分加载到GPU显存中,打破GPU显存限制。 优势:支持PyTorch和FasterTransformer后端,可无缝适配现有模型。Tensorrt-LLM
开发者:Nvidia 特点:在TensorRT推理引擎基础上,针对Transformer类大模型推理优化。 优势:支持多种优化技术,如kernel融合、矩阵乘优化、量化感知训练等,提升推理性能。DeepSpeed-Inference
开发者:微软 特点:提供推理加速能力,通过内存优化、计算优化、通信优化降低推理延迟和提升吞吐。 优势:支持多GPU横向扩展,单卡可推理数百亿参数模型。Text Generation Inference (TextGen)
开发者:Hugging Face 特点:为自然语言生成模型提供高性能推理。 优势:高度优化的核心代码,支持多GPU多节点扩展。这些技术在降低显存占用、提升计算效率、简化开发流程等方面各有侧重,为大模型推理提供了多样化选择。软硬件协同设计、定制化推理芯片等也是值得关注的发展方向。
References
大模型常见推理框架简介:vLLM、Tensorrt-LLM、DeepSpeed、Text Generation Inference | 数据 … 进我的收藏夹吃灰吧:大模型加速超全指南来了 | 机器之心 迈向100倍加速:全栈Transformer推理优化 - 知乎 - 知乎专栏 在 CPU 上高效执行大语言模型的推理任务[译] | 宝玉的工程技术分享模型量化是如何加速大模型推理的?
模型量化通过将模型的浮点数参数转换为低比特的整数来减少模型的大小和计算需求。这样做可以减少内存占用、降低功耗,并在支持整型计算优化的硬件上提高推理速度。具体来说,模型量化通常涉及以下几个方面:
参数减少:通过使用更少的位来表示每个权重,例如从32位浮点数(float32)转换为8位整数(int8),模型的大小可以显著减小。 计算优化:整数运算通常比浮点运算要快,特别是在专门为低比特运算设计的硬件上。 内存带宽降低:量化模型需要的内存带宽更小,因此数据传输更快,可以提高整体的推理速度。 功耗降低:由于内存访问和计算需求的减少,量化模型在运行时消耗的能量更少。量化可以是对称的,也可以是非对称的,并且可以通过量化感知训练来进一步优化,以最小化量化过程中的精度损失。在某些情况下,量化可能会导致推理速度降低,尤其是当底层硬件没有针对整型计算进行优化时。但通常情况下,量化能够在不牺牲太多精度的情况下提高推理速度。
此外,还有一些其他技术可以与量化结合使用,例如混合精度训练、分布式训练、参数有效性学习等,以进一步提高大模型在有限计算资源下的推理效率。
References
LLM推理加速方案介绍和实验总结 - 知乎 - 知乎专栏 目前针对大模型进行量化的方法有哪些? - 知乎 太通透了!大模型训练和推理优化技术最全汇总! - 知乎 目前业界大模型推理框架很多,各有什么优缺点,应该如何选择? - 知乎 2080 Ti就能跑70B大模型,上交大新框架让LLM推理增速11倍-腾讯云开发者社区-腾讯云有哪些通过缓存来加速大模型推理的方式?
通过缓存来加速大模型推理的方式主要包括以下几种技术:
KV Cache:
KV Cache是一种通过缓存Attention中的Key(K)和Value(V)来实现推理优化的方法。在生成过程中,仅使用输入序列中的最后一个token的注意力表示来预测下一个token,而模型会并行计算所有token的注意力表示,产生大量冗余计算。KV Cache通过缓存历史输入的token的K和V,避免每步生成都重新计算历史token的K和V以及注意力表示,从而提升推理速度。
PagedAttention:
PagedAttention是vLLM推理框架中的核心技术,它通过高效地管理attention中缓存的张量来解决LLM服务中内存的瓶颈问题。传统的注意力算法需要将所有输入Token的注意力键和值张量存储在GPU内存中以生成下一个Token,而PagedAttention通过对KV Cache的有效管理,减少了内存压力并提高了推理性能。
FlashAttention:
FlashAttention是一种用于优化Transformer模型推理的技术,它通过改进attention计算来减少内存占用和提高计算效率。这种方法特别适用于处理大规模的模型和数据集。
MQA 和 GQA:
这些技术也是针对大模型推理优化的方法,但具体细节较少。它们可能涉及到更高效的内存管理和计算优化策略。
这些技术通过不同的方式减少了在推理过程中的冗余计算和内存占用,从而加快了大模型的推理速度。
References
社区供稿 | 图解大模型推理优化之 KV Cache - Hugging Face - OSCHINA - 中文开源技术交流社区 目前业界大模型推理框架很多,各有什么优缺点,应该如何选择? - 知乎 大模型——推理优化——KV Cache-CSDN博客 大模型推理加速调研(框架、方法) - 知乎 - 知乎专栏vLLM 如何优化大模型并行推理加速
在优化大模型并行推理加速方面,vLLM采用了多种策略来提高效率和速度。以下是一些关键的优化方法:
模型压缩:通过模型参数量化,减少内存容量与带宽占用,从而提高推理速度。量化可以在训练过程中(QAT),微调阶段(QAF),或训练后(PTQ)进行。
KV cache量化:在推理时,将中间结果的key和value量化后压缩存储,以增加样本吞吐。
底层优化:包括算子融合以减少kernel调用,以及使用C++实现模型推理来提高运行速度。
分布式并行推理:通过张量并行(TP)、流水线并行(PP)等技术,降低Latency并提高Throughput。
解码方式优化:如Medusa、SpecInfer、Lookahead Decoding等方法,通过并行计算和推理预测来提高解码速度。
CUDA核心优化:vLLM针对CUDA核心进行了优化,确保了速度与效率。
推理内核引擎:vLLM实现了一个推理内核引擎(LLMEngine),在此基础上封装了离线批处理和在线推理服务的调用方法。
References
LLM推理加速方案介绍和实验总结 - 知乎 - 知乎专栏 揭秘大模型推理加速工具:vLLM的实践与应用 图解大模型计算加速系列:vLLM源码解析1,整体架构 - 知乎 LLM大模型推理加速实战:vllm、fastllm与llama.cpp使用指南 LLM大模型推理加速实践:vLLM与Docker的完美结合什么是 PagedAttention?
PagedAttention是一种创新技术,旨在显著减少大型语言模型(LLM)键值(KV)缓存的内存占用,从而使LLM更加内存高效和易于访问。这项技术由Kwon等人在他们的论文《Efficient Memory Management for Large Language Model Serving with PagedAttention》中提出。它通过将每个序列的KV缓存分割成更小、更易管理的“页面”或块来实现,每个块包含固定数量的令牌的键值向量。这样,KV缓存可以在注意力计算期间更有效地加载和访问。
简而言之,PagedAttention通过分区KV缓存到更小的块,并利用查找表进行高效访问,解决了在服务LLM时面临的显著内存挑战。这种方法不仅提高了内存效率,还增加了GPU在内存受限工作负载上的利用率,从而支持更多的推理批次。
References
What is PagedAttention? - Hopsworks PagedAttention - Hugging FacePagedAttention 技术细节
PagedAttention 是一种用于大型语言模型服务的高效内存管理技术。它的设计灵感来自操作系统中的虚拟内存分页管理技术,允许在非连续空间存储连续的KV张量。这项技术通过将自注意力机制的计算过程分解为多个较小的计算任务,实现了计算资源的有效利用。同时,采用分页技术避免了在计算过程中产生过多的中间结果,从而降低了内存消耗。
PagedAttention 技术的核心是将KV序列切分成多个固定长度的block,并在内存空间中分开保存。在计算Attention时,PagedAttention Kernel能够高效地定位并获取这些block。这种方法不仅提高了服务吞吐率,而且在模型用同一个prompt生成多个输出时,能够共用一个缓存。不同sequence能够共享同一个block,PagedAttention会通过Copy-and-write机制来确保安全的共享。
具体到CUDA实现,PagedAttention在vLLM推理框架中使用了特定的CUDA代码来优化attention计算。这包括使用页式管理KVCache以增加服务吞吐率,并利用页式内存管理同时尽量降低其对延迟的负面影响。
References
vLLM皇冠上的明珠:深入浅出理解PagedAttention CUDA实现 - 知乎 图解大模型计算加速系列之:vLLM核心技术PagedAttention原理 - 知乎 PagedAttention - 知乎 - 知乎专栏 vLLM框架原理——PagedAttention - 知乎 vLLM:利用PagedAttention实现高效、快速且经济的LLM服务什么是Flash Attention?
Flash Attention是一种用于加速注意力计算和减少内存占用的方法。它主要应用于大型语言模型(LLM),如GPT-3、GPT-4等。Flash Attention通过利用底层硬件的内存层次结构,例如GPU的内存层次,来提高计算速度和减少内存访问开销。
其核心原理是将输入数据分块,并在每个块上执行注意力操作,从而减少对高带宽内存(HBM)的读写操作。具体来说,Flash Attention使用平铺(tiling)和重计算(recomputation)等技术,将输入块从HBM加载到SRAM(快速缓存)中,在SRAM上执行注意力操作后,再将结果更新回HBM。这样做可以减少内存读写量,实现2-4倍的时钟时间加速。
Flash Attention的另一个优点是在计算softmax函数时,不需要全量输入数据,可以分段计算。在反向传播时,不存储attention matrix(N^2的矩阵),而是只存储softmax归一化的系数,从而进一步节省内存。这使得Flash Attention在处理大规模数据和自然语言处理任务中具有很大的潜力。
References
Flash Attention原理详解(含代码讲解) - 知乎 - 知乎专栏 机器学习新模型:FlashAttention简介 | 数据学习者官方网站(Datalearner) Flash Attention:高效注意力机制的突破与应用-阿里云开发者社区 论文分享:新型注意力算法FlashAttention - 知乎 - 知乎专栏Flash Attention 技术细节?
Flash Attention 是一种用于加速注意力计算并减少内存占用的技术。它已经被应用在多个大型语言模型上,如 GPT-3、GPT-4 等。这项技术的核心是利用底层硬件的内存层次结构,通过将输入数据分块并在每个块上执行注意力操作,从而减少对高带宽内存(HBM)的读写操作。具体来说,Flash Attention 使用平铺(tiling)和重计算(recomputation)等技术,将输入块从 HBM 加载到 SRAM(快速缓存)中,在 SRAM 上执行注意力操作后,再将结果更新回 HBM。这样做可以显著减少内存读写量,实现 2-4 倍的时钟时间加速。
Flash Attention 的计算过程可以用以下数学公式表示:
S = Q K ⊤ ∈ R N × N , P = s o f t m a x ( S ) ∈ R N × N , O = P V ∈ R N × d \mathbf{S} = \mathbf{Q}\mathbf{K}^\top \in \mathbb{R}^{N \times N}, \quad \mathbf{P} = \mathrm{softmax}(\mathbf{S}) \in \mathbb{R}^{N \times N}, \quad \mathbf{O} = \mathbf{P}\mathbf{V} \in \mathbb{R}^{N \times d} S=QK⊤∈RN×N,P=softmax(S)∈RN×N,O=PV∈RN×d
其中, Q , K , V \mathbf{Q}, \mathbf{K}, \mathbf{V} Q,K,V 是输入序列, N N N 是序列长度, d d d 是 token 尺寸。Flash Attention 通过优化这些计算步骤,提高了处理长序列时的效率和速度。
References
Flash Attention原理详解(含代码讲解) - 知乎 - 知乎专栏 GitHub - Dao-AILab/flash-attention: Fast and memory-efficient exact … 机器学习新模型:FlashAttention简介 | 数据学习者官方网站(Datalearner) 人工智能 - FlashAttention算法详解 - deephub - SegmentFault 思否