【NLP高频面题 - 分布式训练】ZeRO1、ZeRO2、ZeRO3分别做了哪些优化?
【NLP高频面题 - 分布式训练】ZeRO1、ZeRO2、ZeRO3分别做了哪些优化?
重要性:★★
NLP Github 项目:
-
NLP 项目实践:fasterai/nlp-project-practice
介绍:该仓库围绕着 NLP 任务模型的设计、训练、优化、部署和应用,分享大模型算法工程师的日常工作和实战经验
-
AI 藏经阁:https://gitee.com/fasterai/ai-e-book
介绍:该仓库主要分享了数百本 AI 领域电子书
-
AI 算法面经:fasterai/nlp-interview-handbook#面经
介绍:该仓库一网打尽互联网大厂NLP算法面经,算法求职必备神器
-
NLP 剑指Offer:https://gitee.com/fasterai/nlp-interview-handbook
介绍:该仓库汇总了 NLP 算法工程师高频面题
ZeRO被分为了三个级别:
- ZeRO1:对优化器状态进行拆分。显存消耗减少 4 倍,通信量与数据并行相同。
- ZeRO2:在ZeRO1的基础上,对梯度进行拆分。显存消耗减少 8 倍,通信量与数据并行相同。
- ZeRO3:在ZeRO2的基础上,对模型参数进行拆分。模型占用的显存被平均分配到每个 GPU 中,显存消耗量与数据并行的并行度成线性反比关系,但通信量会有些许增加。
论文中给出了三个阶段的显存消耗分布情况:

ZeRO1
模型训练中,正向传播和反向传播并不会用到优化器状态,只有在梯度更新的时候才会使用梯度和优化器状态计算新参数。因此每个进程单独使用一段优化器状态,对各自进程的参数更新完之后,再把各个进程的模型参数合并形成完整的模型。
假设我们有 𝑁𝑑 个并行的进程,ZeRO-1 会将完整优化器的状态等分成 𝑁𝑑 份并储存在各个进程中。当反向传播完成之后,每个进程的优化器会对自己储存的优化器状态(包括Momentum、Variance 与 FP32 Master Parameters)进行计算与更新。更新过后的Partitioned FP32 Master Parameters会通过All-gather传回到各个进程中。完成一次完整的参数更新。
通过 ZeRO-1 对优化器状态的分段化储存,7.5B 参数量的模型内存占用将由原始数据并行下的 120GB 缩减到 31.4GB。
ZeRO2
第二阶段中对梯度进行了拆分,在一个Layer的梯度都被计算出来后: 梯度通过All-reduce进行聚合, 聚合后的梯度只会被某一个进程用来更新参数,因此其它进程上的这段梯度不再被需要,可以立马释放掉。
通过 ZeRO-2 对梯度和优化器状态的分段化储存,7.5B 参数量的模型内存占用将由 ZeRO-1 中 31.4GB 进一步下降到 16.6GB。
ZeRO3
第三阶段就是对模型参数进行分割。在ZeRO3中,模型的每一层都被切片,每个进程存储权重张量的一部分。在前向和后向传播过程中(每个进程仍然看到不同的微批次数据),不同的进程交换它们所拥有的部分(按需进行参数通信),并计算激活函数和梯度。
初始化的时候。ZeRO3将一个模型中每个子层中的参数分片放到不同进程中,训练过程中,每个进程进行正常的正向/反向传播,然后通过All-gather进行汇总,构建成完整的模型。
NLP 大模型高频面题汇总
NLP基础篇
-
【NLP 面试宝典 之 模型分类】 必须要会的高频面题
-
【NLP 面试宝典 之 神经网络】 必须要会的高频面题
-
【NLP 面试宝典 之 主动学习】 必须要会的高频面题
-
【NLP 面试宝典 之 超参数优化】 必须要会的高频面题
-
【NLP 面试宝典 之 正则化】 必须要会的高频面题
-
【NLP 面试宝典 之 过拟合】 必须要会的高频面题
-
【NLP 面试宝典 之 Dropout】 必须要会的高频面题
-
【NLP 面试宝典 之 EarlyStopping】 必须要会的高频面题
-
【NLP 面试宝典 之 标签平滑】 必须要会的高频面题
-
【NLP 面试宝典 之 Warm up 】 必须要会的高频面题
-
【NLP 面试宝典 之 置信学习】 必须要会的高频面题
-
【NLP 面试宝典 之 伪标签】 必须要会的高频面题
-
【NLP 面试宝典 之 类别不均衡问题】 必须要会的高频面题
-
【NLP 面试宝典 之 交叉验证】 必须要会的高频面题
-
【NLP 面试宝典 之 词嵌入】 必须要会的高频面题
-
【NLP 面试宝典 之 One-Hot】 必须要会的高频面题
-
…
BERT 模型面
LLMs 微调面
相关文章:
【NLP高频面题 - 分布式训练】ZeRO1、ZeRO2、ZeRO3分别做了哪些优化?
【NLP高频面题 - 分布式训练】ZeRO1、ZeRO2、ZeRO3分别做了哪些优化? 重要性:★★ NLP Github 项目: NLP 项目实践:fasterai/nlp-project-practice 介绍:该仓库围绕着 NLP 任务模型的设计、训练、优化、部署和应用&am…...
android 安全sdk相关
前述 在网上有看到许多android安全sdk相关的内容,有重复的也有比较新鲜的内容,这里做一个整体的合集,以及后续又看到一些比较新的东西会一起放在这里。 android内sdk目前可以分为以下几个部分(有一些部分可能会存在一些重合&#…...
NVR监测软件EasyNVR多个NVR同时管理:录播主机的5条常见问题与解决办法
视频监控广泛应用于城市治安、交通管理、商业安保及家庭监控等领域。在使用EasyNVR平台管理多个NVR设备时,尤其是涉及到海康录播主机的场景中,使用者可能会遇到一些常见问题。本文将探讨海康录播主机的五个常见问题及其解决办法。 1、海康录播主机的5条常…...
Z2400027基于Java+SpringBoot+Mysql+thymeleaf引擎的图书馆管理系统的设计与实现 代码 论文
图书馆管理系统的设计与实现 一、项目背景与简介二、系统总体功能三、运行环境与技术选型四、系统架构与模块划分五、系统界面截图六、源码获取 一、项目背景与简介 项目背景: 随着信息技术的不断发展和图书资源的日益丰富,图书馆作为知识传播和学习的重…...
完美解决Docker pull时报错:https://registry-1.docker.io/v2/
1、错误描述 rootubuntu-database:/opt/dify/docker# docker compose up -d [] Running 9/9✘ api Error context canceled …...
A051-基于Spring Boot的网络海鲜市场系统的设计与实现
🙊作者简介:在校研究生,拥有计算机专业的研究生开发团队,分享技术代码帮助学生学习,独立完成自己的网站项目。 代码可以查看文章末尾⬇️联系方式获取,记得注明来意哦~🌹 赠送计算机毕业设计600…...
【组件】前端ElementUi 下拉Tree树形组件 带模糊搜索自动展开高亮功能 树结构 封装为组件使用
【组件】前端ElementUi 下拉Tree树形组件 带模糊搜索自动展开高亮功能 树结构 【组件】前端ElementUi 下拉Tree树形组件 带模糊 https://live.csdn.net/v/436057 单独使用 <template><div><el-popoverstyle"overflow-y: auto; "placement"bottom…...
Blender 运行python脚本
Blender 运行python脚本 步骤 1:打开 Blender 首先,打开 Blender 软件。你可以从官方网站 [blender.org]( 下载最新的 Blender 版本,并按照安装向导进行安装。 步骤 2:打开“文本编辑器”面板 在 Blender 的默认布局中ÿ…...
递归:求fib数列的第n项,前几项是1,1,2,3,5,每一项都等于前面两项的和:JAVA
链接:登录—专业IT笔试面试备考平台_牛客网 来源:牛客网 求fib数列的第n项,前几项是1,1,2,3,5,每一项都等于前面两项的和 输入描述: 输入一个整数n,n<46 输出描述: 输出一个…...
三分钟快速掌握——Linux【vim】的使用及操作方法
一、vim的使用 vim是一个文本编辑器 非常小巧轻便 1.1如何进入vim编辑器 方法一: 首先使用touch 1.c 创建一个源文件 然后使用vim 1.c进入 方法二: 直接使用指令 vim 2.c 会直接创建一个2.c的源文件 退出时记得保存(使用wq或者x&am…...
Wrapper包装类
包装类又叫封装类,Java的数据类型有两种,基础数据类型是基础的,从狭义的角度看它们不是面向对象的,在引用数据类型中,有八个引用数据类型对应了八个基础数据类型,这个八个引用数据类型就叫做基础数据类型的…...
MySQL高级(六):全局锁、表锁和行锁
全局锁 (Global Lock) 定义 全局锁作用于整个 MySQL 实例。加上全局锁后,整个数据库实例会被锁定,其他线程无法对数据库中的任何表或数据进行读写操作。 使用方式 通过命令 FLUSH TABLES WITH READ LOCK (FTWRL) 来加全局锁。 特点 影响范围&#…...
【CLIP】3: semantic-text2image-search允许局域网访问
前后端都是局域网的在同一局域网内的其他设备上,打开浏览器,访问 http://192.168.50.197:5173/。前端 前端默认是本地的 (semantic-text2image-search) root@k8s-master-pfsrv:/home/zhangbin/perfwork/01_ai/01_semantic-text2image-search/frontend# npm run dev> web@…...
FPGA实现GTP光口视频转USB3.0传输,基于FT601+Aurora 8b/10b编解码架构,提供3套工程源码和技术支持
目录 1、前言工程概述免责声明 2、相关方案推荐我已有的所有工程源码总目录----方便你快速找到自己喜欢的项目我这里已有的 GT 高速接口解决方案本博已有的FPGA驱动USB通信方案 3、工程详细设计方案工程设计原理框图输入Sensor之-->OV5640摄像头输入Sensor之-->芯片解码的…...
docker搭建nginx
一. 直接启动nginx镜像 1. 下载nginx镜像 docker pull nginx 2. 运行镜像 docker run -p 8080:80 --name web -d nginx 3. 网址查看 xx.xx.xx.xx:8080 二. 挂在文件启动nginx镜像 1. 拷贝docker文件到本地 docker cp web:/etc/nginx/nginx.conf /root/data/config/nginx…...
Java 17的新特性及其对现代Java开发的影响
Java 17作为一个长期支持(LTS)版本,于2021年9月14日发布,引入了多项重要的新特性,这些特性不仅提高了Java语言的表现力和安全性,还优化了性能。本文将详细介绍Java 17的关键新特性,并探讨这些特…...
【Flink】快速理解 FlinkCDC 2.0 原理
快速理解 FlinkCDC 2.0 原理 要详细理解 Flink CDC 原理可以看看这篇文章,讲得很详细:深入解析 Flink CDC 增量快照读取机制 (https://juejin.cn/post/7325370003192578075)。 FlnkCDC 2.0: Flink 2.x 引入了增量快照读取机制,…...
使用R的数据包快速获取、调用各种地理数据
数据一直是科学研究绕不开的话题,为了方便快捷的获取各种地理数据,许多R包被开发出来,今天介绍一些方便快捷的数据R包。 rnaturalearth 包使 Natural Earth 数据可用。自然地球特征包括 1:10m、1:50m 和 1:…...
scrapy豆瓣爬虫增强-批量随机请求头
1.1 豆瓣爬虫增强,中间件随机请求头 1.2 清除原有的中间件,进行中间件测试 1.3 导入全新的中间件 1.4 运行爬虫,这个时候的请求头是固定的 1.5 强化对agent的输出,会舍弃输出cookie,使输出更明了 1.6 转移输出请求头位置 新增输出 造成这样问题的原因是Douban/Douban/settings…...
基于华为昇腾910B,实战InternLM个人小助手认知微调
本文将带领大家基于华为云 ModelArts,使用 XTuner 单卡微调一个 InternLM 个人小助手。 开源链接:(欢迎 star) https://github.com/InternLM/InternLM https://github.com/InternLM/xtuner XTuner 简介 XTuner 是一个高效、灵…...
Java - Mysql数据类型对应
Mysql数据类型java数据类型备注整型INT/INTEGERint / java.lang.Integer–BIGINTlong/java.lang.Long–––浮点型FLOATfloat/java.lang.FloatDOUBLEdouble/java.lang.Double–DECIMAL/NUMERICjava.math.BigDecimal字符串型CHARjava.lang.String固定长度字符串VARCHARjava.lang…...
使用van-uploader 的UI组件,结合vue2如何实现图片上传组件的封装
以下是基于 vant-ui(适配 Vue2 版本 )实现截图中照片上传预览、删除功能,并封装成可复用组件的完整代码,包含样式和逻辑实现,可直接在 Vue2 项目中使用: 1. 封装的图片上传组件 ImageUploader.vue <te…...
涂鸦T5AI手搓语音、emoji、otto机器人从入门到实战
“🤖手搓TuyaAI语音指令 😍秒变表情包大师,让萌系Otto机器人🔥玩出智能新花样!开整!” 🤖 Otto机器人 → 直接点明主体 手搓TuyaAI语音 → 强调 自主编程/自定义 语音控制(TuyaAI…...
uniapp中使用aixos 报错
问题: 在uniapp中使用aixos,运行后报如下错误: AxiosError: There is no suitable adapter to dispatch the request since : - adapter xhr is not supported by the environment - adapter http is not available in the build 解决方案&…...
全面解析各类VPN技术:GRE、IPsec、L2TP、SSL与MPLS VPN对比
目录 引言 VPN技术概述 GRE VPN 3.1 GRE封装结构 3.2 GRE的应用场景 GRE over IPsec 4.1 GRE over IPsec封装结构 4.2 为什么使用GRE over IPsec? IPsec VPN 5.1 IPsec传输模式(Transport Mode) 5.2 IPsec隧道模式(Tunne…...
重启Eureka集群中的节点,对已经注册的服务有什么影响
先看答案,如果正确地操作,重启Eureka集群中的节点,对已经注册的服务影响非常小,甚至可以做到无感知。 但如果操作不当,可能会引发短暂的服务发现问题。 下面我们从Eureka的核心工作原理来详细分析这个问题。 Eureka的…...
高效线程安全的单例模式:Python 中的懒加载与自定义初始化参数
高效线程安全的单例模式:Python 中的懒加载与自定义初始化参数 在软件开发中,单例模式(Singleton Pattern)是一种常见的设计模式,确保一个类仅有一个实例,并提供一个全局访问点。在多线程环境下,实现单例模式时需要注意线程安全问题,以防止多个线程同时创建实例,导致…...
算法岗面试经验分享-大模型篇
文章目录 A 基础语言模型A.1 TransformerA.2 Bert B 大语言模型结构B.1 GPTB.2 LLamaB.3 ChatGLMB.4 Qwen C 大语言模型微调C.1 Fine-tuningC.2 Adapter-tuningC.3 Prefix-tuningC.4 P-tuningC.5 LoRA A 基础语言模型 A.1 Transformer (1)资源 论文&a…...
C++.OpenGL (14/64)多光源(Multiple Lights)
多光源(Multiple Lights) 多光源渲染技术概览 #mermaid-svg-3L5e5gGn76TNh7Lq {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-3L5e5gGn76TNh7Lq .error-icon{fill:#552222;}#mermaid-svg-3L5e5gGn76TNh7Lq .erro…...
VM虚拟机网络配置(ubuntu24桥接模式):配置静态IP
编辑-虚拟网络编辑器-更改设置 选择桥接模式,然后找到相应的网卡(可以查看自己本机的网络连接) windows连接的网络点击查看属性 编辑虚拟机设置更改网络配置,选择刚才配置的桥接模式 静态ip设置: 我用的ubuntu24桌…...
