大模型总体训练框架
总体框架:
大模型的标准训练流水线 pipline大致分为三步:Pretrain(预训练) -> SFT(指令微调)-> Alignment(对齐,RLHF)
LoRA不是一个独立的训练阶段,属于PEFT(参数高效微调,parameter-efficient-fine-tuning)一种技术手段。LoRA可以被用在SFT阶段,也可以被用在RLHF阶段,主要是为了“省显存,省算力”
Pretrain(预训练):
预训练阶段是基于海量无标注数据(如网页、书籍、代码)进行无监督学习(或自监督学习)。其核心任务是next-token-prediction,这个阶段,模型不仅压缩吸收了海量的世界知识,也掌握人类语言的语法规律、逻辑能力。这个阶段训练出来的也叫“基座模型”,只会续写还不会对话。
SFT Supervised Fine-tuning 指令微调:
SFT也叫指令微调阶段,使用高质量的“人类指令+回答”对(prompt-response)作为训练数据,目的不是给模型注入新的知识,而是激发模型在预训练阶段学到的知识,让它的输出格式符合人类的对话和回答习惯,从文本续写器转变为AI助手。
对齐阶段:RLHF
最后是对齐阶段,经典方法是RLHF。SFT虽然让模型学会了对话,但模型可能会出现幻觉、说脏话和给出危险建议。引入强化学习的目的,是让模型的输出与人类的价值观对齐(通常遵循3H,helpful, honest, harmless)
具体来说会先训练一个reward model来模仿人类的打分喜好,然后使用PPO、GRPO等强化学习算法来优化大模型。
在实际中也可以不用单独训练奖励模型,如DPO,直接使用带偏好的回答来训练模型。
大模型训练如何计算(估算)显存占用:
参考:https://www.bilibili.com/video/BV1VD421571H/?spm_id_from=333.1387.search.video_card.click&vd_source=e67c07b57bd6208ae6cf25baa99d3bcb
单位基础:

显存占用部分:
后续计算都以Llama13B为例,
- b Batch Size: 1
- S seq_len: 1024
- H hidden_size: 5120
1 输入输出:
embedding后输入:bsh*2/1024/1024 (2字节,默认float16)
输入输出:20MB
2 模型参数:
1B = 10^3 1GB=1024^3byte FP16: 13*2= 26GB
3 优化器:优化器中的参数都以FLOAT32存放
- 梯度指数平滑值:13*4 = 52GB
- 梯度平方指数平滑值:13*4 = 52GB
- 模型参数:134=52GB
总共134*3 = 156GB
4 激活值:梯度计算需要用
![[图片]](https://i-blog.csdnimg.cn/direct/8a37dc39b59d48c8a51fd8d82ac18932.png)
和batch_size seq_len 相关
5 梯度值:
FP16: 13B*2 = 26GB
总计

更多推荐
所有评论(0)