AI大模型训练参数估算全攻略:参数量计算,一篇文章搞定!

随着大模型时代的到来,模型参数量、训练数据量、计算量等各方面急剧增长。参数规模方面,在过去的几年里,语言模型的参数规模从数亿增长到数千亿,甚至达到万亿级别。例如OpenAI的GPT-3拥有175B参数,而GPT MoE参数规模到达了1.8T;数据量方面,训练一个大模型通常需要达到T级别tokens;另外,由于参数规模和数据量庞大,随之带来的是巨大的计算量。那么如何对大模型中的各种参数(如模型参数量、计算量、训练时长、训练所需CPU数量、显存大小等)进行估算呢,闲言少叙,我们直接给出各种参数估算的依据或公式,仅供大家参考!

图片

大模型训练相关参数估算

1.模型参数量计算

模型涉及的各种参数如下:

P:参数量

L:模型层数

h:隐藏层维度

V:词表大小

L层Transformer模型可训练参数量为L ( 12h² + 13h ) + Vh,当隐藏层维度h较大时,可忽略一次项,模型参数量可以近似为:

P ≈ 12 * L * h²

前排提示,文末有大模型AGI-优快云独家资料包哦!

图片

因此,可估算不同版本LLama模型参数量,如下表所示:

图片

以GPT-3 175B模型架构为例,模型层数为96,隐藏层维度为12288,估算模型模型参数P ≈ 12 * L * h² = 174B,与模型给定参数基本一致。

2.计算量估算

可以近似的认为,在一次前向传递中,每个token,每个模型参数,需要进行2次浮点数运算 ,即一次乘法运算和一次加法运算。一次训练迭代包含了前向传递和后向传递, 后向传递的计算量是前向传递的2倍,因此,在一次训练迭代中,对于每个token,每个模型参数,需要进行2 x 3 = 6次浮点数运算。

我们以GPT3-175B模型训练为例,对于GPT3,每个token,每个参数进行了6次浮点数运算,再乘以参数量以及总token数就得到了总的计算量。GPT3的模型参数量为 174.6B,训练数据量为300B tokens。

所以,

GPT3训练的总计算量 = 6 x token数 x 模型参数量 = 6 x 174.6 x 10****9 x 300 x 109= 3.1428 x 1023 Flops

注:为方便计算,后面GPT3的模型参数量均按175B计算。

使用激活重计算技术可以用来减少中间激活显存,需要进行一次额外的前向传递,因此,在开激活重计算时,相当于有2次前向传递和1次后向传递(后向传递的计算量是前向传递的2倍),使用激活重计算的一次训练迭代中,对于每个token,每个模型参数,需要进行2 x 4 = 8次浮点数运算。在给定训练token数、硬件环境配置的情况下,

训练的总计算量= 8 x token数 x 模型参数量

3.训练时间估算

针对文本大模型AI训练侧算力存在如下对应关系:

图片

因此,可以得出:

图片

以GPT3-175B为例,假设有1024张40GB显存的A100,在300B tokens的数据上训练175B参数,A100的峰值性能为312TFlops,设GPU利用率为0.45(在百卡以上集群,GPU利用率约为30%~50%),则所需要的训练时间为34天。

训练时长 = ( 8 x 175 x 109 x 300 x 109) / (1024 x 312 x 1012 x 0.45) ≈ 2921340秒 ≈ 34天

4.训练所需CPU数量的估算

由前面AI训练侧算力供需关系模型,可以看出,在模型参数、预训练数据量一定的情况下,对于给定型号的GPU,训练时长越短,所需的GPU数量就越多,建设成本也就越高;反过来,GPU数量越少,训练时长也会拉长,等待成本也就越高。比较理想的情况就是,尽量提升GPU的峰值性能(如从英伟达A100到H100,再到B100,峰值性能从312TFlops到990TFlops,再到2250TFlops)、提升GPU利用率,然后在GPU数量和训练时长之间找一个平衡点。

图片

以GPT3-175B为例,在300B tokens的数据上训练175B参数量的GPT3,40GB显存A100的峰值性能为312TFlops,设GPU利用率为0.45,期望30天完成(训练时长2592000秒)

则需要的A100的数量= (8 x 175 x 109 x 300 x 109) / (2592000 x 312 x 1012x 0.45) ≈ 1154块

5.显存需求估算

显存需求主要取决于参数量和精度。显存需求分为推理显存需求和训练显存需求。

  • 推理显存估算

推理期间使用显存的主要是模型参数量,其它因素主要是前向计算开销,通常是模型参数权重的20%左右(经验估算),因此,推理显存公式如下:

推理显存 ≈ 1.2 x 模型参数量 x 精度(通常为2或4个字节)

  • 训练显存估算

在训练神经网络的过程中,占用显存的大头主要分为四部分:模型参数、前向计算过程中产生的中间激活、后向传递计算得到的梯度、优化器状态。训练大模型时通常会采用AdamW优化器,并用混合精度训练来加速训练,在一次训练迭代中,每个可训练模型参数都会对应1个梯度,并对应2个优化器状态(Adam优化器梯度的一阶动量和二阶动量)。设模型参数量为A,那么梯度的元素数量为A,AdamW优化器的元素数量为2A。在混合精度训练中,会使用float16的模型参数进行前向传递和后向传递,计算得到float16的梯度;在优化器更新模型参数时,会使用float32的优化器状态、float32的梯度、float32的模型参数来更新模型参数。因此,对于每个可训练模型参数,占用了(2+4)+(2+4)+(4+4) = 20bytes,使用AdamW优化器和混合精度训练来训练参数量为A的大模型,模型参数、梯度和优化器状态占用的显存大小为20Abytes。

训练显存 ≈ 20 x 模型参数量(字节)

以GPT-3的175B亿参数为例,推理显存估算约840GB的显存空间;训练显存估算约3500GB。

这与微软和英伟达给出的大模型状态显存估算一致,单个模型副本中每个参数量大约需要20倍于自身大小的空间占用,即至少需要3500GB的显存空间占用,而目前主流算力卡如A100、H100只有80GB的显存空间,所以,至少需要44块80GB显存的GPU才能放下一个模型副本。由于算力需求巨大,整个系统会有多个模型副本,因此,总的显存占用是很夸张的。此外,模型训练时,还需要保存激活值用于反向传播,激活值也将额外占用很大一部分空间。

图片

模型参数量与训练数据量

在大模型训练中,模型基础能力取决于训练数据量、模型参数量和算力。模型参数量越大、投入的训练数据越大,模型泛化能力越强(所谓泛化能力是指模型算法对于没有见过的样本的识别能力,可以理解为举一反三或是学以致用的能力,或者说适用性、准确性)。

但是,由于资源的限制,两者不大可能兼顾,OpenAI的研究结论是:与增加训练数据量相比,先增大模型参数量受益则会更好,用一千亿的模型训练两千亿的token和两千亿模型训练一千亿的token,后者的模型泛化能力会更高。

模型参数越多,模型能够捕捉到的数据特征和规律就越多,也就能够处理更加复杂的问题,当模型参数量增长超过一定阈值,模型能力表现出跃迁式的提升,表现出来语言理解能力、生成能力、逻辑推理能力等能力的显著提升,也就是通常所说的模型的涌现能力。百亿参数是模型具备涌现能力的门槛,千亿参数的模型具备较好的涌现能力。

模型规模一定的情况下,增加训练数据,也可以增加模型泛化能力,比如GPT-3的每个参数只训练1~ 2个token,DeepMind的研究表明,如果把一个大模型训练充分,需要把每个参数量训练20个token。也就是说,当前的很多千亿规模的大模型还需要用10倍左右数据进行训练,模型性能才能达到比较好的水平。

图片

大模型训练面临的瓶颈

在Transformer及大语言模型(LLMs)出现前,绝大部分的AI模型训练和推理,对算力、显存等硬件资源要求不高,使用单机CPU/GPU或分布式小集群即可满足需求,但是大语言模型的出现,让算力、显存、通信等方面均面临巨大的压力:

  • 算力瓶颈

进行大模型训练时,每输入一个token,整个模型中的每个参数上就要进行6~8次的浮点数运算,按本文前面的计算,如果以300B tokens的数据集来训练一个175B的GPT3模型,那么GPT3训练的总计算量达3.1428 x 1023Flops,而A100单卡算力只有312TFlops,不考虑单卡在集群中的性能折损,至少需要32年才能完成。假如希望在30天内完成训练,最简单粗暴的计算算法也需要384张卡(32 * 12 = 384张卡)才能完成,而实际上考虑集群配合、GPU利用率等因素,至少需要千卡规模才能在30天内完成。

  • 显存瓶颈

大模型训练中,显存压力非常大。以GPT-3的175B亿参数为例,前面计算得出的结果,训练显存估算约3500GB,A100、H100只有80GB的显存空间,所以,至少需要44块GPU才能放一个模型副本。

  • 通信瓶颈

由于大模型训练&推理通常都不能在单卡进行,所以我们需要多算力卡构成集群,不可避免的就存在服务器机内和机间通信,各计算单元需要频繁参数同步,通信性能将影响整体计算速度,如果通信瓶颈处理的不好,很可能导致集群规模越大,训练效率反而会降低。我们还是以GPT-3为例,一轮迭代时间在1030秒,一轮迭代内,一个GPU的TP通信量在500GB左右,单个GPU对外网络是200Gbps,超节点内网络(假如使用NVLink4)带宽450GB/s=3600Gbps,此时,TP通信使用机外网络和超节点内网络耗时分别为20秒和1.1秒,相比于迭代的1030秒而言,TP通信如果使用机外网络,通信时长的影响会非常的大,通信瓶颈成为不得不考虑的因素之一。


优快云独家福利

最后,感谢每一个认真阅读我文章的人,礼尚往来总是要有的,下面资料虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

在这里插入图片描述

如何学习AI大模型?

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

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

在这里插入图片描述

第一阶段: 从大模型系统设计入手,讲解大模型的主要方法;

第二阶段: 在通过大模型提示词工程从Prompts角度入手更好发挥模型的作用;

第三阶段: 大模型平台应用开发借助阿里云PAI平台构建电商领域虚拟试衣系统;

第四阶段: 大模型知识库应用开发以LangChain框架为例,构建物流行业咨询智能问答系统;

第五阶段: 大模型微调开发借助以大健康、新零售、新媒体领域构建适合当前领域大模型;

第六阶段: 以SD多模态大模型为主,搭建了文生图小程序案例;

第七阶段: 以大模型平台应用与开发为主,通过星火大模型,文心大模型等成熟大模型构建大模型行业应用。

在这里插入图片描述

👉学会后的收获:👈

• 基于大模型全栈工程实现(前端、后端、产品经理、设计、数据分析等),通过这门课可获得不同能力;

• 能够利用大模型解决相关实际项目需求: 大数据时代,越来越多的企业和机构需要处理海量数据,利用大模型技术可以更好地处理这些数据,提高数据分析和决策的准确性。因此,掌握大模型应用开发技能,可以让程序员更好地应对实际项目需求;

• 基于大模型和企业数据AI应用开发,实现大模型理论、掌握GPU算力、硬件、LangChain开发框架和项目实战技能, 学会Fine-tuning垂直训练大模型(数据准备、数据蒸馏、大模型部署)一站式掌握;

• 能够完成时下热门大模型垂直领域模型训练能力,提高程序员的编码能力: 大模型应用开发需要掌握机器学习算法、深度学习框架等技术,这些技术的掌握可以提高程序员的编码能力和分析能力,让程序员更加熟练地编写高质量的代码。

在这里插入图片描述

1.AI大模型学习路线图
2.100套AI大模型商业化落地方案
3.100集大模型视频教程
4.200本大模型PDF书籍
5.LLM面试题合集
6.AI产品经理资源合集

👉获取方式:
😝有需要的小伙伴,可以保存图片到wx扫描二v码免费领取【保证100%免费】🆓

在这里插入图片描述

### 计算大模型笔试题目 #### 题目一:理解大规模预训练模型的概念及其应用 解释什么是大规模预训练模型?列举至少三个当前流行的大规模预训练模型,并描述它们的主要特点和应用场景。 #### 题目二:评估不同架构下的性能表现 给定两个不同的神经网络结构——Transformer 和 RNN,在处理自然语言处理任务时,哪一个更适合用于构建大型语言模型?为什么? 对于大规模数据集上的序列建模任务而言,由于 Transformer 架构能够并行化计算注意力机制中的每一步骤,因此相比传统的循环神经网络(RNN),它通常具有更好的扩展性和更高的效率[^1]。 #### 题目三:优化技术的选择 在训练超大规模的语言模型过程中,为了提高收敛速度以及最终的效果,可以采用哪些常见的梯度下降算法变体?这些方法各自有什么优缺点? Adam 是一种自适应学习率的方法,通过估计参数的一阶矩向量 m_t (即均值) 及二阶矩向量 v_t (未中心化的方差),来动态调整每个权重的学习速率;而 LAMB 则是在 Adam 的基础上加入了层自适应因子,使得该算法能够在更大批量尺寸下稳定工作,特别适合于分布式环境下的高效训练[^2]。 ```python import torch.optim as optim optimizer_adam = optim.Adam(model.parameters(), lr=0.001) optimizer_lamb = optim.LAMB(model.parameters(), lr=0.001) ``` #### 题目四:量化感知训练的重要性 简述量化感知训练的意义所在。当我们将浮点数精度转换成较低位宽整型表示时,可能会遇到什么挑战?如何克服这些问题以保持模型准确性不受影响? 低精度运算不仅有助于减少内存占用和带宽需求,而且还可以加速推理过程。然而,直接降低数值范围可能导致信息丢失,从而引起预测误差增大。为此,可以在训练阶段引入模拟量化操作,让模型逐渐适应这种变化,进而减轻部署后的潜在负面影响[^3]。 #### 题目五:多GPU/TPU协同工作的策略 针对拥有多个 GPU 或 TPU 设备的情况,请说明有哪些有效的方式可以让设备之间更好地协作完成一次完整的前向传播与反向传播流程?具体实现上需要注意些什么事项? 分布式训练可以通过数据并行、模型并行等方式来进行。其中,数据并行是指将输入样本划分到各个节点上去独立执行相同的计算图;而模型并行则是指把整个网络切分成若干部分分配至不同硬件单元中依次运行。无论哪种方式都需要考虑通信开销最小化等问题[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值