大模型(Large Models)的训练是近年来人工智能领域的核心技术之一,尤其是在自然语言处理、计算机视觉等任务中,如 GPT、BERT 等模型的成功背后,离不开复杂的训练过程。本文将为你介绍大模型是如何训练的,包括数据准备、模型架构、训练方法和硬件支持等方面。
前排提示,文末有大模型学习独家资料包哦!
01 大模型训练总体架构
如何利用计算中心成千上百的AI加速芯片的集群,训练参数量超过百亿的大规模模型?并行计算是一种行之有效的方法,除了分布式并行计算相关的技术之外,其实在训练大模型的过程还会融合更多的技术,如新的算法模型架构和内存/计算优化技术等。
这篇文章梳理我们在大模型训练中使用到的相关技术点,主要分为三个方面来回顾现阶段使用多AI加速芯片训练大模型的主流方法。
- 分布式并行加速: 并行训练主要分为数据并行、模型并行、流水线并行、张量并行四种并行方式,通过上述四种主要的分布式并行策略来作为大模型训练并行的主要策略。
- 算法模型架构: 大模型训练离不开Transformer网络模型结构的提出,后来到了万亿级稀疏场景中经常遇到专家混合模型MoE都是大模型离不开的新算法模型结构。
- 内存和计算优化: 关于内存优化技术主要由激活Activation重计算、内存高效的优化器、模型压缩,而计算优化则集中体现在混合精度训练、算子融合、梯度累加等技术上。
02 大模型训练的目标公式
超大模型训练的总体目标就是提升总的训练速度,减少大模型的训练时间,你知道啦,毕竟训练一个大模型基本上从按下回车的那一刻开始要1到2个月,是很蛋疼的。下面主要看一下在大模型训练中的总训练速度的公式:
上面公式当中,单卡速度主要由单块AI加速芯片的运算速度、数据IO来决定;而加速芯片数量这个很清楚,数量越多增加训练速度;而多卡加速比则是有计算和通讯效率决定。
我们再把使用到技术跟这个公式关联在一起:
-
单卡速度: 单卡速度既然是运算速度和数据IO的快慢来决定,那么就需要对单卡训练进行优化,于是主要的技术手段有精度训练、算子融合、梯度累加来加快单卡的训练性能。
-
加速芯片数量: 理论上,AI芯片数量越多,模型训练越快。但是,随着训练数据集规模的进一步增长,加速比的增长并不明显。如数据并行就会出现局限性,当训练资源扩大到一定规模时,由于通信瓶颈的存在,增加计算资源的边际效应并明显,甚至增加资源也没办法进行加速。这时候需要通讯拓扑进行优化,例如通过ring-all-reduce的通讯方式来优化训练模式。
-
多卡加速比: 多卡加速比既然由计算、通讯效率决定,那么就需要结合算法和集群中的网络拓扑一起优化,于是有了数据并行DP、模型并行MP、流水线并行PP相互结合的多维度混合并行策略,来增加多卡训练的效率。
一. 数据准备:海量数据的基础
大模型的训练需要大量的数据,因为它们需要从海量信息中学习模式和规律。数据的质量和数量对模型的性能有着直接影响,以下是数据准备的几个关键步骤:
数据收集:大模型通常依赖于广泛的文本数据,像 GPT-3、BERT 这样的大模型,会从互联网上抓取大量公开可用的数据,涵盖百科、新闻、社交媒体、图书等多种文本来源。
数据预处理:收集到的数据需要进行清洗和整理。比如,去除重复信息、纠正拼写错误、过滤掉不相关或低质量的数据。还需要将文本转换为模型可以理解的格式,如将文字转化为数字表示。
分词和标记化:语言模型会将输入的文本进行分词,转化为一个“词片段”或“子词”。这一过程叫做标记化(tokenization),比如“学习”可以被拆解成“学”和“习”,或按更小的单元来处理。这是大模型理解语言的第一步。
二. 模型架构:基于 Transformer 的核心
自从 2017 年Transformer架构被提出后,几乎所有的大模型都采用了这种架构。Transformer 的核心是自注意力机制(Self-Attention),它允许模型在处理一个单词时,可以“关注”到句子中的其他单词,这使得模型能够更好地理解上下文和复杂的语言关系。
编码器与解码器:Transformer 包括编码器和解码器部分。比如,BERT 模型使用了只包含编码器的部分,它通过双向注意力机制同时考虑上下文信息,适合于理解任务。而 GPT 系列模型则使用了只包含解码器的部分,它更擅长生成文本。
层数和参数量:大模型之所以被称为“大”,主要是因为其包含了极多的层数和参数。比如,GPT-3 拥有 1750 亿个参数,这意味着模型拥有巨大的“容量”去学习复杂的模式和语义。
三. 训练方法:预训练与微调
大模型的训练通常分为两个阶段:预训练(Pre-training)和微调(Fine-tuning)。
预训练:在预训练阶段,模型通过海量的无标签数据进行自监督学习。比如,BERT 使用了掩码语言模型(Masked Language Model)任务,它会随机掩盖一些词,然后让模型去预测这些被掩盖的词是什么。通过这种方式,模型学会了丰富的语义表示。
微调:预训练后的模型会在特定的任务上进行微调。例如,在情感分析、机器翻译或文本分类任务上使用带标签的数据进行训练。这一步骤使得预训练的大模型能够适应各种下游任务。
四. 硬件支持:分布式计算和并行化
大模型的训练需要强大的计算资源,特别是当模型参数量达到数十亿甚至上千亿时,单台计算机已经无法承担训练任务。因此,分布式计算和并行化技术成为大模型训练的关键。
GPU 和 TPU:图形处理器(GPU)和张量处理单元(TPU)是深度学习模型训练的主要硬件支持。它们可以并行处理大量的矩阵运算,这大大加速了模型的训练过程。像 GPT-3 这样的大模型通常在数千块 GPU 或 TPU 上进行训练。
分布式训练:由于数据和模型参数的规模巨大,模型的训练会采用分布式训练方法,将计算任务分布到多台机器上并行处理。常用的技术包括数据并行(Data Parallelism)和模型并行(Model Parallelism)。
数据并行:将训练数据划分成不同的部分,分别在多台机器上进行训练,每台机器有一个完整的模型副本。
模型并行:将模型本身划分成不同的部分,每台机器负责训练模型的不同部分,这种方法常用于处理非常大的模型参数。
五. 训练挑战:时间、能耗与优化
大模型的训练是一个复杂且昂贵的过程,通常需要耗费数周甚至数月的时间,成本高达数百万美元。除了硬件成本外,训练过程中还面临一些技术挑战:
梯度消失与爆炸:深度模型中可能会出现梯度消失或爆炸的问题,特别是在非常深的神经网络中。这会导致模型无法有效训练。为了解决这个问题,常常采用梯度裁剪或优化算法的调整。
超参数调优:模型的训练涉及到大量的超参数,如学习率、批量大小等。这些超参数的选择对训练效果至关重要。通常,研究人员会进行大量实验,测试不同超参数组合的效果。
能耗问题:大模型的训练消耗大量能源,也引发了对环境影响的讨论。为了应对这一问题,研究人员正在开发更高效的模型架构和算法,以减少能耗。
六. 未来发展方向:高效训练与模型压缩
随着大模型越来越大,研究人员也在探索如何提高训练效率以及如何压缩模型,使其在不显著降低性能的前提下变得更轻量、更高效。
模型蒸馏(Model Distillation):通过训练一个较小的模型去模仿大模型的行为,使得小模型能够以更少的计算资源实现接近大模型的性能。
稀疏训练(Sparse Training):稀疏训练方法通过减少模型中的不必要连接,降低模型的计算复杂度。稀疏性允许模型在不牺牲太多性能的情况下大幅度减少参数数量。
混合精度训练:为了提高计算效率,研究人员使用混合精度训练,即将部分计算转换为更低精度的浮点数,以减少内存占用和计算量。
总结来说,大模型的训练过程涉及海量数据、复杂的模型架构、高效的硬件支持和优化的训练方法。随着技术的不断进步,大模型将变得更加强大和高效,推动 AI 在更多领域取得突破。
随着现在的模型越来越大,训练数据越来越多时,单卡训练要么太慢,要么无法存下整个模型,导致无法训练。当你拥有多张GPU(单机多卡,多机多卡)时,你就可以通过一些并行训练的方式来解决你的问题。常见的并行方法有以下四种:
数据并行(DP):每个GPU都加载全量模型参数,将数据分割成多块输入到每个GPU中单独处理,但在计算loss和梯度时会有同步机制。
模型张量并行(TP):每个tensor被分割成多块(根据场景按行或者列分割)存储在不同的GPU上,每个GPU单独计算,最后同步汇总到一块,类似于transformer中的多头,假如每个头的计算都在一张单独的gpu上,计算完后将所有gpu的结果concat到一起再分发到每张gpu上。
流水线并行(PP):将模型按照层拆分,不同的层存储在不同的gpu上,类似于流水线的形式,数据先进入到前面的层,输出结果传到其他GPU上进入到后面的层。反传同理。
ZeRO:属于数据并行的范畴,但又很不一样,在ZeRO中会将模型参数、优化器参数、梯度等分片到不同的GPU上,ZeRO的方法可以配合张量并行或者流水线并行一起使用,但在配合TP或者PP时,通常只启用优化器参数的分片,其他的分片可能会带来不好的效果。此外ZeRO-offload还可以将一些计算量小且使用低频的参数放置在CPU上,比如优化器参数和参数更新的计算,或者混合精度训练时,fp32的参数,这些都可以放在CPU上,在不明显影响计算效果的同时,节约GPU显存。
数据并行
数据并行最常见的是DP(Data Parallel)和DDP(Distributed Data Parallel),DP和DDP的不同在于:
1)DP是基于多线程实现的,DDP是基于多进程实现的,每个GPU受单独的进程控制,不受GIL锁的限制。
2)DP只能在单机上使用,DDP单机和多机都可以使用。
3)DDP相比于DP训练速度要快,但并不绝对,有些场景下当GPU的通讯效率低时可能会更慢。
4)DP存在多次数据交换,DDP只存在一次梯度交换,且是通过GPU之间相互交换的方式融合所有的数据。
ZeRO数据并行
如上图所示,Baseline是指每张GPU都存储所有的参数,包括模型权重、梯度、优化器状态,除此之外其实还有激活层、临时存储,不可用的内存碎片等。
Pos:优化器状态分片
Pos+g:优化器状态和梯度分片
Pos+g+p:优化器状态、梯度和权重参数分片。
ZeRO相比于DP来说,主要在于各种参数分布在不同的GPU上,当在运行计算时,每个GPU会去同步完整的参数去计算。假如给定一个3层的模型,每层有3个参数:
给定3个GPU去分片存储不同的权重块:
给定输入当到达La层时,在GPU0上只有a0参数,此时GPU0会从GPU1和GPU2上同步a1和a2组合成完整的参数进行计算,计算完后就释放参数,对于GPU1和GPU2同理。所以这里和张量并行是不太一样的,这里会同步全量的参数。
流水线并行
流水线并行是将模型按层拆分存储到不同的GPU上,假定给定一个8层的模型和2个GPU,如下所示:前4层在GPU0上,后4层在GPU1上,在前向计算过程中先在GPU0上计算,然后将GPU0上的输出同步到GPU1上计算。反向传播同理。
流水线并行的方式存在一个问题,后面层需要等前面的计算完才能开始计算,会导致GPU在一段时间是闲置的,如下图所示:
为了让GPU的闲置时间减少,在流水线并行的思路上引入数据并行,将原来的mini batch分割成更小的macro batch,让整个训练如下图所示:
张量并行
张量并行是将一个完整的tensor分割成多块存储到不同的GPU上,流水线并行解决不了一个GPU无法存储一个模型layer的情况,而张量并行可以解决这类问题。详见Megatron-LM的论文。
在transformer架构中主要是有线性层和GeLU一类的激活函数组成,对模型的权重按照行或者列分块时,线性矩阵运算如下:按照列拆分权重时,输入不需要拆分,最终通过concat组合结果;按行拆分权重时,输入也需要拆分,最终通过相加组合结果。从这里的特性也可以知道,假定一个函数为GeLU(XA)B,对于激活函数里面的A按列拆分可以在单个GPU中完成激活计算,此时对应的B可以按行计算,以上所有操作都可以只在各自的GPU中完成,较少通信操作,最后才同步合并结果。
适用场景
单GPU
当模型可以存储在单GPU上:正常训练;
当模型不能存储在单GPU上:可以使用ZeRO-Offload CPU等方法,让CPU去承载部分参数。
单机多GPU
当模型可以存储在单GPU上:DDP(推荐),ZeRO(可能会提效);
当模型不能存储在单GPU上:PP,ZeRO,TP。但最大层无法放在单GPU上时,就只能使用TP、ZeRO。
多机多GPU
当节点间通讯比较快时:ZeRO,PP+TP+DP;
当节点间通讯比较慢时:DP+TP+PP+ZeRO-1(ZeRO-1是指只对优化器参数做分片)。
如何零基础入门 / 学习AI大模型?
大模型时代,火爆出圈的LLM大模型让程序员们开始重新评估自己的本领。 “AI会取代那些行业?
”“谁的饭碗又将不保了?
”等问题热议不断。
不如成为「掌握AI工具的技术人」
,毕竟AI时代,谁先尝试,谁就能占得先机!
想正式转到一些新兴的 AI 行业,不仅需要系统的学习AI大模型。同时也要跟已有的技能结合,辅助编程提效,或上手实操应用,增加自己的职场竞争力。
但是LLM相关的内容很多,现在网上的老课程老教材关于LLM又太少。所以现在小白入门就只能靠自学,学习成本和门槛很高
那么我作为一名热心肠的互联网老兵,我意识到有很多经验和知识值得分享给大家,希望可以帮助到更多学习大模型的人!至于能学习到多少就看你的学习毅力和能力了 。我已将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。
这份完整版的大模型 AI 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费
】
👉 福利来袭
CSDN大礼包:《2025最全AI大模型学习资源包》免费分享,安全可点 👈
全套AGI大模型学习大纲+路线
AI大模型时代的学习之旅:从基础到前沿,掌握人工智能的核心技能!
640套AI大模型报告合集
这套包含640份报告的合集,涵盖了AI大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师,还是对AI大模型感兴趣的爱好者,这套报告合集都将为您提供宝贵的信息和启示。
👉学会后的收获:👈
• 基于大模型全栈工程实现(前端、后端、产品经理、设计、数据分析等),通过这门课可获得不同能力;
• 能够利用大模型解决相关实际项目需求: 大数据时代,越来越多的企业和机构需要处理海量数据,利用大模型技术可以更好地处理这些数据,提高数据分析和决策的准确性。因此,掌握大模型应用开发技能,可以让程序员更好地应对实际项目需求;
• 基于大模型和企业数据AI应用开发,实现大模型理论、掌握GPU算力、硬件、LangChain开发框架和项目实战技能, 学会Fine-tuning垂直训练大模型(数据准备、数据蒸馏、大模型部署)一站式掌握;
• 能够完成时下热门大模型垂直领域模型训练能力,提高程序员的编码能力: 大模型应用开发需要掌握机器学习算法、深度学习框架等技术,这些技术的掌握可以提高程序员的编码能力和分析能力,让程序员更加熟练地编写高质量的代码。
👉 福利来袭
CSDN大礼包:《2025最全AI大模型学习资源包》免费分享,安全可点 👈
这份完整版的大模型 AI 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费
】
作为普通人,入局大模型时代需要持续学习和实践,不断提高自己的技能和认知水平,同时也需要有责任感和伦理意识,为人工智能的健康发展贡献力量。