搜索
查看
编辑修改
首页
UNITY
NODEJS
PYTHON
AI
GIT
PHP
GO
CEF3
JAVA
HTML
CSS
搜索
天景科技苑
这个屌丝很懒,什么也没留下!
关注作者
热门标签
jquery
HTML
CSS
PHP
ASP
PYTHON
GO
AI
C
C++
C#
PHOTOSHOP
UNITY
iOS
android
vue
xml
爬虫
SEO
LINUX
WINDOWS
JAVA
MFC
CEF3
CAD
NODEJS
GIT
Pyppeteer
article
热门文章
1
Stable Diffusion关键词_stablediffusion关键词列表
2
自然语言处理之动手学词向量
3
XSS绕过安全狗WAF_xss绕过waf
4
五位被才华掩盖的渣男
5
win10系统自带edge浏览器页面崩溃问题,解决方案_edge新建标签页崩溃
6
量化机器人能否实现多资产交易?
7
破局数据困境,迭代一年的终版解决方案竟是纯规则方法!
8
沉浸式复现/运行一篇论文的代码_复现论文代码过程
9
方法区中存储内容_java方法区存放什么
10
Python中SQLite使用_sqlite3.operationalerror: table user already exist
当前位置:
article
> 正文
总结:大模型技术栈---算法与原理
作者:天景科技苑 | 2024-07-26 02:48:06
赞
踩
大模型技术栈
原文地址:
大模型技术栈-算法与原理
1. tokenizer方法
word-level
char-level
subword-level
BPE
WordPiece
UniLM
SentencePiece
ByteBPE
2. position encoding
绝对位置编码
ROPE
AliBi
相对位置编码
Transformer-XL
T5/TUPE
DeBERTa
3. 注意力机制
Mamba,H3,Hyena,RetNet,RWKV,Linear attention, Sparse attention
4. 分布式训练
数据并行
FSDP
DDP
ZeRO
Model state
Optimizer->ZeRO1
将optimizer state分成若干份,每块GPU上各自维护一份
每块GPU上存一份完整的参数W,做完一轮foward和backward后,各得一份梯度,对梯度做一次AllReduce(reduce-scatter + all-gather),得到完整的梯度G,由于每块GPU上只保管部分optimizer states,因此只能将相应的W进行更新,对W做一次All-Gather
Gradient+Optimzer->ZeRO2
每个GPU维护一块梯度
每块GPU上存一份完整的参数W,做完一轮foward和backward后,算得一份完整的梯度,对梯度做一次Reduce-Scatter,保证每个GPU上所维持的那块梯度是聚合梯度,每块GPU用自己对应的O和G去更新相应的W。更新完毕后,每块GPU维持了一块更新完毕的W。同理,对W做一次All-Gather,将别的GPU算好的W同步到自己这来
Parameter+Gradient+Optimizer->ZeRO3
每个GPU维护一块模型状态
每块GPU上只保存部分参数W,做forward时,对W做一次All-Gather,取回分布在别的GPU上的W,得到一份完整的W,forward做完,立刻把不是自己维护的W抛弃,做backward时,对W做一次All-Gather,取回完整的W,backward做完,立刻把不是自己维护的W抛弃. 做完backward,算得一份完整的梯度G,对G做一次Reduce-Scatter,从别的GPU上聚合自己维护的那部分梯度,聚合操作结束后,立刻把不是自己维护的G抛弃。用自己维护的O和G,更新W。由于只维护部分W,因此无需再对W做任何AllReduce操作
Residual state
activation->Partitioned Activation Checkpointing
每块GPU上只维护部分的activation,需要时再从别的地方聚合过来就行。需要注意的是,activation对显存的占用一般会远高于模型本身,通讯量也是巨大的
temporary buffer->Constant Size Buffer
提升带宽利用率。当GPU数量上升,GPU间的通讯次数也上升,每次的通讯量可能下降(但总通讯量不会变)。数据切片小了,就不能很好利用带宽了。所以这个buffer起到了积攒数据的作用:等数据积攒到一定大小,再进行通讯。
使得存储大小可控。在每次通讯前,积攒的存储大小是常量,是已知可控的。更方便使用者对训练中的存储消耗和通讯时间进行预估
unusable fragment->Memory Defragmentation
对碎片化的存储空间进行重新整合,整出连续的存储空间。防止出现总存储足够,但连续存储不够而引起的存储请求fail
offload
ZeRO-Offload
forward和backward计算量高,因此和它们相关的部分,例如参数W(fp16),activation,就全放入GPU
update的部分计算量低,因此和它相关的部分,全部放入CPU中。例如W(fp32),optimizer states(fp32)和gradients(fp16)等
ZeRO-Offload 分为 Offload Strategy 和 Offload Schedule 两部分,前者解决如何在 GPU 和 CPU 间划分模型的问题,后者解决如何调度计算和通信的问题
ZeRO-Infinity
一是将offload和 ZeRO 的结合从 ZeRO-2 延伸到了 ZeRO-3,解决了模型参数受限于单张 GPU 内存的问题
二是解决了 ZeRO-Offload 在训练 batch size 较小的时候效率较低的问题
三是除 CPU 内存外,进一步尝试利用 NVMe 的空间
模型并行
tensor-wise parallelism
pipeline parallelism: GPipe,1F1B,interleaved 1F1B
sequence p
声明:
本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:
https://www.wpsshop.cn/w/天景科技苑/article/detail/883157
推荐阅读
article
git
仓库批量备份_
git
clone
--
mirror
...
在
git
中,
--
mirror
是一个用于克隆和推送操作的参数。它用于创建一个镜像仓库,包含了源仓库的所有分支、标签和提交历...
赞
踩
article
十分钟
学习
自然语言
处理
概述_
文本
挖掘 歧义消解...
十分钟
学习
自然语言
处理
概述 摘要:近来
自然语言
处理
行业发展朝气蓬勃,市场应用广泛。笔者
学习
以来写了不少文章,文章深度层次...
赞
踩
article
详解
Python
中
def
__
init
__
(
self
)与
def
__
init
__
(
self
.
参数
1、...
两者的主要区别1.初始化
参数
为空的表述方式不同2. 初始化附
参数
的表达方式不同,结构2的
self
.name一定要指向上面...
赞
踩
article
开工了!三位
大
咖给
你
指路:
未来
3~5 年内
,
哪个
方向
的
机器
学习
人才
最紧缺?...
十一长假结束
,
收心归来
,
重新投入工作。如何能克服假期综合症呢?如何快速收心?今天营长就携三位
大
咖来为
你
打打鸡血
,
指引指引...
赞
踩
article
3.
chromium
编译
源码
_
chromium
源码
编译
...
本文详细描述了如何在Windows环境中对Chromium
源码
进行
编译
,包括从src目录开始,生成调试或正式版本,设置编...
赞
踩
article
Introduction
to
3D Game Programming with
Directx12
...
(一)、习题答案1、EXERCISE1 本题中,我们需要先构建一个circle,然后将其扩展为一个无盖无底的圆柱。本题...
赞
踩
article
该让
大
模型
走出对话框
了
_
天工
大
模型
私有化
部署
...
题图|
天工
AI生成如果说2023年的
大
模型
风暴还集中在“对话”上,那么,今年AI带来的亿点点震撼,就突破
了
文字乃至图像的...
赞
踩
article
Uncaught SyntaxError: Unexpected
toke
n o_
uncaught
...
浏览器报Uncaught SyntaxError: Unexpected
toke
n o这原因是你ajax获取数据的时候...
赞
踩
article
CVPR
2024 |
视觉
新突破
!
首个无
自然语言
的
纯
视觉
大
模型
!
...
点击下方卡片,关注“CVer”公众号AI/CV重磅干货,第一时间送达点击进入—>【Mamba和扩散
模型
】微信交流群添加微...
赞
踩
article
redisson
限流
实战开发_
redission
限流
...
使用
限流
注解需要在开发时候就开始准备
限流
工作,需要开发时就对要
限流
的代码的 QPS 了解,一旦要调整就需要重新编码,约定...
赞
踩
article
Android
---
ContentProvider
内容提供者...
ContentProvider
是
Android
中用于数据共享的机制,主要是用于进程间(App之间)。
Android
...
赞
踩
article
PyQt5
|
界面
设计
|利用Qt
Designer
实现简单
界面
交互
_
pyqt5
界面
设计
...
利用qt designer做一个简单的实现
交互
的小程序_
pyqt5
界面
设计
pyqt5
界面
设计
...
赞
踩
article
JdonJive
论坛
系统
完整分析(
3
)...
赞
踩
article
vscode
能
远程
连接
虚拟机吗_配置
vscode
连接
远程
服务器
...
今年5月左右微软给
vscode
加了新操作,有了官方的
远程
连接
的插件,不过好像现在只在insider版本里提供。要安装的话...
赞
踩
article
Python
多态的三种表现形式_
python
函数
重载
...
需要注意的是,在
Python
中,
函数
重载
是通过参数个数的不同来实现的,而不是通过参数类型的不同。当调用add
函数
时,根据...
赞
踩
article
工业视觉
二维码
批量
识别
_
ai
批量
识别
二维码
...
工业视觉
二维码
批量
识别
算法动态链接库
_
ai
批量
识别
二维码
ai
批量
识别
二维码
工业视...
赞
踩
article
mongo
实现
全文检索
,使用
多字段
进行
模糊查询_
mongo
template
全文检索
...
1.公司要
进行
mongo
实现
全文检索
,在
mongo
的官网可以看到
mongo
实现
全文检索
,链接:https://docs....
赞
踩
article
vue
-
quill
-
editor
富
文本编辑
器插入图片_
quill
-
editor
插入
img
...
vue
-
quill
-
editor
富
文本编辑
器插入图片主要就是增加了elment-ui的el-upload上传图片组件ed...
赞
踩
article
Elasticsearch
笔记...
ELK搜索高级1.简介1.1内容ELK是包含但不限于
Elasticsearch
(简称es)、Logstash、Kiban...
赞
踩
article
Direct3D
绘制
旋转
立方体
例程_c++
d3d
旋转
的正方体...
【代码】
Direct3D
绘制
旋转
立方体
例程。_c++
d3d
旋转
的正方体c++
d3d
旋转
的正方体 ...
赞
踩
相关标签
git
python
chrome
c++
D3D12
Directx12
习题解答
人工智能
ai
大模型
ajax
javascript
java
架构
spring boot
redis
android
qt
人机交互
authorization
string
数据库
ejb
exception