L大语言模型从理论到实践
阅读 PDF ↗
CHAPTER 27

模型规模及资源预算

一个模型能否在设备上运行,以及能否在期限内完成训练,是两个不同问题。前者取决于峰值状态和工作区,后者取决于总工作量与有效处理速度。只给参数量,既不能唯一确定显存,也不能唯一确定设备数。本章从模块形状出发,建立参数、计算、存储与期限之间可以逐项解释的关系。

本章负责推导工作负载需要多少资源。下一章讨论 GPU、网络和存储怎样供给这些资源,分布式训练章再解释状态如何切分、通信怎样执行。以下预算均保留明确假设;构造数值例题不作为任何具体硬件的实测性能。

假设与适用范围

除另行说明外,考虑自回归 Transformer,查询总宽度满足 \(h_qd_h=d\),键和值等宽;线性层不含偏置,前馈层采用三个矩阵的门控结构。将一次乘法与一次加法计为两个浮点操作。参数存储、缓存、激活和工作区分别计量,所有内存先换算为字节后再求和。

27.1计量对象及单位

符号 含义
\(L,d,V,d_f\) 层数、隐藏宽度、词表大小、前馈中间宽度。
\(h_q,h_{kv},d_h\) 查询头数、键值头数、每头宽度。
\(B,T,D\) 一次计算的序列批量、序列长度、整个训练过程消费的词元数。
\(P,F\) 参数数与浮点操作数,二者不能混用。
\(b_w,b_g,b_c\) 权重、梯度、缓存每元素字节数。
\(N,S,u\) 设备数、时间预算(秒)、按指定口径定义的有效利用率。
\(R_{\mathrm{peak}},\beta\) 单设备峰值操作率、有效数据传输带宽。

浮点操作数(Floating-point Operations,FLOPs)表示完成给定工作量所需的操作数量;FLOP/s 才是每秒操作率。参数数是独立可学习标量的数量。共享同一矩阵两次使用不会增加独立参数,却可能增加计算次数。

十进制 GB 为 \(10^9\) 字节,二进制 GiB 为 \(2^{30}\) 字节。若模型含 \(7\times10^9\) 个参数,每参数两字节,权重为 \(14\times10^9\) 字节,约 \(13.04\) GiB。将“7B”与“7 GiB”混为一谈,会在预算第一步就产生错误。1

峰值还必须带时间语义。训练过程中权重、梯度、保存激活、通信缓冲和检查点暂存的生存区间不同,逐项峰值直接相加可能过于保守;只记录每项平均值又可能漏掉同时存在的瞬时峰值。初步预算可先给保守上界,再用执行时间线细化。

27.2参数量核算

注意力及门控前馈层

查询投影 \(W_Q\in\Real^{d\times h_qd_h}\),键值投影 \(W_K,W_V\in\Real^{d\times h_{kv}d_h}\),输出投影 \(W_O\in\Real^{h_qd_h\times d}\)。因此

\begin{align} P_{\mathrm{attn}} &=d h_qd_h+2d h_{kv}d_h+h_qd_hd\tag{27.1}\\ &=2d^2+2d h_{kv}d_h. \tag{27.2}\end{align}

第二行使用了 \(h_qd_h=d\);若结构不满足这一条件,必须保留第一行。GQA 减少键值投影参数,但查询和输出两项没有因此消失。

门控前馈采用两条上投影和一条下投影,矩阵形状分别为 \(d\times d_f,d\times d_f,d_f\times d\),故

\[ P_{\mathrm{ffn}}=3dd_f. \tag{27.3}\]

普通两矩阵前馈则为 \(2dd_f\)。比较两种前馈时要固定宽度还是固定参数预算,应先作选择;不能把系数二与三的差异忽略后宣称同样规模。

若每层有两组只含缩放参数的 RMSNorm,末尾还有一组,则归一化参数为 \((2L+1)d\)。若改为同时含缩放与偏置的 LayerNorm,需要按实际数量重新计数。偏置虽常是小项,精确统计仍应说明是否包含。

输入输出共享及专家层

输入嵌入参数为 \(Vd\)。输出投影若独立,再增加 \(Vd\);若与输入共享,则独立存储只计一次。设 \(\tau=1\) 表示共享,\(\tau=2\) 表示独立,在上述同构稠密结构下

\[ P=\tau Vd+L(2d^2+2dh_{kv}d_h+3dd_f)+(2L+1)d. \tag{27.4}\]

学习到的绝对位置表、额外任务头或查询键归一化参数不包含在该式中,存在时必须逐项加入。

对于专家层,若每个专家为门控前馈,独立路由专家总参数为 \(E\cdot3dd_e\);每词元执行的专家矩阵规模近似为 \(k\cdot3dd_e\)。共享专家、路由器和注意力另计。激活参数影响本次计算,总参数影响需要保存的模型状态。它们不能在显存公式中互换。路由不均衡还会使某设备的实际负载偏离平均值,详见第36章《混合专家模型》

参数量核算

例15.1

构造模型取 \(L=12,d=1024,V=32000,h_q=16,h_{kv}=4,d_h=64,d_f=2816\),输入输出共享,归一化采用上述 RMSNorm 配置。注意力每层参数为

\[ 2(1024)^2+2(1024)(4)(64)=2621440. \tag{27.5}\]

前馈每层为 \(3(1024)(2816)=8650752\)。12层主干矩阵共 \(135266304\) 个参数,嵌入为 \(32768000\),归一化为 \(25600\),合计

\[ P=168059904. \tag{27.6}\]

若只把输出改为独立矩阵,增加 \(32768000\) 个参数。若只把键值头由4改成16,每层增加 \(2d(16-4)d_h\) 个参数;其影响不等于把整个模型参数乘四。

27.3矩阵计算量及训练近似

线性层前向及反向

\(X\in\Real^{n\times a}\)\(W\in\Real^{a\times b}\),输出 \(Y=XW\)\(nb\) 个元素,每个元素执行 \(a\) 次乘法和约 \(a\) 次加法,故前向近似 \(2nab\) FLOPs。该线性层有 \(ab\) 个参数,因此每行输入的矩阵计算约为 \(2P_W\)

反向需要 \(\overline X=\overline YW^{\mathsf T}\)\(\overline W=X^{\mathsf T}\overline Y\),两项各约 \(2nab\),前向与反向合计约 \(6nab\)。这解释了稠密模型训练中常用 \(6PD\) 估计的来源:每词元约执行一次前向与两次同阶矩阵反向。

它不是所有参数都精确执行六次操作。查表、共享参数的多次使用、冻结模块、优化器更新、专家路由和非矩阵算子都需要单独判断。尤其在门控网络中,逐元素乘法和激活导数有额外成本;大矩阵占主导时才适合把它们作为次阶项。

注意力的长度平方项

对每条序列,\(QK^{\mathsf T}\) 的计算近似为 \(2h_qT^2d_h\),再与值矩阵相乘也约为同量级,因此

\[ F_{\mathrm{interaction}}\approx4BT^2h_qd_h=4BT^2d \tag{27.7}\]

表示常规密集实现的两个主要矩阵乘法,不含投影与 Softmax。利用因果三角结构的专用实现可能减少实际算术,但仅把未来分数设为负无穷的密集实现不一定节省计算。

令每层主干线性参数为 \(P_\ell\),输入输出投影的执行参数按实际路径统计,整个前向可以近似写为

\[ F_{\mathrm{fwd}}\approx2BT\left(\sum_{\ell=1}^{L}P_\ell+Vd\right) +4LBT^2d+F_{\mathrm{elementwise}}. \tag{27.8}\]

输入查表不按一次 \(Vd\) 密集矩阵乘法计算,输出全词表投影却需要该项。权重共享减少存储,不删除输出计算。长上下文下第二项不能总被 \(2PBT\) 吸收。

\(P_\ell\approx12d^2\) 的常见量级作粗略比较,注意力交互与该层线性前向之比约为 \(\frac{T}{6d}\)。长度相对宽度很大时,忽略交互项会系统性低估成本。该比例来自给定参数近似,不是所有模型统一的转折点。

重计算及有效工作量

激活重计算(Activation Recomputation)通过丢弃部分中间量,在反向时重新执行相应前向,从而用计算换显存。若原训练前向计算为 \(F_f\)、反向为 \(F_b\),额外重算为 \(F_r\),实际计算为 \(F_f+F_b+F_r\),不能仍把全部成本记成固定 \(6PD\)

FlashAttention 等算法减少注意力中间矩阵的显式存储和数据搬运(Dao 等 2022),不意味着注意力关系的数学定义发生变化。使用同一公式计算的两个内核,可以因读写量、重算与硬件利用率不同而具有不同时间。资源报告应分开模型有效工作量、实际执行工作量与墙钟时间。

27.4推理显存及并发容量

权重存储及量化开销

未量化权重存储为 \(Pb_w\)。若使用 \(q\) 位量化且每 \(g\) 个参数共享一个占 \(b_s\) 字节的尺度,忽略边界取整时

\[ M_w\approx \frac{Pq}{8}+(\frac{P}{g})b_s+M_{\mathrm{other}}. \tag{27.9}\]

\(M_{\mathrm{other}}\) 包含零点、未量化层、对齐和打包元数据。某些后端还需临时反量化工作区。标称四位不能保证总显存恰为 BF16 的四分之一,也不能保证速度更快。

变长请求及键值缓存

对同构 GQA,若第 \(i\) 个并发请求已缓存 \(T_i\) 个位置,则

\[ M_{\mathrm{KV}}=2Lh_{kv}d_hb_c\sum_{i=1}^{B}T_i. \tag{27.10}\]

当全部请求长度相同才化为 \(2LBTh_{kv}d_hb_c\)。这里的长度包含已处理提示与已生成内容,不能只统计最终输出。共享前缀、滑窗淘汰、潜在状态和跨设备切分会改变实际驻留方式,需替换相应状态模型。

若分页块容量为 \(p\) 个位置,且每条请求独立分配整块,则实际保留槽位为 \(\sum_i p\lceil \frac{T_i}{p}\rceil\)。内部浪费小于 \(Bp\) 个位置,但还存在页表与运行时保留。共享前缀时不能同时按逻辑引用数和物理页数重复统计。

并发容量约束

设设备可用显存为 \(M_0\),权重及固定运行时占用 \(M_f\),给定长度 \(T\) 的单请求缓存为 \(m(T)\),工作区上界为 \(W(B,T)\),则并发必须满足

\[ M_f+B m(T)+W(B,T)\le M_0. \tag{27.11}\]

若假设工作区固定,可先求缓存约束的整数上界;实际工作区随批处理变化时,需要在候选并发上逐项计算。平均请求长度只描述典型状态,不能保证长请求同时到达时不越界。

对于前述构造模型,取缓存每元素两字节,单请求每位置缓存为 \(2(12)(4)(64)(2)=12288\) 字节。缓存8192个位置需要 \(96\) MiB,32个同长请求需要 \(3\) GiB。若键值头变成16,其缓存变成四倍;权重、工作区和服务时延仍需分别计算。

27.5训练状态、激活及分片

每参数字节数来自哪些状态

一种混合精度 Adam 配置保存两字节训练权重、两字节梯度、四字节主权重以及两个四字节矩估计,总计每参数16字节。这个数字来自具体状态表,而不是 Adam 的不可变常数。梯度累积可能使用四字节,某些实现不保留独立主权重,低精度优化器又会采用其他布局。

状态 本例每参数字节数 用途
计算权重 2 前向与反向的矩阵运算。
梯度 2 本次更新方向。
主权重 4 高精度参数累积。
一阶矩与二阶矩 8 自适应更新统计。

冻结基座不再为基座计算全部参数梯度和优化器状态,却通常仍需保存激活以向可训练适配器传递梯度。因此 LoRA 或 QLoRA 的显存不能只按可训练参数百分比乘全参数训练显存。

分片降低哪些驻留量

设权重、梯度、优化器相关状态分别为 \(M_w,M_g,M_o\),数据并行组有 \(N_d\) 个设备。理想均匀分片的驻留模型为

\begin{align} M_{\mathrm{DDP}}&=M_w+M_g+M_o,\tag{27.12}\\ M_{\mathrm{Z1}}&=M_w+M_g+\frac{M_o}{N_d},\tag{27.13}\\ M_{\mathrm{Z2}}&=M_w+\frac{M_g+M_o}{N_d},\tag{27.14}\\ M_{\mathrm{Z3}}&=\frac{M_w+M_g+M_o}{N_d.} \tag{27.15}\end{align}

这里按 ZeRO 的分阶段思想区分被分片对象(Rajbhandari 等 2019);具体执行协议在第29章《分布式训练》展开。公式没有包含临时聚合完整层参数的峰值、通信桶、预取和激活,也未保证所有层完全均匀。

若总参数状态112 GB,八设备理想全分片后平均为14 GB;但某一执行阶段仍可能临时聚合一个大层。因此用总状态除设备数只能给驻留基线,不能直接当作单设备峰值。

激活模型的结构前提

简单的线性保存模型可写为 \(M_a\approx c_aLBTdb_a\),其中 \(c_a\) 表示每层每位置保存多少个隐藏宽度等效元素。它应由实际计算图或测量校准,而非固定成一个普适常数。若显式保存注意力概率,还可能增加 \(O(LBh_qT^2)\) 元素;使用分块内核与重算后,保存结构发生变化。

峰值训练显存可组织为

\[ M_{\mathrm{train,peak}}=M_{\mathrm{resident}}+M_{\mathrm{activation}} +M_{\mathrm{gather}}+M_{\mathrm{communication}}+M_{\mathrm{workspace}}+M_{\mathrm{reserve}}. \tag{27.16}\]

各项同时驻留的时间应按执行顺序分析。流水并行可能保存多个在途微批的激活;张量并行可能分摊部分张量,也可能复制其他状态。因此不能对全部分项统一除以设备总数。

27.6带宽、时间及设备数

算术强度及不可突破的下界

算术强度(Arithmetic Intensity)定义为操作数与相应存储层数据搬运字节数之比 \(I=\frac{F}{Q}\)。忽略重叠细节时,单个工作负载的耗时至少满足

\[ t\ge\max(\frac{F}{R_{\mathrm{peak}}},\frac{Q}{\beta}). \tag{27.17}\]

一次调用若算术强度低,即使峰值矩阵吞吐很高,也可能受权重或缓存读取限制。提高批量可以复用权重,但同时增加缓存和延迟;性能问题不能只用峰值 FLOP/s 回答。

有效利用率及时间预算

设整个训练所需模型工作量为 \(F_{\mathrm{model}}\)\(N\) 个设备的指定精度峰值总和为 \(NR_{\mathrm{peak}}\)。按模型工作量定义有效利用率

\[ u=\frac{F_{\mathrm{model}}}{N R_{\mathrm{peak}}t_{\mathrm{wall}}}. \tag{27.18}\]

该定义将通信等待、数据等待、重算和其他开销反映在墙钟时间中。若另一个报告把重算计入分子,它采用不同口径,两个利用率不能直接比较。也不能将已包含通信损失的利用率再乘一次同样的通信折损系数。

在假设 \(u\) 对候选设备数近似稳定时,期限 \(S\) 要求

\[ N\ge\left\lceil\frac{F_{\mathrm{model}}}{R_{\mathrm{peak}}uS}\right\rceil. \tag{27.19}\]

扩容后 \(u\) 往往变化,因此严格预算需要 \(u(N,\text{拓扑},B,T)\) 的情景模型。显存可行性也依赖具体并行方式,不能总用另一个独立常数卡数表示。

同一模型的训练及推理预算

例15.2

沿用前面 \(L=12,d=1024,V=32000,h_q=16,h_{kv}=4,d_h=64,d_f=2816\) 的共享嵌入模型,总参数为 \(P=168059904\)。扣除归一化参数,参与主要线性映射的参数为 \(P_{\mathrm{lin}}=168034304\)。设处理约 \(D=10^9\) 个非填充位置、序列长度 \(T=2048\),忽略最后不满序列的边界修正。若每个独立块采用块内下一词元配对,有效监督量约为 \(\frac{D(T-1)}{T}\);本段计算量使用处理位置数 \(D\)。不使用激活重算,注意力按稠密计算计数,则主要训练计算为

\[ F\approx6P_{\mathrm{lin}}D+12LTdD =1.310195712\times10^{18}\ \mathrm{FLOP}. \tag{27.20}\]

第二项由每层每序列注意力前向 \(4T^2d\) 乘以前反向近似因子3,再乘 \(\frac{LD}{T}\) 得到。本例未计 softmax、逐元素运算和优化器更新,故是声明范围内的估算。

假设单设备峰值为 \(2\times10^{13}\) FLOP/s,该计数口径下端到端有效利用率为0.3,则运行约 \(218365.952\) 秒,即60.66小时。72小时期限下,计算量约束允许一个设备。容量还需独立检查:按每参数16字节保存训练状态,占2.5043 GiB;假设激活、工作区和余量合计4 GiB,峰值约6.5043 GiB,小于假定的16 GiB可用容量。4 GiB是构造输入,不能从参数数目推出。

同一模型切换到推理时,两字节权重占320.55 MiB;四条请求各缓存2048个位置,KV占 \(4\times2048\times12288=96\) MiB。若另预留512 MiB工作区,总计约928.55 MiB。这个容量预算不提供时延保证;实际吞吐必须使用推理阶段的形状、内核与带宽重新评估。由此,一组结构参数可以同时约束训练计算、训练驻留和推理缓存,但三个结果依赖不同的运行假设。

资源联合预算

例15.3

假设某稠密任务含 \(P=7\times10^9\) 参数、训练 \(D=10^{11}\) 词元,暂用 \(F=6PD=4.2\times10^{21}\) 操作的基线。每设备峰值设为 \(2\times10^{14}\) 操作每秒,模型利用率假设 \(.4\),期限为10天,即864000秒。计算约束为

\[ N_{\mathrm{compute}}=\left\lceil \frac{4.2\times10^{21}}{(2\times10^{14})(.4)(864000)} \right\rceil=61. \tag{27.21}\]

若拓扑要求设备数为八的倍数,可行候选从64开始。这里的61不是实测扩展曲线给出的答案;长上下文交互和重算若未包含在利用率口径中,必须另加工作量。

同一任务若采用本章16字节状态配置,总状态约104.31 GiB。设八路全分片,驻留状态约13.04 GiB,再假设激活、聚合、工作区和余量共8 GiB,则单设备约21.04 GiB,低于假设的40 GiB可用容量。该情景说明显存可能在八设备组内已经可行,而期限仍要求更大的集群。64设备的具体数据、张量和流水并行布局,以及其实际利用率,仍需由分布式执行方案确定。

算法27.1 构建资源可行情景

输入:模型配置、词元预算、长度与并发分布、精度、候选拓扑、期限和容量余量。输出:每个候选的分项预算、可行条件和仍待测量的系数。

  1. 按实际共享关系计数参数,分别建立总参数、执行矩阵和特殊状态清单。

  2. 对各拓扑计算权重、梯度、优化器、缓存、激活及峰值临时量;拒绝违反单设备容量约束的情景。

  3. 按线性、注意力交互与重算分解工作量,使用该拓扑的利用率假设估计时间;检查期限约束。

  4. 计算数据供给、检查点、CPU和主机内存需求,检查是否存在上游瓶颈。

  5. 分别代入基准、保守和压力假设,记录结论改变的边界,而非只输出一个设备数。

未知测量系数保留为区间,不用虚构的精确小数填补。最终选型前用目标环境测量校准,方法见算力基础设施章。

27.7主机、存储及数据供给预算

训练吞吐目标若为每秒 \(r_t\) 个词元,物化数据平均每词元占 \(b_t\) 字节,则纯输入带宽下界为 \(r_tb_t\);索引、压缩、重试和预取会增加其他开销。若运行时还需解析和分词,应使用对应步骤的实际处理速率估计 CPU 需求,而不直接按 GPU 数量乘固定核数。

检查点大小为 \(C\),允许写入窗口为 \(\Delta\),则平均有效写带宽至少为 \(\frac{C}{\Delta}\)。异步写入不删除数据,只是将等待转移到主机内存、队列和后台 I/O;产生速度长期大于写出速度时,队列仍会无限增长或触发阻塞。

总存储应分开原始数据、清洗数据、词元分片、检查点、评估结果、日志和中间资产。若保留 \(K\) 个完整检查点,每个大小 \(C\),至少需要 \(KC\),另加构建暂存和恢复副本。分片文件数量影响元数据操作与小文件开销,容量充足不保证读取吞吐足够。

资源供给与状态持久化形成闭环。任一阶段的持续处理率不足,都可能限制整条训练路径。
图 27.1 资源供给与状态持久化形成闭环。任一阶段的持续处理率不足,都可能限制整条训练路径。

27.8敏感性及预算表达

预算报告应给出假设变化如何影响结论。例如固定模型时,普通KV缓存随总驻留词元线性变化;密集注意力交互随单序列长度平方变化;模型利用率从 \(.4\) 降到 \(.3\) 时,在其他条件不变的近似下,所需设备时间增加三分之一。参数量翻倍则同时影响状态与线性计算,但不必把所有缓存维度也翻倍。

余量要标明用途。容量安全余量、故障备用设备、维护窗口和负载峰值是不同项;若某系数已经按高分位负载测得,再把同一负载波动完整重复加入,会高估预算。反过来,不能为了满足费用上限而把未知工作区当成零。

最终预算是可追溯的情景集合:每个情景绑定模型版本、数据量、精度、长度分布、并行配置、有效速度与余量。它允许读者解释某项变化造成的后果,并指出哪些假设必须在实施时重新测量。


  1. 硬件标称容量、操作系统显示和框架日志可能采用不同单位。有些界面虽写 GB,实际计算却用二进制除数,资源报告应列出原始字节数及换算规则。↩︎

WORKBOOK / 习题

配套习题与解析

先独立作答,再展开参考解析。选修题保留原书标记。

习题 27.1选修

取消 \(h_qd_h=d\) 假设,重新推导注意力参数量,并说明式27.2第二行何时失效。

展开参考解析

设查询头总宽为 \(h_qd_h\),键值总宽为 \(h_{kv}d_h\),输入及输出均为 \(d\),无偏置。四个矩阵参数之和为 \(dh_qd_h+2dh_{kv}d_h+(h_qd_h)d=2dd_h(h_q+h_{kv})\)。只有 \(h_qd_h=d\) 时首尾两项才合为 \(2d^2\);若键和值头宽不同,还应把两项分别写成 \(dh_{kv}d_k\)\(dh_{kv}d_v\),输出矩阵宽度相应修改。

习题 27.2

将参数例题改为独立输出矩阵、每层两组及末端归一化均改为带偏置的 LayerNorm,其他投影仍无偏置,重新计数全部参数。

展开参考解析

保留12层、每层两次归一化及末端一次归一化;补充约定末端也改为带缩放和偏置的LayerNorm,投影仍无偏置。矩阵主干为135266304,两个嵌入/输出矩阵为65536000,25次归一化各含 \(2d=2048\) 个参数,合计 \(200853504\)。若仅按题干字面修改层内24次而末端仍为RMSNorm,则总量为200852480;两答案相差末端新增的1024偏置,必须声明此配置。

习题 27.3

对矩阵乘法完整写出前向与两条反向的形状和操作量,说明冻结权重后哪些梯度可能仍需计算。

展开参考解析

\(Y=WX\)\(W\in\mathbb R^{d_o\times d_i}\)\(X\in\mathbb R^{d_i\times n}\)、上游 \(G\in\mathbb R^{d_o\times n}\)。前向约 \(2d_od_in\) FLOP;\(\nabla_WL=GX^\mathsf T\) 形状 \(d_o\times d_i\)\(\nabla_XL=W^\mathsf TG\) 形状 \(d_i\times n\),二者各约同样操作量。冻结 \(W\) 可省其参数梯度及状态,却不能在前面有可训练层时省去 \(\nabla_XL\)

习题 27.4

对长度分别为1000、2000、3000的请求及页长256,比较逻辑缓存位置数与独立分页后的保留位置数。

展开参考解析

逻辑长度总计6000,三条请求分别需要4、8、12页。因此分页保留的位置数为 \[N_{\rm slots}=256(4+8+12)=6144,\] 尾部浪费 \(6144-6000=144\) 个槽位。它只计独立尾块碎片,未计页表、预留块或前缀共享。

习题 27.5

某量化方案每128个参数保存一个四字节尺度,权重四位。求每参数平均存储字节数,并解释为什么还可能低估实际权重文件。

展开参考解析

每参数平均 \(\frac{4}{8}+\frac{4}{128}=0.53125\) 字节。相对两字节权重为 \(\frac{2}{0.53125}=\frac{64}{17}\approx3.765\) 倍压缩。逐行尾组、零点、对齐、未量化层和文件元数据都会增加实际尺寸;推理工作区另算。

习题 27.6

在16字节状态配置下将梯度改为四字节,重新推导 DDP 与各分片阶段的状态量。

展开参考解析

参数权重2字节,梯度4字节,主权重和两个矩合计12字节,故DDP为 \(18P\)。设均匀分片组 \(R\),ZeRO-1为 \((6+\frac{12}{R})P\),ZeRO-2为 \((2+\frac{16}{R})P\),ZeRO-3为 \(\frac{18P}{R}\)。这些仅为持久状态;聚合和通信峰值未包含。

习题 27.7

联合预算例题中,利用率降至 \(.3\) 且期限仍为10天,求计算约束与八设备拓扑取整结果。

展开参考解析

基线工作量 \(4.2\times10^{21}\),每卡有效速率 \(2\times10^{14}\times0.3=6\times10^{13}\)。期限864000秒,连续卡数81.0185,向上取整82;按8卡节点取整为88。需再次验证88卡拓扑能否保持所假定的0.3利用率。

习题 27.8

检查点每20分钟产生400 GB,后台有效写带宽为200 MB/s。队列能否长期稳定?给出同一单位下的推导。

展开参考解析

按十进制单位,平均到达率 \(\frac{400000}{1200}=333.33\) MB/s,大于200 MB/s服务率;每周期只能写240 GB,积压增加160 GB。单检查点写完需2000秒,故长期不稳定;临时缓存只能延迟溢出,不能消除平均速率差。

习题 27.9选修

设计包含长度峰值、数据供给降速和通信效率下降的三个压力情景,说明哪些影响已被利用率吸收,哪些必须单独加项。

展开参考解析

可分别取上下文峰值翻倍、数据有效带宽减半、跨节点通信时间翻倍。第一项增加KV并可能使注意力计算按长度平方增长,须重算工作量和峰值;第二项检查预取耗尽后的供给下界;第三项重算暴露通信时间。若有效利用率来自包含相同数据等待和通信的端到端窗口,不再重复增加这两项;若仅测内核效率,则需单独建模。报告每项口径和联合最坏情景,不能把三个独立最坏系数无条件相乘。

REFERENCES

参考文献

Dao, Tri, Daniel Y. Fu, Stefano Ermon, Atri Rudra, 和 Christopher Ré. 2022. 《FlashAttention: Fast and Memory-Efficient Exact Attention with IO-Awareness》. 2022年5月27日. https://arxiv.org/abs/2205.14135.
Rajbhandari, Samyam, Jeff Rasley, Olatunji Ruwase, 和 Yuxiong He. 2019. 《ZeRO: Memory Optimizations Toward Training Trillion Parameter Models》. 2019年10月4日. https://arxiv.org/abs/1910.02054.

搜索全书

搜索全书正文、习题与解析