大模型训练

大模型训练两大问题

效率问题: 时间

数据量大,如何快速完成训练

显存问题:物理

模型太大,如何在GPU上完成运算

那么怎么解决效率问题,显存问题?

并行训练

第一种:

数据并行 DP(提效的手段)

复制模型到多个GPU

各自计算梯度后累加,再反传更新

需要单卡就能训练整个模型(显存够大)

如图,假如有4个gpu,把1000分数据均分到4个gpu上,一个250份,但是会出现4个不一样的梯度,因为相当于分到4个模型上来训,那么权重更新就会出现4个梯度,那肯定不行

那怎么完成?

算完梯度之后,有一个通讯过程,将所有梯度,传到一个上面,然后汇总求平均,更新一个卡,然后其他卡再同步

但是有时,模型较大,做不到一张卡容纳一个模型

第二种:

模型并行PP(解决显存不足的手段)

将模型的不同层放在不同的gpu上

解决单块不够大的问题(模型比显存大)

需要更多的通讯时间(卡之间互相传输数据)

但是,transformer中,q,k,v 这种大型矩阵运算,参数太多卡放不下怎么办

第三种:

张量并行TP

将张量划分到不同GPU上进行运算

进一步减少对单卡显存的需求

需要更多的数据通讯

第四种:

混合并行:

降低模型训练,还可以采用一些其他方法

混合精度

计算机的底层是二进制,只有0和1,所有的数字在计算机中都能有0和1表示出来,包括浮点数

根据x和这个公式可以得到 S,M是多少

在机器学习中主要用BF16

高精度转低精度会造成损失,低精度转高精度会加大空间消耗

所以在训练的时候采用混合训练

更新权重的时候用FP32,在其他比如前向计算时用FP16,在优化器中保留高精度,模型参数也保留一份高精度,然后转化为低精度,虽然会造成写精度损失但是可接收

deepspeed 零冗余优化器 ZeRo

尽可能减少每一块显存的占用

设置了几个阶段的模式

stage0:

本质上时数据并行,每个gpu包含模型的所有信息,包括模型的参数(蓝色的),梯度(黄色的),优化器内的权重,这样可以在每一块卡上完成梯度计算和反向传播

stage1:

就是把优化器内所有的参数(优化器用的高精度的值), 然后把参数均分到每一个gpu上,

stage2:

进一步把模型梯度均分到gpu

stage3:

把模型的参数均分到每一个卡上了

从上到小,单块显存的空间占用越来越少,但是训练速度也逐渐增加

ZeRO-offload

把一部分计算放到内存中,用CPU计算目的是解决显存不足问题,在CPU做运算的速度低于GPU慢

策略对比

PEFT微调(Parameter- Effcient Fine-Tuning)

当训练整个大模型不能实现时,可以采取的一种策略

通过最小化微调参数的数量缓解大型预训练模型的训练成本

Adapter

比一般的transformer增加了2个Adapter模块,模块内部为右边的图

把高维向量映射成低维向量,非线性激活,然后再升维

在训练的时候冻结 Multi-headed attention 和Fedd-forward layer 以及 2*Fedd-forward layer,参数不再变化,变化Adapter Layer中的参数

LoRA

在transformer中有很多线性层,在任一一个线形层旁边都可以选择加上一个黄色矩阵的分值,这两黄色矩阵 一个是升维,一个是降维,r则是降到r维,左边冻结,两加起来当作线性层的输出

A是正太分布初始化,B则是全0初始化, 为什么?

为了一开始让x进来的时候,B为全0,结果依旧是0,加起来对结果依旧是x,和模型原本输出一致,然后再微调,不至于结果遍历太远

相关推荐
码上天下30 分钟前
用Pinia管理AI多会话状态
人工智能
用户054324329701 小时前
Next.js接大模型流式SSE实操踩坑
人工智能
Assby1 小时前
从 Function Calling 到 MCP:理解 Agent 工具调用的底层通信机制
人工智能·后端
小星AI2 小时前
Claude Code 从入门到精通,一步到位
人工智能
后端小肥肠2 小时前
Codex + Obsidian 做人生副本视频:输入主题文案,直通剪映草稿
人工智能·aigc·agent
百度Geek说2 小时前
全链路研发智能体 ——从"体感能用"到"实际可用"的工程实践
人工智能
甲维斯3 小时前
500块的豆包,能帮我搞定这个么?!
人工智能
火山引擎开发者社区4 小时前
当 Agent 自己做 SRE:详解 ArkClaw 自动化可观测体系的工程实践
人工智能
Coffeeee6 小时前
两个例子,帮你快速理解什么是Token
人工智能·程序员·ai编程
饼干哥哥6 小时前
用AI全自动剪辑,日更 100条爆款视频——HyperFrames、Remotion、Git使用入门
人工智能·机器学习·ai编程