掌握大语言模型技术:推理优化

通过堆叠多层Transformer结构来构建大型模型,可以显著提高模型的准确性和少样本学习能力,甚至使其在各种语言任务中达到接近人类的水平。然而,这些基础模型的训练成本极为昂贵,而且在推理过程中往往会占用大量内存和计算资源(这是一项持续的开销)。当前最先进的大型语言模型(LLM)的参数规模可达数十亿到数千亿不等。此外,根据具体应用场景,这些模型可能需要处理较长的输入(或上下文),这进一步增加了资源消耗。举例来说,检索增强生成(RAG)流程需要将大量信息输入模型,这大大增加了LLM的计算负担。

本文讨论了LLM推理中最紧迫的挑战,以及一些实用的解决方案。读者应该对Transformer架构和注意力机制有基本的理解。

理解LLM推理

大多数主流的纯解码型大语言模型(LLM)(如GPT-3)都是基于因果语言建模目标进行预训练的,本质上是作为一个预测下一个词的系统。这类LLM接收一系列token作为输入,然后以自回归的方式生成后续token,直到满足某个停止条件。这些停止条件可能是预设的生成token数量上限、特定的停止词列表,或者是模型生成了表示生成结束的特殊token。整个生成过程主要包括两个阶段:预填充阶段(prefill phase)解码阶段(decode phase)

需要注意的是,token是模型处理语言时的最小单位。在英文中,一个token通常相当于约3-4个字符。在将自然语言输入到模型之前,所有的文本都会被转换成一系列token。

预填充阶段或输入处理

在预填充阶段,LLM处理输入token以计算中间状态(键和值),这些状态用于生成第一个新token。每个新token依赖于之前所有的token,但由于输入的全部内容已知,从高层次上看,这是一种高度并行化的矩阵-矩阵操作(matrix-matrix operation)。这有效地饱和了GPU的利用率。

解码阶段或生成输出

在解码阶段,LLM自回归地一次生成一个输出token,直到满足停止条件。每个顺序输出token需要知道之前所有迭代的输出状态(键和值)。这类似于矩阵-向量操作(matrix-vector operation),相比预填充阶段,GPU计算能力未得到充分利用。数据(权重、键、值、激活)从内存传输到GPU的速度决定了延迟,而不是计算实际发生的速度。换句话说,这是一个受内存限制的操作。

本文介绍的许多推理挑战及其对应的解决方案,主要集中在解码阶段的优化上:包括高效的注意力模块、有效管理键和值等。

不同的LLM可能使用不同的分词器,因此比较它们输出的token并不简单。即使两个LLM的每秒输出token数相似,由于它们使用的分词器不同,相应的token可能代表不同数量的字符。因此,比较推理吞吐量时必须考虑这一点。

批处理(Batching)

提高GPU利用率和有效吞吐量的最简单方法是批处理。由于多个请求使用相同的模型,因此权重的内存成本得以分摊。将较大的批次传输到GPU一次性处理,可以更充分地利用计算资源。

然而,批处理大小只能增加到一定限度,超过这个限度可能会导致内存溢出。要更好地理解其原因,需要了解键值(KV)缓存和LLM的内存需求。

传统批处理(也称为静态批处理)是次优的。这是因为批次中的每个请求可能生成不同数量的完成token,并因此具有不同的执行时间。结果是,所有请求必须等到最长的请求完成,这种情况在生成长度差异较大的情况下会更加严重。有一些方法可以缓解这一问题,例如动态批处理,这将在后文讨论。

键值缓存(Key-value caching

解码阶段的一个常见优化是KV缓存。解码阶段在每个时间步生成一个token,但每个token都依赖于所有先前token的键和值张量(包括在预填充阶段计算的输入token的KV张量,以及直到当前时间步计算的任何新KV张量)。

为了避免在每个时间步为所有token重新计算这些张量,可以将它们缓存到GPU内存中。每次迭代时,当计算出新元素时,只需将它们添加到运行缓存中以便在下一次迭代中使用。在某些实现中,每一层模型都有一个KV缓存。

下图展示了预填充和解码阶段的KV缓存机制。预填充阶段是一个高度并行化的操作,所有输入token的KV张量可以同时计算。在解码阶段,新KV张量和后续的输出token在每一步自回归地计算。

图1:键值缓存机制示意图

LLM内存需求

实际上,GPU LLM内存需求的两个主要因素是模型权重和KV缓存。

  • 模型权重:内存被模型参数占用。例如,一个具有70亿参数的模型(如Llama 2 7B),在16位精度(FP16或BF16)下加载时,大约占用7B * sizeof(FP16) ≈ 14 GB的内存。

  • KV缓存:内存被自注意力张量的缓存占用,以避免冗余计算。

在批处理中,每个请求的KV缓存必须分别分配,可能占用大量内存。下公式描述了KV缓存的大小,适用于当今最常见的LLM架构。

每个token的KV缓存大小(以字节为单位)= 2 * (层数)* (注意力头数 * 每头维度)* 精度(以字节为单位)

这里的第一个2因素是因为K和V矩阵。通常,(注意力头数 * 每头维度)的值与Transformer的隐藏层大小(或模型维度,d_model)相同。这些模型属性通常可以在模型卡或相关的配置文件中找到。

这个内存大小是对输入序列中的每个token,以及所有输入批次而言的。假设使用半精度(FP16),KV缓存的总大小如下公式所示。

KV缓存的总大小(以字节为单位)= (批处理大小)* (序列长度)* 2 * (层数)* (隐藏层大小)* sizeof(FP16)

例如,对于使用16位精度的Llama 2 7B模型和批处理大小为1的情况,KV缓存的大小将是1 * 4096 * 2 * 32 * 4096 * 2字节,大约是2 GB。

有效管理这个KV缓存是一项艰巨的任务。随着批处理大小和序列长度的线性增长,内存需求会迅速增加。因此,它限制了可提供的吞吐量,并对长上下文输入带来挑战。这也是本文所述的几项优化措施的动机所在。

通过模型并行化扩展LLM

减少每个设备模型权重的内存占用的一种方法是将模型分布在多个GPU上。分散内存和计算占用可以运行更大的模型或更大的输入批次。模型并行化是训练或推理需要超过单个设备可用内存的模型的必要条件,并使训练时间和推理性能(延迟或吞吐量)适合某些用例。根据模型权重的分割方式,有几种并行化模型的方法。

需要注意的是,数据并行性也经常与下文提到的其他方法一起讨论。在数据并行性中,模型权重被复制到多个设备上,输入的全局批次被分割成微批次并在每个设备上处理。通过处理更大的批次,它减少了整体执行时间。然而,这是一种训练时间优化,在推理过程中不太相关。

管道并行(Pipeline parallelism)

管道并行化涉及将模型垂直分割成多个块,每个块包含一部分层,这些层在一个单独的设备上执行。图2a展示了四路管道并行化的示意图,其中模型按顺序分割,每个设备上执行四分之一的所有层的子集。一组操作的输出在一个设备上完成后传递给下一个设备,继续执行后续的块。F_n和B_n分别表示设备n上的前向和后向传递。每个设备上存储模型权重的内存需求有效地减少了四分之三。

这种方法的主要限制在于,由于处理的顺序性,一些设备或层在等待前一层的输出(激活值、梯度)时可能会闲置。这在前向和后向传递中导致了低效或“管道气泡”。在图2b中,白色空白区域是简单管道并行化中的大型管道气泡,设备闲置且未被充分利用。

微批处理可以在一定程度上缓解这一问题,如图2c所示。输入的全局批次被分割成子批次,逐一处理,并在最后累积梯度。需要注意的是,F_{n,m}和B_{n,m}分别表示设备n上处理微批次m时的前向和后向传递。这种方法减少了管道气泡的大小,但不能完全消除它们。

四路管道并行的示意图

  • (a) 模型按层划分为4部分,每部分在一个独立设备上执行。

  • (b) 简单的管道并行会导致大量的管道气泡和GPU利用率不足。

  • © 微批处理减少了管道气泡的大小,提高了GPU的利用率。

图2:四路管道并行的示意图。来源:GPipe: Easy Scaling with Micro-Batch Pipeline Parallelism

张量并行(Tensor parallelism)

张量并行涉及将模型的各个层(水平地)分片成更小的、独立的计算块,这些块可以在不同的设备上执行。注意力模块和多层感知器(MLP)层是transformer模型的主要组成部分,它们可以充分利用张量并行的优势。在多头注意力模块中,每个头或头的组可以被分配到不同的设备上,从而实现独立且并行的计算。

图3:多层感知机(MLP)和自注意力层中的张量并行示意图。来源:Megatron-LM: Training Multi-Billion Parameter Language Models Using Model Parallelism

图3a展示了在两层MLP上进行两路张量并行的例子,每一层由一个圆角框表示。在第一层中,权重矩阵A被分割为A_1和A_2。计算XA_1和XA_2可以在两个不同设备上独立执行,并处理相同批次的输入X(f为恒等操作)。这有效地将每个设备上存储权重的内存需求减半。第二层通过一个归约操作g将输出合并。

图3b展示了在自注意力层中进行两路张量并行的例子。多个注意力头天然并行,可以分割到不同设备上。

序列并行(Sequence parallelism)

张量并行有其局限性,因为它要求将层划分为独立且可管理的块。对于像LayerNorm和Dropout这样的操作,张量并行并不适用,因此这些操作会在张量并行组中重复出现。虽然LayerNorm和Dropout计算开销较低,但它们需要大量内存来存储(冗余)激活。

正如《Reducing Activation Recomputation in Large Transformer Models》所示,这些操作在输入序列上是独立的,可以沿“序列维度”进行划分,使其更加内存高效。这被称为序列并行。

图4:同时包含张量并行和序列并行的Transformer层示意图。来源:Reducing Activation Recomputation in Large Transformer Models

模型并行技术并不是互斥的,可以结合使用。它们可以帮助扩展并减少LLM的每GPU内存占用,但也有针对注意力模块的优化技术。

优化注意力机制

缩放点积注意力(SDPA)操作将查询(query)和键-值对(key-value pairs)映射到输出,如《Attention Is All You Need》中所描述。

多头注意力(Multi-head attention)

作为对SDPA的增强,通过不同的学习投影将Q、K和V矩阵多次并行执行注意力层,使模型能够在不同位置的不同表示子空间上共同关注信息。这些子空间独立学习,为模型提供对输入中不同位置的更丰富理解。

如图5所示,多个并行注意力操作的输出被连接并线性投影以组合它们。每个并行注意力层称为一个“头”,这种方法称为多头注意力(MHA)。

在原始工作中,当使用八个并行注意力头时,每个注意力头在模型的减小维度上操作(例如d_{model}/8)。这使得计算成本与单头注意力相似。

图5:缩放点积注意力(左)和多头注意力(右)的示意图,右图为多个SDPA头并行操作。来源:Attention Is All You Need

多查询注意力(Multi-query attention)

一种对MHA的推理优化称为多查询注意力(MQA),如《Fast Transformer Decoding》中提出,MQA在多个注意力头之间共享键和值。查询向量仍然像以前一样多次投影。

虽然MQA的计算量与MHA相同,但从内存读取的数据量(键和值)只是以前的一小部分。当受到内存带宽限制时,这可以实现更好的计算利用率。它还减少了内存中KV缓存的大小,为更大的批处理大小腾出空间。

减少键-值头数会带来潜在的精度下降。此外,需要在推理中利用这一优化的模型需要在训练时(或至少在约5%的训练量上进行微调)启用MQA。

分组查询注意力(Grouped-query attention)

分组查询注意力(GQA)在MHA和MQA之间取得了平衡,通过将键和值投影到几个查询头组(如图6所示)。在每个组内,它的行为类似于多查询注意力。

图6显示多头注意力有多个键-值头(左)。分组查询注意力(中)有多个键-值头,但少于查询头数,这是在内存需求和模型质量之间的平衡。多查询注意力(右)有一个单一的键-值头以节省内存。

图6:不同注意力机制的对比。左:多头注意力有多个键-值头。右:多查询注意力有一个键-值头,减少内存需求。中:分组查询注意力有几个键-值头,平衡内存和模型质量。来源:GQA: Training Generalized Multi-Query Transformer Models from Multi-Head Checkpoints

最初用MHA训练的模型可以使用GQA进行“再训练”,只需原始训练计算的一小部分。它们在保持接近MHA质量的同时,计算效率更接近MQA。Llama 2 70B就是一个利用GQA的模型实例。

优化如MQA和GQA通过减少存储的键和值头的数量,帮助减少KV缓存所需的内存。然而,KV缓存的管理中可能仍存在低效问题。在优化注意力模块之外,下一节将介绍一种更有效的KV缓存管理技术。

闪电注意力(FlashAttention)

另一种优化注意力机制的方法是调整某些计算的顺序,以更好地利用GPU的内存层级。神经网络通常按层描述,大多数实现也是如此,每次在输入数据上按顺序进行一种计算。这并不总是能带来最佳性能,因为对已经进入更高效内存层级的数据进行更多计算可能更有利。

在实际计算过程中将多个层融合在一起,可以减少GPU从内存读取和写入的次数,并将需要相同数据的计算组合在一起,即使它们是神经网络中不同层的一部分。

一种非常流行的融合方法是闪电注意力(FlashAttention),这是一种I/O感知的精确注意力算法,如《FlashAttention: Fast and Memory-Efficient Exact Attention with IO-Awareness》中所述。精确注意力意味着它在数学上与标准多头注意力相同(有多查询和分组查询注意力的变体),因此可以无修改地替换到现有模型架构或已经训练好的模型中。

I/O感知意味着它在融合操作时考虑了一些先前讨论的内存移动成本。特别是,FlashAttention使用“平铺”(tiling)技术一次性完全计算并写出最终矩阵的一小部分,而不是在整个矩阵上分步骤进行部分计算,并在中间写出中间值。

图7展示了平铺的FlashAttention计算模式和40GB GPU上的内存层级。右侧的图表展示了融合和重新排序注意力机制的不同组件所带来的相对速度提升。

图7:展示了内存层级和FlashAttention计算模式。来源:FlashAttention: Fast and Memory-Efficient Exact Attention with IO-Awareness

优化KV缓存管理的技术

在某些情况下,KV缓存会静态“过度配置”,以应对可能的最大输入(支持的序列长度),因为输入的大小不可预测。例如,如果一个模型支持的最大序列长度是2048,那么无论请求中的输入和生成的输出大小如何,都会在内存中预留2048的空间。这些空间可能是连续分配的,但通常会有大量空间未被使用,从而导致内存浪费或碎片化。这部分预留空间在请求的整个生命周期内都会被占用。

图8展示了由于过度配置和KV缓存管理不善导致的内存浪费和碎片化情况。1) “预留”表示为未来使用而预留的内存,这些内存会在请求的整个期间内保持预留。2) “内部碎片化”发生是因为很难预测生成的长度,因此内存被过度配置以应对最大序列长度。3) “外部碎片化”表示由于批处理请求需要不同的预分配大小而导致的低效。

图8:展示了由于过度配置和KV缓存管理不善导致的内存浪费和碎片化。来源:Efficient Memory Management for Large Language Model Serving with PagedAttention

受操作系统分页技术的启发,PagedAttention算法允许将连续的键(key)和值(value)存储在内存中的非连续空间中。该算法将每个请求的KV缓存划分为固定数量token的块,这些块可以非连续地存储在内存中。

在注意力计算过程中,这些块会按需被提取,并通过一个块表进行管理。随着新token的生成,系统会分配新的块。由于块的大小是固定的,这种方法消除了因不同请求需要不同内存分配而产生的低效问题。这大大减少了内存浪费,从而支持更大的批处理规模(因此也提高了整体吞吐量)

模型优化技术

到目前为止,我们讨论了LLM如何消耗内存、如何将内存分布到多个GPU上、如何优化注意力机制和KV缓存。还有几种模型优化技术可以通过对模型权重本身进行修改来减少每个GPU上的内存使用。GPU还配备了专用硬件来加速对这些修改值的操作,从而进一步提高模型的速度。

量化(Quantization)

量化是减少模型权重和激活精度的过程。大多数模型在训练时使用32位或16位精度,其中每个参数和激活元素占用32位或16位内存——即单精度浮点数。然而,大多数深度学习模型可以用每值8位甚至更少的位数来有效表示。

图9展示了一种可能的量化方法前后的值分布。在这种情况下,一些精度因舍入而丧失,一些动态范围因裁剪而丧失,使得值可以用更小的格式表示。

图9:一种可能的量化方法前后的值分布

降低模型的精度可以带来几个好处。首先,模型占用的内存空间减少,意味着可以在相同的硬件上容纳更大的模型。其次,量化还可以在相同的带宽条件下传输更多的参数,这对带宽受限的模型加速有很大帮助。

量化技术有很多种,通常包括对激活值、权重或两者进行精度降低。量化权重相对简单,因为训练完成后权重是固定的。然而,这种方法可能会在性能上有所折扣,因为激活值的精度仍然较高。GPU没有专门的硬件来处理INT8和FP16数值的乘法,因此在实际操作中必须将权重转换回较高精度。

量化激活值,即转换器块和网络层的输入,也是可能的,但面临挑战。激活向量通常包含异常值,这有效地增加了它们的动态范围,使得在较低精度下表示这些值比表示权重时更加困难。

一种方法是通过将代表性数据集通过模型来确定异常值的出现位置,并选择以较高精度表示某些激活值(LLM.int8())。另一种方法是借用权重的动态范围(权重易于量化),并在激活值中重复使用这个范围。

稀疏化(Sparsity)

类似于量化,研究表明许多深度学习模型对修剪(即将接近0的值替换为0)具有鲁棒性。稀疏矩阵是指矩阵中许多元素为0的矩阵。这些矩阵可以以压缩的格式表示,占用的空间比完整的密集矩阵要少。

图10:以压缩格式表示的稀疏矩阵,包括非零数据值及其对应的两个比特索引。

GPU特别有针对某种结构稀疏的硬件加速,其中每四个值中有两个是0。稀疏表示还可以与量化结合使用,以实现更大的执行速度提升。找到以稀疏格式表示大型语言模型的最佳方法仍然是一个活跃的研究领域,并为未来推理速度的提升提供了有希望的方向。

蒸馏(Distillation)

另一种压缩模型规模的方法是通过知识蒸馏技术将大模型的知识转移到较小的模型中。知识蒸馏过程涉及训练一个较小的模型(称为学生模型),使其模仿较大模型(称为教师模型)的行为。

知识蒸馏的成功案例包括DistilBERT,它将BERT模型的大小压缩了40%,同时保留了97%的语言理解能力,且推理速度提升了60%。

虽然针对大型语言模型(LLM)的知识蒸馏仍是一个活跃的研究领域,但这种方法最早在论文《Distilling the Knowledge in a Neural Network》中被描述:

  • 学生网络通过一个特定的损失函数来模仿较大的教师网络的表现。这个损失函数衡量学生模型和教师模型输出之间的差异。除了可能包含原始的任务相关损失函数(即将学生模型的输出与真实标签进行匹配)外,还包括了与教师模型输出的匹配度。

  • 用于蒸馏的教师模型输出可以是最后一层的输出(称为logits)或中间层的激活值。

图11展示了知识蒸馏的通用框架。在这个框架中,教师模型的logits作为软目标,学生模型通过蒸馏损失进行优化。需要注意的是,其他蒸馏方法可能会使用不同的损失度量来"蒸馏"教师模型的知识。

图11:使用蒸馏损失对教师和学生模型的logits进行知识蒸馏的通用框架。来源:Knowledge Distillation: A Survey

知识蒸馏的另一种替代方法是使用教师模型生成的数据对学生LLM进行监督训练。这种方法在人工标注数据稀缺或无法获得时特别有用。《Step-by-Step Distillation!》进一步扩展了这种方法:除了提供作为真实标签的输出外,还从教师LLM中提取推理过程。这些推理过程作为中间推理步骤,有助于以数据高效的方式训练较小的学生LLM。

值得注意的是,许多当前最先进的大型语言模型(LLM)都有严格的许可协议,禁止使用其输出结果来训练其他语言模型。这使得寻找合适的教师模型变得极具挑战性。

模型服务技术

模型执行通常受限于内存带宽,尤其是在读取模型权重方面。即使应用了前文描述的所有模型优化技术,内存瓶颈仍可能存在。因此,当模型权重加载到内存后,我们希望尽可能充分地利用它们。换言之,就是要尽量并行处理任务。主要有两种方法可以实现这一点:

  • 动态批处理(In-flight batching):同时处理多个不同的请求。

  • 推测性推理(Speculative inference):并行执行序列中的多个不同步骤,以尝试节省时间。

动态批处理(In-flight batching)

LLM具有一些独特的执行特性,使得在实践中有效地批量处理请求变得困难。单个模型可以同时用于各种看似截然不同的任务,从聊天机器人中的简单问答到文档摘要或长代码块生成。这些工作负载高度动态,输出规模可能相差几个数量级。

这种多样性使得批量处理请求并有效并行执行变得具有挑战性——这原本是神经网络服务中的一种常见优化手段。在实际应用中,这可能导致某些请求远早于其他请求完成。

为了管理这些动态负载,许多LLM服务解决方案采用了一种优化的调度技术,称为连续批处理或动态批处理。这种方法利用了LLM整体文本生成过程可以分解为多个模型执行迭代的特性。

在使用动态批处理时,服务器运行时不会等待整个批次完成后再处理下一组请求,而是立即从批次中移除已完成的序列,同时开始执行新的请求,即使其他请求仍在处理中。这样,在实际应用中,动态批处理可以显著提高GPU的整体利用率。

推测性推理(Speculative inference)

推测性推理,也称为推测采样、辅助生成或块级并行解码,是另一种并行化执行LLM的方法。通常,GPT风格的大型语言模型是自回归模型,一次只生成一个token。

每个生成的token都依赖于之前所有的token作为上下文。这意味着在常规执行中,无法从同一序列中并行生成多个token——必须等到第n个token生成后才能生成第n+1个。

图12展示了推测性推理的一个例子,其中一个简单的草稿模型先预测多个未来步骤,然后在主模型中并行验证或拒绝这些预测。在这个例子中,草稿模型预测的前两个token被接受,而最后一个被拒绝并移除,然后继续生成。

具体来说,从提示词"I saw a dog ride"开始,草稿模型预测"in the bus"。而验证模型并行预测"in the car",因此我们拒绝了"bus"token。

图12:推测性推理的示例。来源:Blockwise Parallel Decoding for Deep Autoregressive Models

推测采样提供了一种变通方法。这个方法的基本思路是使用某种"低成本"的过程生成一个几个token长的草稿续写。然后,在多个步骤中并行执行主要的"验证"模型,利用这个低成本草稿作为所需执行步骤的"推测"上下文。

这种修订保持了原文的核心意思,同时使表达更加符合中文的语言习惯和专业术语使用。我们保留了一些专业术语如"token"、“LLM"等,因为这些在中文技术文档中也常用。同时,我们调整了一些表述,使其更加流畅自然,例如将"便宜"改为"低成本”,这在描述计算过程时更为恰当。

如果验证模型生成的token与草稿模型生成的token相同,则可以接受这些token作为输出。否则,我们会丢弃第一个不匹配token之后的所有内容,然后使用新的草稿重复这个过程。

生成草稿token的方法有多种,每种方法都有不同的权衡。可以训练多个模型,或者在一个预训练模型上微调多个头,以预测多个步骤后的token。另一种方法是使用一个小型模型作为草稿模型,而用一个更大、更强大的模型作为验证器。

结论

本文概述了许多流行的解决方案,用于优化和高效部署大型语言模型(LLM),无论是在数据中心还是在边缘计算的个人电脑上。这些技术中的许多已通过NVIDIA TensorRT-LLM得到优化并可供使用。NVIDIA TensorRT-LLM是一个开源库,包括TensorRT深度学习编译器、优化的内核、预处理和后处理步骤,以及多GPU/多节点通信原语,能够在NVIDIA GPU上提供突破性的性能。欲了解更多信息,请参阅《Optimizing Inference on Large Language Models with NVIDIA TensorRT-LLM》。

NVIDIA TensorRT-LLM现已得到NVIDIA Triton推理服务器的支持,使企业能够在不同的AI框架、硬件加速器和部署模型之间同时服务多个AI模型,实现峰值吞吐量和最低延迟。

TensorRT-LLM还支持NVIDIA NeMo,这是一个为开发者提供端到端云原生企业框架的平台,用于构建、定制和部署具有数十亿参数的生成式AI模型。了解如何开始使用NeMo。

如何学习大模型 AI ?

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

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

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

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

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

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

在这里插入图片描述

第一阶段(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 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费

在这里插入图片描述

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值