一、预训练简介
1、大模型的构建流程
大规模无标注数据预训练+指令微调+对齐。
2、预训练是大模型构建的基础环节
3、大模型预训练任务
1)语言建模 (Language Modeling)
- = Next Token Prediction下一个词元预测。
- 形式化:给定一个词元序列w_{1} , w_{2} , \dotsc , w_{i - 1} ,进行最大似然估计,预测下一个词元w_{i}。
2)语言建模对预训练的意义
- 形式通用、便于扩展,因而可以采集到足量数据。
- 当预训练数据足够丰富时,大语言模型便能够学习到自然语言的生成规律与表达模式。
- 通过对词元更精准的预测,模型就可以更好地理解文本、建模世界语义知识。
二、预训练过程
1、确定模型结构
1)Tranformer解码器架构
- 主流大模型均采用Transformer架构
Transformer是由多层的多头自注意力(Multi-head Self-attention)模块堆叠而成的神经网络模型
- 大模型均采用Transformer解码器架构
原始的Transformer模型由编码器和解码器两个部分构成,而由于解码器架构对于任务的可扩展性,即生成式模型的语言建模任务和解码器适配,便于模型和数据的扩张。
2)Llama
不同大模型仅在局部有所区别,以Llama[1]为例,相比原Transformer架构,加入了以下结构:
-
Grouped Query Attention(GQA)分组查询注意力
减少存储键和值的内存开销,提高推理效率。 -
RMS Normalization均方根标准化
提高计算效率和训练的稳定性。 -
SwiGLU激活函数
以计算为代价优化结果。
3)Meta-Llama-3-8B
从huggingface下载Meta-Llama-3-8B,配置文件config.json:
config. json即定义了模型参数,对关键参数解释如下:
- architectures: LlamaForCausalLM //CausalLM即语言建模的预训练任务
- model type: llama,//从huggingface库加载lLLaMA模型结构
- hidden size:4096,//隐藏层大小
- intermediate size:14336,//每个隐藏层中间层的大小
- num attention heads:32,//注意力头数
- num hidden layers:32,//隐藏层数
- vocab size:128256//词表大小
2、确定分词器:Llama3分词器
1)分词器Tokenizer
基于tiktoken分词器。
采用BPE字节对编码 (Byte-Pair Encoding) 算法。
2)词表
- 大小:128256
- 包含特殊token
<| begin of text|>序列开始
<| end of text|>序列结束
未知token
3、数据准备
高质量预训练数据的准备包括数据收集、数据清洗、数据混合、分词。
预训练数据的数量、质量和多样性对于模型性能具有重要影响。
三代Llama逐步提高预训练数据的数量和质量,性能提升显著。
1)数据收集
-
常见预训练数据集
-
通用文本数据:训练语言理解和生成能力、通用知识
CommonCrawl[67%]: 从互联网上爬取的网页数据,多样、非结构化。
C4[15%]: 基于CommonCrawl进行了过滤,文本质量更高、更干净。
- 专业文本数据:扩充专业知识,提升任务解决能力
Github[4.5%]: 代码。
Wikipedia [4.5%]: 知识、且结构化。
Gutenberg and Books3[4.5%]: 书籍。
ArXiv[2.5%]: 学术论文。
Stack Exchange[2%]: 高质量问答,涵盖计算机科学、化学等多样领域。
2)清洗与混合
数据清洗:为了提高文本质量,需要一套数据清洗流程和方法,包括
-
过滤
质量过滤:过滤低质量文本
脱敏:删除含个人隐私的数据、有毒内容等
HTML处理:去除 tag提取文本、部分文本保留结构信息等 -
去重
去除重复文本:包括不同文档、文档内部、不同行等层级
数据混合:确定预训练数据组合中不同数据源的比例[1]
- 知识分类:对文本进行知识分类,以确定不同类别 (例如艺术和娱乐)文本的比例
- 在小参数量下进行试验得到较优比例:经过实验,Llama3选择的数据混合比例为大约50%通用知识、25%的数学和推理、17%的代码和8%的多语言
分词:将原始文本分割成模型可识别和建模的词元 (token)序列,作为大语言模型的输入数据。
4、训练参数设置
与传统神经网络的优化类似,大模型训练通常使用批次梯度下降算法来进行模型参数的更新,因此,训练参数对模型结果影响大。
关键参数包括批次大小、学习率及其调整策略、优化器及其参数、稳定训练技术等等。
下表展示了现有大语言模型的详细优化设置。
1)批次大小 (Batch Size)
在大模型预训练中,通常将批次大小设置为较大的数值,例如1M到4M个词元,从而提高训练的稳定性和吞吐量。
动态批次调整策略:在训练过程中逐渐增加批次大小,最终达到百万级别。
2)学习率 (Learning Rate)
- 预热阶段:通常采用线性预热策略,学习率将从一个非常小的数值 (例如0或者1 × 1 0^{ - 8})线性平稳增加,直到达到预设的最大阈值,一般占整个训练步骤的0.1%至0.5%。
- 衰减阶段:达到最大阈值之后学习率会开始逐渐衰减,以避免在较优点附近来回震荡。最后,学习率一般会衰减到其最大阈值的10%。常见的衰减策略有线性衰减,余弦衰减,平方根倒数衰减等。
3)优化器 (Optimizer)
- 常用Adam,AdamW:在优化中引入了三个超参数,在大模型训练中通常采用以下设置:β1=0.9,β2=0.95和epsilon = 1 0^{ - 8}。
- β1,β2分别表示一阶矩估计和二阶矩估计的指数衰减率。一阶矩估计和二阶矩估计用于计算梯度的移动平均值和平方的移动平均值,这两个参数的值决定了这两个移动平均值的更新速度;∈防止除以0。
4)稳定训练技术
- 梯度裁剪 (Gradient Clipping):防止梯度由于累乘效应而趋于0或无穷。
- 权重衰减 (Weight Decay):对损失函数做正则化,防止过拟合。
5、根据损失和评测结果调整数据和训练参数
1)观察损失 (loss)
2)语言模型基本能力评测指标
即生成文本和目标文本的拟合程度、符合人类语言使用习惯的程度(语言流畅通顺)。
使用困惑度 (Perplexity) 等指标。
3)大模型各维度能力评测基准 (benchmark)
- 通用知识:MMLU(英文) 、C-EVAL (中文) 等。
- 数学推理:GSM8K、Math。
- 代码:HumanEval。
如何系统学习掌握AI大模型?
AI大模型作为人工智能领域的重要技术突破,正成为推动各行各业创新和转型的关键力量。抓住AI大模型的风口,掌握AI大模型的知识和技能将变得越来越重要。
学习AI大模型是一个系统的过程,需要从基础开始,逐步深入到更高级的技术。
这里给大家精心整理了一份
全面的AI大模型学习资源
,包括:AI大模型全套学习路线图(从入门到实战)、精品AI大模型学习书籍手册、视频教程、实战学习、面试题等,资料免费分享
!
1. 成长路线图&学习规划
要学习一门新的技术,作为新手一定要先学习成长路线图,方向不对,努力白费。
这里,我们为新手和想要进一步提升的专业人士准备了一份详细的学习成长路线图和规划。可以说是最科学最系统的学习成长路线。
2. 大模型经典PDF书籍
书籍和学习文档资料是学习大模型过程中必不可少的,我们精选了一系列深入探讨大模型技术的书籍和学习文档,它们由领域内的顶尖专家撰写,内容全面、深入、详尽,为你学习大模型提供坚实的理论基础。(书籍含电子版PDF)
3. 大模型视频教程
对于很多自学或者没有基础的同学来说,书籍这些纯文字类的学习教材会觉得比较晦涩难以理解,因此,我们提供了丰富的大模型视频教程,以动态、形象的方式展示技术概念,帮助你更快、更轻松地掌握核心知识。
4. 大模型行业报告
行业分析主要包括对不同行业的现状、趋势、问题、机会等进行系统地调研和评估,以了解哪些行业更适合引入大模型的技术和应用,以及在哪些方面可以发挥大模型的优势。
5. 大模型项目实战
学以致用 ,当你的理论知识积累到一定程度,就需要通过项目实战,在实际操作中检验和巩固你所学到的知识,同时为你找工作和职业发展打下坚实的基础。
6. 大模型面试题
面试不仅是技术的较量,更需要充分的准备。
在你已经掌握了大模型技术之后,就需要开始准备面试,我们将提供精心整理的大模型面试题库,涵盖当前面试中可能遇到的各种技术问题,让你在面试中游刃有余。
全套的AI大模型学习资源已经整理打包,有需要的小伙伴可以
微信扫描下方优快云官方认证二维码
,免费领取【保证100%免费
】