Megatron-LM:万亿模型并行训练,经典必读论文

摘要

大型语言模型在多个任务领域已展现出前所未有的高精度,但训练这些庞然大物却困难重重。首先,GPU内存容量有限,即便是多GPU集群也难以承载如此庞大的模型;其次,训练所需的海量计算资源,使得训练周期被无限拉长,变得不切实际。

为了突破这些瓶颈,研究人员提出了张量并行、管道并行等先进的模型并行策略。然而,简单地将这些方法应用于数千个GPU的环境中,却容易遭遇扩展性难题,限制了其实际应用效果。

在本研究中,我们巧妙地将张量并行、管道并行与数据并行三者融为一体,成功实现了在数千个GPU上的高效扩展。我们创新性地设计了一种交错式管道调度方案,该方案在保持与现有技术相当内存占用水平的同时,实现了吞吐量超过10%的显著提升。

我们的方法使得在3072个GPU上以每秒502 petaFLOP的速度对具有1万亿参数的模型进行训练成为可能(每个GPU的吞吐量达到理论峰值的52%)。

1 引言

在自然语言处理(NLP)领域,基于Transformer的语言模型近年来取得了飞速进展,这得益于计算能力的提升和大型数据集的涌现。近期研究表明,大型语言模型在零样本或少样本学习任务中表现出色,能在多种NLP任务和数据集上实现高精度。

这些大型语言模型还拥有众多令人兴奋的下游应用,如客户反馈摘要、自动对话生成、语义搜索和代码自动补全。因此,最先进的NLP模型中的参数数量正以指数级速度增长(如图1所示)。

然而,训练这些模型面临两大挑战:一是即便是最大的GPU(NVIDIA最近发布的80GB A100显卡)的主内存也无法容纳这些模型的全部参数;二是即便我们能够通过某种方式(如在主机和设备内存间交换参数)将模型放入单个GPU中,所需的大量计算操作也会导致训练时间长得不切实际(例如,使用单个NVIDIA V100 GPU训练拥有1750亿参数的GPT-3模型大约需要288年)。

数据并行扩展通常效果不错,但也存在两大局限:一是当达到一定程度后,每个GPU的批量大小会变得过小,从而降低GPU利用率并增加通信成本;二是可使用的设备最大数量受限于批量大小,从而限制了可用于训练的加速器数量。

为了应对上述两大挑战,已经提出了多种模型并行技术。例如,近期的研究展示了如何通过张量(层内)模型并行技术来克服这些限制,该技术将每个Transformer层内的矩阵乘法操作分配到多个GPU上。

虽然这种方法在NVIDIA DGX A100服务器(配备8个80GB A100 GPU)上对于最多200亿参数的模型效果良好,但对于更大的模型则不再适用。对于更大的模型,需要跨多个多GPU服务器进行分割,这带来了两个问题:(a) 张量并行所需的all-reduce通信需要通过服务器间链路进行,这些链路的速度慢于多GPU服务器内部的高带宽NVLink;(b) 高度模型并行可能导致产生小的矩阵乘法(GEMMs),从而可能降低GPU的利用率。

流水线模型并行是另一种支持大型模型训练的技术,该技术将模型的层分散到多个GPU上。一个批次被分割成更小的微批次,这些微批次的执行被流水线化。层的分配可以采用多种方式,并且可以为输入的前向和后向传递设计不同的调度方案。层的分配和调度策略会导致不同的性能权衡。

无论采用何种调度方式,为了保持优化器的严格语义,各设备间的优化器步骤需要同步,这会导致在每个批次结束时进行管道刷新,此时允许最后一个微批次完成执行(并且不会注入新的微批次)。

根据注入管道中的微批次数量,多达50%的时间可能用于管道刷新。微批次数量与管道大小的比值越大,管道刷新所需的时间就越少。因此,为了达到高效率,通常需要较大的批次大小。在本研究中,我们还引入了一种新的管道调度方案,以提高小批次大小下的效率。

用户因此可以采用多种技术来训练他们的大型模型,每种技术都有其不同的权衡点。此外,这些技术还可以相互结合使用。然而,将这些技术结合使用会导致复杂的交互作用,为了获得良好的性能,需要仔细考虑这些交互作用。

在本文中,我们探讨了以下问题:在给定批次大小的情况下,应如何结合并行技术以最大化大型模型的训练吞吐量,同时保持优化器的严格语义?

特别是,我们展示了如何将流水线、张量和数据并行性相结合,这种技术我们称之为PTD-P,以在数千个GPU上训练大型语言模型,并获得良好的计算性能(达到峰值设备吞吐量的52%)。

我们的方法结合了跨多GPU服务器的流水线并行性、单个多GPU服务器内的张量并行性以及数据并行性,从而能够在优化的集群环境中,以优雅的方式扩展模型规模,达到万亿级别的参数。该集群环境具有高带宽连接,不仅限于同一服务器内的GPU之间,还包括跨服务器。在给定更多训练资源的情况下,我们可以使用类似的方法训练更大的模型。

在我们的实验中,我们展示了接近线性的扩展性,最高可达3072个A100 GPU,每个GPU实现了163 teraFLOP/s的端到端训练吞吐量(包括通信、数据处理和优化),在使用混合精度的万亿参数GPT模型上,总体吞吐量达到了502 petaFLOP/s。这一吞吐量使得实际训练时间大大缩短:我们估计该模型的端到端训练时间约为3个月。

我们相信,这是该规模模型所达到的最快训练吞吐量:以往的系统由于未结合流水线和张量并行性,因此无法训练如此大型的模型。我们还将我们的方法与ZeRO进行了比较,发现对于具有1750亿和5300亿参数的模型,我们的方法由于减少了跨节点通信,因此在性能上比ZeRO-3高出70%。

要在大规模上实现这一吞吐量,我们需要在多个方面进行创新和精细的工程设计:实现高效的计算内核,使大部分计算受限于计算能力而非内存,智能地将计算图划分到各个设备上,以减少通过网络链路发送的字节数,同时限制设备空闲时间,进行特定领域的通信优化,以及使用快速硬件(最先进的GPU以及相同服务器和不同服务器之间的高带宽链接)。

我们还从实证和(可能的)分析角度研究了影响吞吐量的各个组件之间的相互作用。基于这些研究,我们提出以下关于如何配置分布式训练的指导原则:

  • 不同形式的并行性以非平凡的方式相互作用:并行化策略会影响通信量、内核执行的计算效率,以及由于流水线刷新(流水线气泡)而导致等待计算的空闲时间。例如,在我们的实验中,我们发现次优的张量模型并行和流水线模型并行的组合,即使在服务器间具有高带宽网络链接的情况下,也可能导致吞吐量降低高达2倍。

    张量模型并行在单个多GPU服务器内是有效的,但对于更大的模型,则必须使用流水线模型并行。用于流水线并行的调度策略会影响通信量、流水线气泡大小和用于存储激活的内存量。我们提出了一种新的交错调度策略,与先前提出的具有相似内存占用的调度策略相比[20, 30],它可以提高多达10%的吞吐量。

  • 超参数值(如微批次大小)对内存占用、执行的内核的算术效率以及流水线气泡大小有影响。在我们的实验中,微批次大小的最优值是问题依赖的,并且可以提高多达15%的吞吐量。

  • 在大规模分布式训练中,通信是密集型的。当在3072个GPU上训练万亿参数模型时,我们的实现使用了892 GB/s的有效二分带宽进行流水线并行通信,以及13 TB/s进行数据并行通信。使用更慢的节点间互连或更密集的通信分区会阻碍扩展性能。

我们应该注意,我们没有自动探索并行化策略的搜索空间(如FlexFlow、PipeDream、Tarnawski等人和DAPPLE),而是提出了我们在实践中发现效果良好的启发式方法(在第3节中)。

2 模型并行

在本节中,我们将探讨有助于在单个GPU内存无法容纳的大型模型上进行高效训练的并行技术。在这项工作中,我们将流水线模型并行与张量模型并行(如图2所示的组合)与数据并行相结合。我们简称这种组合为PTD-P。

2.1 数据并行

数据并行是指每个工作节点都拥有完整模型的副本,输入数据集被分片,工作节点定期聚合它们的梯度,以确保所有工作节点都看到一致的权重版本。对于单个工作节点无法容纳的大型模型,可以对较小的模型分片使用数据并行。

2.2 流水线并行

在流水线模型并行中,模型的层被分配到多个设备上。当应用于具有重复变换器(transformer)块的模型时,每个设备可以分配相同数量的变换器层。我们不考虑更复杂的非对称模型架构,因为这类架构在将层分配给流水线阶段时更为困难。

一个批次被分割成更小的微批次,然后在这些微批次之间执行流水线操作。流水线方案需要确保在正向和反向传播过程中,输入看到的是一致的权重版本,以维持明确的同步权重更新语义。特别是,简单的流水线操作可能导致输入在反向传播中看到的权重更新在正向传播中并未出现。

为了严格保留优化器语义,我们引入了周期性的流水线刷新操作,以确保设备间的优化器步骤同步。在每个批次的开始和结束时,设备处于空闲状态。我们将这种空闲时间称为“流水线气泡”,并希望将其尽可能缩短。

PipeMare、PipeDream和PipeDream-2BW等异步和有限陈旧度的方法完全摒弃了刷新操作,但放宽了权重更新语义。我们对这类方案的考虑将留待未来工作。

在设备间调度正向和反向微批次有多种可能的方式,每种方式在流水线气泡大小、通信和内存占用之间提供了不同的权衡。本节中,我们将讨论其中的两种方法。

2.2.1 默认调度方案

GPipe提出了一种调度方案,即首先执行批次中所有微批次的正向传播,随后再执行所有微批次的反向传播(如图3所示)。我们可以量化GPipe流水线气泡(pipeline bubble)的大小(记作𝑡𝑝𝑏)。

设一个批次中的微批次数量为𝑚,流水线阶段数(即用于流水线并行的设备数量)为𝑝,每次迭代的理想时间为𝑡𝑖𝑑(假设达到完美或理想扩展),以及执行单个微批次的正向和反向传播所需的时间分别为𝑡𝑓和𝑡𝑏。

在此调度方案中,流水线气泡由批次开始时的𝑝-1个正向传播和结束时的𝑝-1个反向传播组成。因此,流水线气泡的总时间为𝑡𝑝𝑏 = (𝑝-1) · (𝑡𝑓 + 𝑡𝑏)。批次的理想处理时间为𝑡𝑖𝑑 = 𝑚 · (𝑡𝑓 + 𝑡𝑏)。所以,流水线气泡占理想计算时间的比例为 tpb/tid = (p-1) / m。

为了减小气泡时间比例,我们需要𝑚远大于𝑝。然而,对于如此大的𝑚,这种方法具有较高的内存占用,因为它需要在整个训练迭代期间,将所有𝑚个微批次的中间激活(或在使用激活重计算时,每个流水线阶段的输入激活)存储在内存中。

相反,我们采用了PipeDream-Flush调度方案。在此方案中,我们首先进入一个预热阶段,其中工作器执行不同数量的正向传播,如图4(顶部)所示。这种调度方案将正在处理的微批次数量(即反向传播尚未完成且需要保留激活的微批次数量)限制在流水线深度内,而不是一个批次中的微批次总数。预热阶段结束后,每个工作器进入稳定状态,工作器执行一个正向传播后紧接一个反向传播(简称1F1B)。

最后,在批次结束时,我们完成所有剩余正在处理的微批次的反向传播。虽然这种新调度方案的气泡时间与之前相同,但PipeDream-Flush调度方案中正在进行的正向传播数量最多为流水线阶段数,而GPipe调度方案则需要为𝑚个微批次保留激活。因此,当𝑚远大于𝑝时,PipeDream-Flush在内存效率上远胜于GPipe。

2.2.2 交错阶段调度方案

为了减小流水线气泡的大小,每个设备可以对多个层子集(称为模型块)进行计算,而不是之前连续的一组层。例如,如果之前每个设备各有4层(即设备1处理层1-4,设备2处理层5-8,以此类推),现在我们可以让每个设备处理两个模型块(每个块包含2层),即设备1处理层1、2、9、10;设备2处理层3、4、11、12;依此类推。这种方案下,流水线中的每个设备都被分配了多个流水线阶段(每个阶段的计算量相比之前有所减少)。

与之前一样,我们可以采用“全部正向,全部反向”的调度版本,但这会占用较高的内存(与𝑚成正比)。因此,我们开发了一种交错调度方案,该方案基于之前内存高效的1F1B(一个正向传播后跟一个反向传播)调度方案进行了调整。新的调度方案如图4所示,它要求批次中的微批次数量必须是流水线并行度(流水线中设备数量)的整数倍。例如,如果有4个设备,则批次中的微批次数量必须是4的倍数。

如图4所示,在新的调度方案中,对于相同批次大小,流水线刷新会更快发生。如果每个设备有𝑣个阶段(或模型块),则每个阶段或块处理一个微批次的正向和反向传播时间将分别为𝑡𝑓/𝑣和𝑡𝑏/𝑣。因此,流水线气泡时间减少到𝑡𝑝𝑏 = (𝑝-1) · (𝑡𝑓 + 𝑡𝑏) / 𝑣,气泡时间比例为:tpb / tid = = (𝑝-1) / (𝑚 · 𝑣)。

这意味着新的调度方案将气泡时间缩短了𝑣倍。然而,这种气泡时间的减少并非没有代价:它要求额外的通信。从数量上看,通信量也增加了𝑣倍。

2.3 张量并行

张量模型并行技术将模型的各个层分布在多个设备上。在本文中,我们特别采用了Megatron 针对Transformer层(语言模型的基础)的分区策略。同样的思路也可以应用于其他类型的模型,如卷积神经网络(CNN)。下面,我们简要概述这一策略,如图5所示。

这种方法将MLP和自注意力块中的GEMMs(广义矩阵乘法)在GPU之间进行了分割,同时在前向传播中仅需要两次归约操作(𝑔操作符)和在反向传播中需要两次归约操作(𝑓操作符)。我们用几行代码实现了𝑓和𝑔。

3 并行配置的性能分析

在本节中,我们将考虑将流水线模型并行、张量模型并行与数据并行相结合的性能影响。在给定固定的GPU预算和批次大小的情况下,人们可以在PTD-P中使用不同程度的并行类型来训练模型;每个维度都会在内存占用、设备利用率和通信量之间做出权衡。

3.1 符号说明

• (𝑝, 𝑡, 𝑑):并行化维度。𝑝代表流水线模型并行的大小,𝑡代表张量模型并行的大小,而𝑑代表数据并行的大小。

• 𝑛:GPU的数量。我们要求𝑝 · 𝑡 · 𝑑 = 𝑛。

• 𝐵:全局批次大小(作为输入提供)。

• 𝑏:微批次大小。

• 𝑚 = 𝐵/(𝑏 · 𝑑):每个流水线中每批次的微批次数量。

3.2 模型和张量并行

张量并行和流水线并行均可用于将模型的参数分配到多个GPU上。如前所述,使用带有周期性刷新的流水线并行会产生大小为(𝑝 − 1)/𝑚的流水线气泡。假设𝑑 = 1(数据并行大小),那么𝑡 · 𝑝 = 𝑛。以𝑡表示的流水线气泡大小为:(p -1 ) / m = (n/t - 1) / m。

随着𝑡的增加,对于固定的𝐵、𝑏和𝑑(𝑚 = 𝐵/(𝑏 · 𝑑)也是固定的),流水线气泡会减小。不同GPU之间执行的通信量也受到𝑝和𝑡值的影响。流水线模型并行具有更便宜的点对点通信。另一方面,张量模型并行使用all-reduce通信(前向和后向传递中各有两次all-reduce操作,见第2.3节)。

在流水线并行中,每对连续设备之间(无论是前向还是后向传递)每个微批次需要执行的总通信量是𝑏𝑠ℎ,其中𝑠是序列长度,ℎ是隐藏层大小。在张量模型并行中,每层的前向和后向传递中,需要在𝑡个模型副本之间对总大小为𝑏𝑠ℎ的张量进行两次all-reduce操作,这导致每个设备每层每个微批次的总通信量为8𝑏𝑠ℎ(𝑡−1)/𝑡。每个设备通常有多层;因此,每个微批次每个设备的张量并行通信总量为𝑙stage · 8𝑏𝑠ℎ(𝑡−1)/𝑡,其中𝑙stage是流水线阶段中的层数。

因此,我们看到张量模型并行增加了设备之间的通信量。因此,当𝑡大于单个节点中的GPU数量时,通过较慢的节点间链路执行张量模型并行可能会产生不切实际的开销。

要点一:在考虑不同形式的模型并行时,当使用配备𝑔个GPU的服务器时,张量模型并行通常应使用到𝑔度,然后可以使用流水线模型并行来扩展到跨服务器的更大模型。

3.3 数据并行和模型并行

3.3.1 流水线模型并行

设𝑡 = 1(张量模型并行大小)。每条流水线的微批次数量为𝑚 = 𝐵/(𝑑 · 𝑏) = 𝑏′/𝑑,其中𝑏′ := 𝐵/𝑏。在GPU总数为𝑛的情况下,流水线阶段数为𝑝 = 𝑛/(𝑡 · 𝑑) = 𝑛/𝑑。流水线气泡大小为:

随着𝑑的增大,𝑛 − 𝑑变小,因此流水线气泡也变小。图6展示了不同𝑑、𝑛和𝑏′值下流水线气泡大小的变化行为。对于所有模型,可能无法一直将𝑑增加到𝑛,因为模型的完整训练内存占用可能大于单个加速器的内存容量。

如果数据并行所需的全归约通信不会随着𝑑的增加而大幅增加,那么整体吞吐量将会增加,这应该是成立的,因为基于环的实现方式的通信时间与𝑑−1𝑑 = 1 − 1/𝑑成正比。

我们还可以分析增加批次大小𝐵的影响。对于给定的并行配置,随着批次大小𝐵的增加,𝑏′ = 𝐵/𝑏增加,(𝑛 − 𝑑)/𝑏′减小,从而提高吞吐量。数据并行所需的全归约通信也变得不那么频繁,进一步提高了吞吐量。

3.3.2 数据与张量模型并行

在使用张量模型并行时,每个微批次都需要执行全归约通信。这在多GPU服务器上可能成本较高。另一方面,数据并行则只需每个批次执行一次昂贵的全归约通信。

此外,在使用张量模型并行时,每个模型并行等级只执行模型每一层中的部分计算,因此对于不够大的层,现代GPU可能无法以最高效率执行这些子矩阵计算。

要点二:在使用数据和模型并行时,应使用总模型并行大小𝑀 = 𝑡 · 𝑝,以确保模型的参数和中间元数据能够装入GPU内存中;数据并行则可用于将训练扩展到更多GPU上。

3.3.3 微批次大小

微批次大小𝑏的选择也会影响模型训练的吞吐量。例如,我们在图7中看到,在单个GPU上使用较大的微批次大小,每个GPU的吞吐量可以提高达1.3倍。

现在,我们想要在给定的并行配置(𝑝, 𝑡, 𝑑)和批次大小𝐵下确定最佳的微批次大小𝑏。数据并行通信的数量将保持不变,无论微批次大小如何。给定函数𝑡𝑓(𝑏)和𝑡𝑏(𝑏),它们将微批次大小映射到单个微批次的前向和后向计算时间,忽略通信成本,计算一个批次所花费的总时间为(与之前一样,定义𝑏′为𝐵/𝑑):

因此,微批次大小既影响操作的算术强度,也影响流水线气泡大小(通过影响𝑚)。图8显示了具有十亿参数和(𝑝, 𝑡) = (8, 8)的GPT模型的估计吞吐量(使用公式(1)估计处理时间)。两种批次大小的最佳𝑏均为4。

要点三:最佳微批次大小𝑏取决于模型的吞吐量和内存占用特征,以及流水线深度𝑝、数据并行大小𝑑和批次大小𝐵。

3.5 激活重计算

激活重计算是一种可选技术,通过在反向传播之前立即第二次运行前向传播(并仅存储给定流水线阶段的输入激活,而不是整个中间激活集,后者要大得多),从而在增加的计算操作数量与额外的内存占用之间取得平衡。

为了将内存占用保持在可接受的低水平,需要使用激活重计算来训练具有流水线并行性的相当大的模型。先前的工作,如PipeDream-2BW,已经研究了激活重计算对性能的影响。

激活检查点的数量不会影响吞吐量,但会影响内存占用。设𝐴_input为层输入激活的大小,𝐴_intermediate为每层中间激活的大小。如果模型阶段有𝑙层,且𝑐是检查点的数量,则总内存占用将为𝑐·𝐴_input+𝑙/𝑐·𝐴_intermediate。当𝑐=√𝑙时,此函数取得最小值。

4 系统实现

我们将PTD-P作为Megatron-LM代码库的扩展来实现。我们的实现基于PyTorch框架。在设备间通信方面,我们采用了NCCL库。为了获得良好的性能,我们针对通信和计算两方面进行了优化,以下是我们的优化概述:

4.1 通信优化

在采用流水线并行时,我们希望在正向和反向传播中并行地发送和接收张量。每台DGX A100服务器都配备了8块InfiniBand(IB)网卡。然而,不幸的是,发送和接收操作是点对点的,仅发生在两台服务器上的一对GPU之间,这使得在流水线内部的一次通信调用中充分利用所有8块网卡变得困难。

但我们可以利用同时使用张量模型并行和流水线模型并行的优势来减少跨节点通信的开销。特别是,我们注意到,在每个Transformer层的输出(在MLP块的𝑔操作之后,如图5a所示)会在张量并行维度上进行复制。因此,在连续两个流水线阶段中执行张量模型并行的进程会发送和接收完全相同的张量集合(如图9a所示)。

对于足够大的模型,我们采用8个张量模型并行。这意味着,在相邻的多GPU服务器上的对应GPU之间,我们需要重复发送相同的张量集8次。为了减少这种冗余,我们可以在发送端将张量分割成等大小的块,然后仅使用接收端GPU自身的InfiniBand网卡,将其中一个块发送给下一个节点上对应的进程(例如,在图9中,进程1发送给进程3,进程2发送给进程4)。

由于有8个张量模型并行进程,因此每个块的大小将是原来的八分之一。接着,在接收端,我们可以通过NVLink执行all-gather操作(这比InfiniBand互连快得多)来重新组合成完整的张量。这一过程如图9b所示。我们称之为“分散/收集”通信优化。这种优化有助于更好地利用DGX A100服务器上的多个InfiniBand网卡,并使得如交错调度等更密集的通信计划变得可行。

从数量上看,采用“分散/收集”通信优化后,每对连续阶段之间所需的总通信量减少到了𝑏𝑠ℎ/𝑡,其中𝑡是张量模型并行的大小,𝑠是序列长度,ℎ是隐藏层大小(在我们的实验中,𝑡=8)。

4.2 计算优化

为了实现高性能,我们对计算图实施了三项针对模型的特定优化。首先,我们改变了Transformer层中的数据布局,以避免内存密集型的转置操作,并启用带步长的批量GEMM(通用矩阵乘法)内核的使用。

具体来说,我们将数据布局从[𝑏, 𝑠, 𝑎, ℎ]更改为[𝑠, 𝑏, 𝑎, ℎ],其中𝑏、𝑠、𝑎和ℎ分别代表批次、序列、注意力头和隐藏层大小维度。其次,我们使用PyTorch JIT[10]为一系列逐元素操作(如bias + GeLU和bias + dropout + add)生成了融合内核。

最后,我们创建了两个自定义内核,以实现缩放、掩码和softmax(归约)操作的融合:一个用于支持通用掩码(如BERT等模型中使用),另一个用于支持隐式因果掩码(如GPT等自回归模型中使用)。我们将在下一节中量化这些优化的效果。

5 总结

在本文中,我们展示了如何通过组合节点间流水线并行(PTD-P中的一部分)、节点内张量并行和数据并行,在训练具有万亿参数的大型模型时实现高总吞吐量(502 petaFLOP/s)。这一方法使得端到端训练在合理时间内完成(对于万亿参数的模型,预计训练时间约为3个月)。

我们讨论了每种并行类型所涉及的各种权衡取舍,以及在组合它们时需要仔细考虑的相互作用。尽管本文的实施和评估以GPU为中心,但许多这些理念也适用于其他类型的加速器。

具体而言,以下是一些与加速器类型无关的想法:a) 智能划分模型训练图,以最小化通信量同时保持设备活跃;b) 通过操作符融合和精心设计的数据布局来减少内存绑定内核的数量;c) 其他特定领域的优化(例如,散聚优化)。

如何学习大模型 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%免费

在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值