值得收藏!一文读懂大模型推理:核心原理与优化技术全面解析

本文全面解析了大语言模型(LLM)推理的挑战与优化方法。首先将推理拆解为预填充和解码两个阶段,分析了影响推理性能的关键指标和根本原因。随后从数据级别、模型级别和系统级别三个维度详细介绍了优化技术,包括输入压缩、模型结构优化、量化、稀疏化、推理引擎优化、批处理策略等。最后探讨了服务系统优化方法,为提升大模型推理效率提供了全方位的技术指导。

一、前期知识

在了解推理之前,可能我们需要了解一些潜在知识,如Transformer,注意力机制等。

二、推理拆解

目前最流行的大语言模型,即解码器的大语言模型(Decode Model),采用自回归方法来生成输出句子。 具体来说,自回归方法逐个生成 token。 在每个生成步骤中,大语言模型将输入 token 和先前生成的token的整个 token 序列作为输入,并生成下一个 token。但随着序列长度的增加,生成过程的时间成本急剧增长,行业为了解决这一挑战,已经引入了一种关键技术,即键值 (KV) 缓存,以加快生成过程。 KV 缓存技术顾名思义,涉及存储和重用多头自注意力 (MHSA) 块内的先前键 (K) 和值 (V) 对。该技术因其对生成延迟的实质性优化而被广泛采纳于大语言模型的推理引擎和系统中。正是基于KV Cache缓存管理和使用这个方法,所以大模型推理被划分为预填充(Prefill)和解码阶段(decode)

如上图所示,(a) 为预填充阶段;(b)为解码阶段。预填充阶段: 大语言模型计算并存储初始输入 token 的 KV 缓存,并生成第一个输出 token。解码阶段:LLM 使用 KV 缓存逐个生成输出 token,然后使用新生成的 token 的键 (K) 和值 (V) 对来更新 KV 缓存。

推理分析与关键指标

研究表明:影响大模型推理延迟方面的主要指标是计算成本、内存访问成本和内存使用量,而影响这三个指标低下的三个根本原因是:模型大小、注意力机制、解码机制。如下图所示,为一次生成过程中内存随时间变化(延迟)的示意图,表明Model Size、KV Cache Sizey对模型生成token的时延影响比较大(Peak Memory = Model Size + KV Cache)。

这里我们也提一下模型推理的关键指标:

  1. 吞吐量(Throughput): 吞吐量衡量系统单位时间内处理的请求数量,通常以每秒生成的Token数表示。提高吞吐量的方法包括增加批处理大小(batch size)和优化硬件资源,但需要权衡用户的响应时延。

  2. 时延(Latency) 时延是指从用户发出请求到接收到完整响应的时间。对于流畅的用户体验,时延应尽可能低,通常建议每个Token的生成时间不超过50毫秒。

  3. 首Token时间(TTFT) TTFT是指从用户提交请求到生成第一个Token的时间。TTFT越短,用户的等待体验越好。优化TTFT可以通过减少预填充阶段的计算时间或提高硬件性能来实现。

  4. 每个输出Token的时间(TPOT) TPOT衡量生成每个Token所需的时间,通常与用户的阅读速度相关。理想情况下,TPOT应与用户的阅读速度匹配,以提供流畅的交互体验。

  5. 每秒请求数(RPS) RPS反映系统处理并发请求的能力,尤其在高负载场景下尤为重要。通过分布式部署和异步处理,可以有效提高RPS。

  6. 词元间时延(ITL) ITL是指连续生成两个Token之间的平均时间。优化ITL有助于提升生成速度,尤其在长文本生成任务中。

为什么模型大小、注意力机制、解码机制这三个因素对模型推理影响大呢?现在我们一一来分析。

模型大小:主流 LLM 通常包含数十亿甚至万亿个参数。如,LLaMA-70B 模型包含 700 亿个参数,而 GPT-3 模型最多可扩展到 1750 亿个参数。 这种相当大的模型从参数量不断增加,明显逐渐增加了 LLM 推理过程中的计算成本、内存访问成本和内存使用量。

注意力操作:在预填充阶段,自注意力操作在输入长度上表现出二次计算复杂度。 因此,随着输入长度的增加,注意力操作的计算成本、内存访问成本和内存使用量迅速增加。

解码机制:自回归解码方法逐个生成 Token。如下图所示, 在每个解码步骤中,所有模型权重都从片外 HBM 加载到 GPU 芯片(SRAM),导致内存访问成本很高。 此外,KV 缓存的大小随着输入长度的增长而增加,可能导致内存碎片化和不规则的内存访问模式。

三、推理优化关键

既然已经知道了模型大小、注意力机制、解码机制,这三个会影响大模型推理,那目标其实有了,就从这三个方面来进行推理优化。研究发现可以通过这三个点来优化:数据级别优化、模型级别优化和系统级别优化。

数据级别优化:指通过优化输入提示(即输入压缩)或更好地组织输出内容(即输出组织)来提高效率。 这种优化通常不改变原始模型,因此无需昂贵的模型训练成本。

模型结构优化: 指在推理过程中设计高效的模型结构(即高效结构设计)或压缩预训练模型(即模型压缩)以提高其效率。1)通常需要昂贵的预训练或少量微调成本来保留或恢复模型能力; 2)通常会在模型性能上有所损失。

系统级别优化:指优化推理引擎或服务系统。1)不涉及昂贵的模型训练; 2)通常在模型性能上没有损失。

四、推理之输入数据优化

在数据层面可分为两类,即输入压缩和输出组织。而输出组织技术通过组织输出内容结构来实现批处理(并行)推理,从而提高硬件利用率并降低生成延迟。

输入压缩

输入压缩:是直接缩短模型输入以降低推理成本(包括prompt)。这一块分为:提示修剪、prompt summary、soft prompt-based compression、检索增强生成。

提示剪修: 是根据预定义的或可学习的重要性指示符,在线地从每个输入提示中移除不重要的 token、句子或文档。

Prompt Summary : 是在保留相似语义信息的同时,将原始Prompt压缩成一个更短的摘要。如:首先将文本分解成句子,再按主题对句子进行分组,然后对每个组内的句子进行摘要。

Soft Prompt-based Compression: 设计一个比原始Prompt短得多的Soft Prompt,作为LLM的输入。 Soft Prompt被定义为一系列可学习的连续Token。 一些技术采用了对固定前缀Prompt(例如,系统Prompt、任务特定Prompt)的离线压缩。

检索增强生成: 旨在通过整合外部知识源来提高 LLM 回答的质量(例如通过RAG从大量数据中检索到相关内容并整理好,再给到大模型推理)。

输出组织

输出组织:是指在通过组织输出内容的结构来(部分)并行化生成。这里有一个例子:假设用户问:中国菜有哪些典型种类? 模型:第一阶段输出一个大致的内容列表,面条、火锅、米饭;模型:然后再根据面条、火锅、米饭进行扩展。

这种方法在行业叫做SOT(Skeleton of Thought) ,意思是先生成知识框架,然后再在框架里面细化内容。

五、推理之模型结构优化

大语言模型(LLM)的高效推理的模型级优化主要集中在优化模型结构或数据表示。模型结构优化包括直接设计高效的模型结构、修改原始模型以及调整推理时的架构,这种方式一般都伴随着模型的全量训练。模型结构设计对于基于 Transformer 的大语言模型(LLM)的关键组件,包括前馈网络(FFN)和注意力操作,在推理过程中存在效率挑战。a) FNN占基于 Transformer 的大语言模型(LLM)参数的很大一部分,导致显著的内存访问成本和内存使用量,尤其是在解码阶段。 例如,FFN 模块在 LLaMA-7B 模型中占参数的 63.01%,在 LLaMA-70B 模型中占 71.69%; b) 注意力运算对输入长度具有二次复杂度,导致计算成本和内存使用量巨大,尤其是在处理更长的输入上下文时。

既然模型结构优化主要问题点是 FNN和注意力,那么我们就可以针对这两个点来进行优化。总的来说,模型结构优化方式有:高效 FFN 设计、高效注意力设计以及 Transformer 替代方案;

高效FFN设计

基于FNN优化,许多研究集中于将专家混合MoE技术整合到大语言模型(LLM)中,以提高其性能,同时保持计算成本。 MoE 的核心思想是动态地为不同的输入 token 分配不同的计算预算。在基于MoE的Transformer 中,多个并行的前馈网络(FFN)与一个可训练的路由模块一起使用。 在推理过程中,模型会根据路由模块的控制,为每个 token 选择性地激活特定的专家。从MoE结构设计来说,主要是从下面三个点优化:

1、主要侧重于优化MoE获取专家权重的过程或使这些专家更轻量级以提高效率;

2、侧重于改进 MoE 模型中路由模块(或策略)的设计。

3、改进moe模型训练方法。

高效注意力设计

注意力操作是 Transformer 架构中的关键组成部分。 然而其相对于输入长度的二次复杂度会导致显著的计算成本、内存访问成本和内存使用量,尤其是在处理长上下文时。 为了解决这个问题,研究人员正在探索更有效的方法来近似原始注意力操作的功能。 这些研究大致可以分为两个主要分支:多查询注意力 (multi-query attention) 和低复杂度注意力 (low-complexity attention)。

1、多查询注意力 (multi-query attention):通过在不同注意力头之间共享键 (K) 和值 (V) 缓存来优化注意力操作。这里有很多方法,如MHA、MQA、GQA等都是通过在注意力结构设计实现高效推理。

2、低复杂度注意力:旨在设计新的机制,以降低每个注意力头的计算复杂度。

a) 基于核的注意力:通过一个注意力核来近似非线性的softmax函数。

b)低秩注意力技术:在执行注意力计算之前,对 K 和 V 矩阵的 Token 维度(即 n)进行压缩,使其变为一个更小的固定长度(即k),注意 k << n 。

Transformer替代方案

除了将高效技术应用于attention操作外,最近的研究还创新性地设计了高效且有效的序列建模架构,比较典型的代表就是空间状态模型(SSM)和RNN结合Transformer(RWKV)。

a)状态空间模型 (SSM) 在某些自然语言处理 (NLP) 和计算机视觉 (CV)任务中展现了具有竞争力的建模能力。 与基于注意(attention-based)的 Transformer 相比,SSM 在计算和内存复杂度上相对于输入序列长度呈线性关系,这提高了其处理长上下文序列的效率。

b)RWKV有效的将TNN的推理和Transformer的并行训练结合起来,达到高效训练和推理的框架。

模型压缩

在数据表示优化方面,通常采用模型压缩技术,这种方式则伴随着模型的微调。模型压缩包含一系列旨在通过修改数据表示(例如量化)或改变其架构(例如稀疏化、结构优化和动态推理)来提高预训练模型的推理效率的技术。数据优化方式有:模型数据量化、模型权重数据稀疏化、模型数据结构优化、模型动态推理。

模型数据量化

量化是一种广泛采用的技术,它通过将模型的权重和激活从高位宽表示转换为低位宽表示来降低 LLM 的计算和内存成本。 具体来说,许多方法涉及将 FP16 张量量化为低比特整数张量,这可以表示为

其中X(FP16) 表示 16 位浮点(FP16)值,X(INT) 表示低精度整数值,N 表示比特数,而 S 和 Z 表示缩放因子和零点。

通俗的讲,量化就是改变数据类型并归一到某个数值范围内。量化工作流程分为:训练后量化 (PTQ) 和量化感知训练 (QAT)。

训练后量化 (PTQ):涉及量化预训练模型,而无需进行可能成本高昂的重新训练。 尽管 PTQ 方法对于较小的模型已经得到了充分的研究,但将现有的量化技术直接应用于大语言模型存在挑战。 这主要是因为大语言模型的权重和激活通常比小型模型表现出更多的离群值和更宽的分布范围,这使得它们的量化更具挑战性。 总而言之,大语言模型由于其庞大的规模和复杂的特性,需要专门的方法来有效地处理量化过程。大语言模型中存在的离群值和更宽的分布范围,要求开发定制的量化技术,这些技术可以在不损害模型性能或效率的情况下,考虑到这些独特的特征。比较有代表性的方法就是Llama.cpp的量化,将sensetensors模型量化为gguf格式。

量化感知训练 (QAT): 在模型训练过程中融入了量化的影响。 通过集成复制量化效应的层,这种方法有助于权重适应由量化引起的误差,从而提高任务性能。 然而,训练 LLM 通常需要大量训练数据和可观的计算资源,这给 QAT 的实施带来了潜在的瓶颈。 因此,当前的研究工作集中于减少训练数据需求或缓解与QAT实现相关的计算负担的策略。比较有代表性的方法就是应用高效微调方法的QLora。

之前我们就提到过,LLM的推理过程涉及两个阶段:预填充阶段和解码阶段。

在预填充阶段,LLM 通常处理长 Token 序列,主要运算是通用矩阵乘法 (GEMM)。 预填充阶段的延迟主要受高精度 CUDA 核心执行的计算的限制。 为了应对这一挑战,现有方法将权重和激活量化,以利用低精度张量核心加速计算。因此,权重激活量化为:在每个GEMM操作之前在线执行激活量化,允许使用低精度Tensor Core(例如INT8)进行计算,如上图(b)所示。

在解码阶段,LLM 在每个生成步骤仅处理一个标记,使用通用矩阵向量乘法 (GEMV) 作为核心运算。 解码阶段的延迟主要受大型权重张量加载的影响。 为了解决这一挑战,现有方法专注于仅量化权重以加速内存访问。而权重量化为: 首先对权重进行离线量化,然后将低精度权重反量化为FP16格式进行计算,如上图(a)所示。

模型权重数据稀疏化

稀疏化是一种压缩技术,它增加了数据结构(如模型参数或激活)中零值元素的比例。 这种方法旨在通过在计算过程中有效忽略零元素来降低计算复杂性和内存使用量。 在大语言模型(LLMs)的背景下,稀疏化通常应用于权重参数和注意力激活。 它导致了权重剪枝策略和稀疏注意力机制的发展。

权重剪枝:权重剪枝系统地从模型中移除不太重要的权重和结构,旨在在预填充阶段和解码阶段降低计算和内存成本,而不会显著损害性能。这种稀疏化方法分为两种主要类型:非结构化剪枝和结构化剪枝。

非结构化剪枝:以精细粒度剪枝单个权重值。 与结构化剪枝相比,它通常能在对模型预测影响最小的情况下实现更高的稀疏度。 然而,通过非结构化剪枝实现的稀疏模式缺乏高级规律性,导致内存访问和计算模式不规则。 这种不规则性会严重阻碍硬件加速的潜力,因为现代计算架构针对密集、规则的数据模式进行了优化。 因此,尽管实现了更高的稀疏度,非结构化剪枝在硬件效率和计算加速方面的实际优势可能有限。

这类工作的共同重点是剪枝标准,包括权重重要性和剪枝比例。 考虑到大语言模型巨大的参数量,提高剪枝效率也至关重要。 一种剪枝标准是最小化模型的重构损失,另一种流行的剪枝标准是基于权重的。

结构化剪枝:以更粗粒度操作,剪枝模型中更大的结构单元,例如整个通道或层,与非结构化剪枝相比。 由于这些方法与这些系统为处理而优化的密集、规则数据模式一致,因此它们直接促进了在传统硬件平台上进行推理加速。 然而,结构化剪枝的粗粒度通常会导致对模型性能产生更明显的影响。 这类工作的剪枝标准强制执行了结构化剪枝模式,一般需要使用Lora方式来恢复其原来的性能。

上图为不同稀疏注意力掩码的示例。 (a) 具有局部、全局和随机注意力模式的静态掩码。 (b) 具有不同扩张率的扩张注意力模式的静态掩码。 © 动态 Token 剪枝。 (d) 动态注意力剪枝。

稀疏注意力: Transformer 模型的多头自注意力 (MHSA) 组件中的稀疏注意力技术通过策略性地省略某些注意力计算来提高注意力操作的计算效率,尤其是在预填充阶段。 这些机制根据其对特定输入数据的依赖程度分为静态和动态类别。

静态稀疏注意力: 独立于特定输入移除激活值。 这些方法预先确定稀疏注意力掩码,并在推理过程中将其强制应用于注意力矩阵。 先前的研究结合了不同的稀疏模式,以保留每个注意力矩阵中最核心的元素。 如上图 (a) 所示,最常见的稀疏注意力模式是局部注意力和全局注意力模式。 局部注意力模式通过围绕每个 token 的固定大小的窗口注意力来捕获每个 token 的局部上下文。 全局注意力模式通过计算和关注序列中的所有 token 来捕获特定 token 与所有其他 token 的相关性。 需要注意的是,利用全局模式可以消除为未使用的 token 存储键值(KV)对的需求,从而在解码阶段降低内存访问成本和内存使用量。滑动窗口模式:它类似于扩张卷积神经网络(CNNs),并使滑动窗口“扩张”以增加感受野,如上图(b)所示。

动态token剪枝: 根据不同的输入自适应地消除激活值,采用对神经元激活值的实时监控来绕过对影响微不足道的神经元的计算,从而实现剪枝。 大多数动态稀疏注意力方法都采用动态 token-pruning 方法,如上图©所示。

动态注意力剪枝: 如图 (d) 所示,这些方法不是移除某些 tokens 的所有注意力值,而是根据输入注意力动态选择性地移除部分注意力。 该领域的一个重要方法是将输入 tokens 动态分割成组,称为 buckets,并策略性地省略属于不同 buckets 的 tokens 的注意力计算。 这些方法的挑战和重点在于如何将相关的 tokens 聚类在一起,从而仅在它们之间进行注意力计算以提高效率。

模型结构优化

结构优化的目标是通过改进模型架构或结构,以期增强模型效率和性能之间的平衡。 在这个研究领域,有两种突出的技术:神经架构搜索 (NAS) 和低秩分解 (LRF)。

神经架构搜索: 神经架构搜索 (NAS) [228] 旨在自动搜索能够实现效率和性能之间最佳平衡的最优神经架构

**低秩分解:**低秩分解(LRF),或称低秩近似,旨在通过以下方式用两个低秩矩阵 Bm×r 和 Cr×n 来近似一个矩阵 Am×n:

知识蒸馏

知识蒸馏 (KD) 是一种成熟的模型压缩技术,其中将知识从大型模型(称为教师模型)转移到小型模型(称为学生模型)。 在大语言模型(LLM)的背景下,KD 涉及使用原始 LLM 作为教师模型来蒸馏更小的 LM。 大量研究集中于将 LLM 的各种能力有效地转移到小型模型中。 在此领域,方法可分为两大类:白盒KD和黑盒KD。

白盒KD: 是指利用教师模型结构和参数进行知识蒸馏的方法。 这种方法使得KD能够有效地利用教师模型的中间特征和输出logits,以提升学生模型的性能。

黑盒知识蒸馏(Black-box KD): 是指在教师模型的结构和参数不可用的情况下进行的知识蒸馏方法。 通常,黑盒知识蒸馏仅使用教师模型获得的最终结果来蒸馏学生模型。 在大语言模型(LLM)领域,黑盒知识蒸馏主要指导学生模型学习大语言模型的泛化能力和涌现能力,包括上下文学习(In-Context Learning, ICL)能力、思维链(Chain-of-Thought, CoT)推理能力 和指令遵循(Instruction Following, IF)能力。

动态推理

动态推理涉及在推理过程中根据输入数据自适应地选择模型子结构。 本节重点介绍早期退出技术,这些技术使大语言模型能够根据特定的样本或 token 在不同的模型层中停止推理。 值得注意的是,虽然 MoE 技术在推理过程中也会调整模型结构,但它们通常需要昂贵的预训练成本。 相比之下,早期退出技术只需要训练一个小型模块来决定何时结束推理。 退出技术研究分为两种主要类型:样本级早期退出和 token 级早期退出。

样本级早期退出技术: 侧重于确定语言模型(LLMs)对单个输入样本的最佳大小和结构。 一种常见的方法是在每个层之后为大语言模型添加额外的模块,利用这些模块来决定何时在特定层终止推理。

Token 级别退出: 在 LLM 推理的解码阶段,其中 Token 是按顺序生成的,Token 级提前退出技术旨在为每个输出 Token 优化 LLM 的大小和结构。

六、系统级优化

LLM 推理的系统级优化主要涉及增强模型的正向传播。 考虑到 LLM 的计算图,存在多个算子,其中注意力算子和线性算子占据了大部分运行时间。

推理引擎

推理引擎的优化致力于加速模型的正向传播过程。 LLM 推理中的主要算子和计算图都经过了高度优化。 此外,提出了投机解码技术以在不降低性能的情况下加速推理速度,并引入了卸载技术以减轻内存压力。

图和算子优化:研究者使用 HuggingFace实现,为我们剖析了不同模型和上下文长度下的推理运行时结果。 如上图中的分析结果表明,注意力算子和线性算子共同主导了运行时间,它们的总持续时间通常超过推理持续时间的 75%。 因此,算子层的大部分优化工作都致力于提高这两个算子的性能。 此外,还有多个算子占据一小部分运行时,这会分割算子执行时间线并增加 CPU 端内核启动的成本。 为了解决这个问题,在计算图层面,当前优化的推理引擎实现了高度融合的算子。

**注意力算子优化:标准的注意力计算(例如,使用 Pytorch)涉及查询矩阵(**Q)与键矩阵(K)的乘法,这会导致与输入序列长度相关的二次方时间和空间复杂度。 上图所示,注意力算子的时间比例随着上下文长度的增长而增加。 这意味着对内存大小和计算能力有很高的要求,尤其是在处理长序列时。 为了解决标准注意力计算在 GPU 上的计算和内存开销,定制的注意力算子至关重要。 FlashAttention 将整个注意力操作融合成一个单一的、内存高效的算子,以减轻内存访问的开销。 输入矩阵(Q、K、V)和注意力矩阵被分块化到多个块中,从而消除了完整数据加载的需要。

线性算子优化: 线性算子在大语言模型推理中起着关键作用,在特征投影和前馈神经网络(FFNs)中进行运算。 在传统的神经网络中,线性算子可以抽象为通用矩阵矩阵乘法(GEMM)运算。 然而,在大语言模型的解码过程中,由于维度显著降低,其应用与传统的 GEMM 工作负载有所不同。 传统的 GEMM 的底层实现已经高度优化,主流大语言模型框架(例如 DeepSpeed、vLLM、OpenPPL等)主要调用 cuBLAS提供的 GEMM API 来处理线性算子。 在没有针对低维度 GEMM 进行显式定制化实现的情况下,解码过程中的线性算子效率低下。TensorRT-LLM的最新版本中观察到了解决该问题的一个显著趋势。 它引入了专用的通用矩阵向量乘法(GEMV)实现,有望提高解码步骤的效率。

图级别优化: 由于其减少运行时的能力,内核融合作为一种流行的图级别优化而脱颖而出。 应用内核融合有三个主要优点:(1) 减少内存访问。 融合内核本身消除了中间结果的内存访问,从而缓解了算子的内存瓶颈。 (2) 减轻内核启动开销。 对于一些轻量级算子(例如,残差加法),核启动时间占了大部分延迟,而核融合减少了单独的核启动次数。 (3)增强并行性。 对于那些没有数据依赖的算子,当逐个核执行无法填满硬件容量时,通过融合并行化核是有益的

投机解码

投机解码是一种创新的自回归 LLM 解码技术,旨在提高解码效率而不损害输出的保真度。 该方法的核心思想是使用一个较小的模型(称为草稿模型)来高效地预测多个后续 token,然后使用目标 LLM 并行地验证这些预测。 这种方法旨在使 LLM 能够在通常需要进行单次推理的时间内生成多个 token。投机解码方法包括两个步骤:

a) Draft 构建:它使用Draft模型以并行或自回归的方式生成多个后续 token,即草稿 token。

b) Draft 验证:它使用目标模型在一次 LLM 推理步骤中计算所有草稿 token 的条件概率,然后顺序确定每个草稿 token 的接受情况。 接受率,表示每次推理步骤中接受的平均草稿 token 数量,是评估推测解码算法性能的关键指标。

GPU卸载

卸载的本质是在 GPU 空闲时将其部分存储卸载到 CPU。 直观地,此类研究的重点在于隐藏 GPU 和 CPU 之间昂贵的数据移动延迟。这里有两个案例:

a) FlexGen 支持卸载权重、激活和 KV 缓存,并进一步构建了用于卸载以最大化吞吐量的图遍历问题。 下一个批次的数据加载和上一个批次的数据存储可以与当前批次的计算重叠。

b) llama.cpp 也将计算任务分配给 CPU,从而减轻了数据传输开销,但代价是使用低功耗 CPU 进行计算。

由于注意力操作在 CPU 上计算,KV 缓存的数据移动被简化为仅激活。 CPU 的数量选择与 GPU 上的工作负载延迟相匹配,以减轻异构流水线中的气泡。

七、服务系统优化

服务系统工作的优化致力于提高处理异步请求的效率。 优化了内存管理以容纳更多请求,并集成了高效的批处理和调度策略以提高系统吞吐量。 此外,还提出了针对分布式系统的优化,以利用分布式计算资源。总结起来就是这四个:内存管理、批处理、调度策略、分布式计算。

内存管理

KV 缓存的存储占 LLM 服务内存使用量的主导地位,尤其是在上下文长度较长时。 由于生成长度不确定,因此提前为 KV 缓存存储分配空间具有挑战性。 早期的实现通常会根据每个请求预设的最大长度提前分配存储空间。 然而,在请求生成提前终止的情况下,这种方法会导致存储资源的大量浪费。针对这个问题,两个比较有名的推理框架vLLM和LightLLM分别做了以下解决:

vLLM提出了一种类似于操作系统分页的方式来存储 KV 缓存。 vLLM 首先分配尽可能大的内存空间,并将其平均划分为多个物理块。 当请求到来时,vLLM 以不连续的方式动态地将生成的 KV 缓存映射到预分配的物理块中。 通过这种方式,vLLM 显著减少了存储碎片,并在 LLM 服务中实现了更高的吞吐量。

LightLLM 则在vLLM基础上 使用了更细粒度的 KV 缓存存储,以减少由于不规则边界造成的浪费。 LightLLM 将一个 token 的 KV 缓存作为一个单位来处理,而不是一个块,这样生成的 KV 缓存总是能够填满预分配的空间。

连续批处理

批处理中的请求长度可能不同,当较短的请求完成而较长的请求仍在运行时,会导致利用率低下。 由于服务场景中请求的异步性质,存在机会可以缓解这种利用率低下的时期。 提出了连续批处理技术,通过在一些旧请求完成时批处理新请求来利用这一机会。

ORCA是第一个提出来解决连续批处理的研究,具体如上图所示。而vLLM基于ORCA扩展到注意力计算,使得具有不同 KV 缓存长度的请求能够一起进行批处理。之后大量研究者基于ORCA提出了拆分-融合技术,其实就是将预填充请求和解码请求一起批处理。 具体来说,该方法首先在序列维度上拆分长的预填充请求,然后将其与多个短的解码请求一起批处理。 拆分-融合方法平衡了不同迭代之间的工作负载,并通过消除新请求的停滞显著降低了尾部延迟。值得注意的是:拆分-融合技术的前提是预填充阶段的请求可以被划分为离散的块。分块预填充方法涉及沿着序列维度分割预填充请求,从而避免了其他请求的潜在瓶颈。该策略利用了大语言模型固有的自回归特性,其中注意力计算仅依赖于之前的 Token。因此,分块预填充技术的数学等价性得到保证,使其成为降低大语言模型服务中请求延迟的首选方法。

调度策略

在大语言模型服务中,每个请求的作业长度都存在差异,因此执行请求的顺序对服务系统的吞吐量有显著影响。 当长请求获得优先权时,会发生队首阻塞(head-of-line blocking)。 具体来说,内存使用量会随着长请求的增加而迅速增长,当系统耗尽内存容量时,会阻碍后续请求。为了解决这类问题,vllm和lightllm提出来采用简单的先来先服务(FCFS)原则来调度请求。

分布式系统

为了实现高吞吐量,LLM 服务通常部署在分布式平台上。这里有一个经典的案例就是早期OpenAI的方案:使用Ray+vllm实现分布式集群部署。

如何学习大模型 AI ?

由于新岗位的生产效率,要优于被取代岗位的生产效率,所以实际上整个社会的生产效率是提升的。

但是具体到个人,只能说是:

“最先掌握AI的人,将会比较晚掌握AI的人有竞争优势”。

这句话,放在计算机、互联网、移动互联网的开局时期,都是一样的道理。

我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。

我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。

这份完整版的大模型 AI 学习资料已经上传优快云,朋友们如果需要可以微信扫描下方优快云官方认证二维码免费领取【保证100%免费

https://img-blog.csdnimg.cn/img_convert/05840567e2912bcdcdda7b15cba33d93.jpeg

在这里插入图片描述

为什么要学习大模型?

我国在A大模型领域面临人才短缺,数量与质量均落后于发达国家。2023年,人才缺口已超百万,凸显培养不足。随着AI技术飞速发展,预计到2025年,这一缺口将急剧扩大至400万,严重制约我国AI产业的创新步伐。加强人才培养,优化教育体系,国际合作并进是破解困局、推动AI发展的关键。

在这里插入图片描述

在这里插入图片描述

大模型入门到实战全套学习大礼包

1、大模型系统化学习路线

作为学习AI大模型技术的新手,方向至关重要。 正确的学习路线可以为你节省时间,少走弯路;方向不对,努力白费。这里我给大家准备了一份最科学最系统的学习成长路线图和学习规划,带你从零基础入门到精通!

img


2、大模型学习书籍&文档

学习AI大模型离不开书籍文档,我精选了一系列大模型技术的书籍和学习文档(电子版),它们由领域内的顶尖专家撰写,内容全面、深入、详尽,为你学习大模型提供坚实的理论基础。

在这里插入图片描述

3、AI大模型最新行业报告

2025最新行业报告,针对不同行业的现状、趋势、问题、机会等进行系统地调研和评估,以了解哪些行业更适合引入大模型的技术和应用,以及在哪些方面可以发挥大模型的优势。

img

4、大模型项目实战&配套源码

学以致用,在项目实战中检验和巩固你所学到的知识,同时为你找工作就业和职业发展打下坚实的基础。

img

5、大模型大厂面试真题

面试不仅是技术的较量,更需要充分的准备。在你已经掌握了大模型技术之后,就需要开始准备面试,我精心整理了一份大模型面试题库,涵盖当前面试中可能遇到的各种技术问题,让你在面试中游刃有余

img

适用人群

在这里插入图片描述

第一阶段(10天):初阶应用

该阶段让大家对大模型 AI有一个最前沿的认识,对大模型 AI 的理解超过 95% 的人,可以在相关讨论时发表高级、不跟风、又接地气的见解,别人只会和 AI 聊天,而你能调教 AI,并能用代码将大模型和业务衔接。

  • 大模型 AI 能干什么?
  • 大模型是怎样获得「智能」的?
  • 用好 AI 的核心心法
  • 大模型应用业务架构
  • 大模型应用技术架构
  • 代码示例:向 GPT-3.5 灌入新知识
  • 提示工程的意义和核心思想
  • Prompt 典型构成
  • 指令调优方法论
  • 思维链和思维树
  • Prompt 攻击和防范
第二阶段(30天):高阶应用

该阶段我们正式进入大模型 AI 进阶实战学习,学会构造私有知识库,扩展 AI 的能力。快速开发一个完整的基于 agent 对话机器人。掌握功能最强的大模型开发框架,抓住最新的技术进展,适合 Python 和 JavaScript 程序员。

  • 为什么要做 RAG
  • 搭建一个简单的 ChatPDF
  • 检索的基础概念
  • 什么是向量表示(Embeddings)
  • 向量数据库与向量检索
  • 基于向量检索的 RAG
  • 搭建 RAG 系统的扩展知识
  • 混合检索与 RAG-Fusion 简介
  • 向量模型本地部署
第三阶段(30天):模型训练

恭喜你,如果学到这里,你基本可以找到一份大模型 AI相关的工作,自己也能训练 GPT 了!通过微调,训练自己的垂直大模型,能独立训练开源多模态大模型,掌握更多技术方案。

到此为止,大概2个月的时间。你已经成为了一名“AI小子”。那么你还想往下探索吗?

  • 为什么要做 RAG
  • 什么是模型
  • 什么是模型训练
  • 求解器 & 损失函数简介
  • 小实验2:手写一个简单的神经网络并训练它
  • 什么是训练/预训练/微调/轻量化微调
  • Transformer结构简介
  • 轻量化微调
  • 实验数据集的构建
第四阶段(20天):商业闭环

对全球大模型从性能、吞吐量、成本等方面有一定的认知,可以在云端和本地等多种环境下部署大模型,找到适合自己的项目/创业方向,做一名被 AI 武装的产品经理。

  • 硬件选型
  • 带你了解全球大模型
  • 使用国产大模型服务
  • 搭建 OpenAI 代理
  • 热身:基于阿里云 PAI 部署 Stable Diffusion
  • 在本地计算机运行大模型
  • 大模型的私有化部署
  • 基于 vLLM 部署大模型
  • 案例:如何优雅地在阿里云私有部署开源大模型
  • 部署一套开源 LLM 项目
  • 内容安全
  • 互联网信息服务算法备案

学习是一个过程,只要学习就会有挑战。天道酬勤,你越努力,就会成为越优秀的自己。

如果你能在15天内完成所有的任务,那你堪称天才。然而,如果你能完成 60-70% 的内容,你就已经开始具备成为一名大模型 AI 的正确特征了。

这份完整版的大模型 AI 学习资料已经上传优快云,朋友们如果需要可以微信扫描下方优快云官方认证二维码免费领取【保证100%免费

https://img-blog.csdnimg.cn/img_convert/05840567e2912bcdcdda7b15cba33d93.jpeg

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值