【学习笔记】如何训练大模型
如何在许多 GPU 上训练真正的大型模型?
单个 GPU 工作线程的内存有限,并且许多大型模型的大小已经超出了单个 GPU 的范围。有几种并行范式可以跨多个 GPU 进行模型训练,还可以使用各种模型架构和内存节省设计来帮助训练超大型神经网络。
并行训练
训练超大型神经网络模型的主要瓶颈是对大量 GPU 内存的强烈需求,远远超过单个 GPU 机器上可以托管的内存。除了模型权重(例如数百亿个浮点数)之外,存储中间计算输出(例如梯度和优化器状态)(例如Adam中的动量和变化)通常甚至更昂贵。此外,训练大型模型通常会与大型训练语料库配对,因此单个过程可能需要很长时间。
因此,并行性是必要的。并行性可以发生在不同的维度,包括数据、模型架构和张量操作。
数据并行性
数据并行性 (DP) 最幼稚的方法是将相同的模型权重复制到多个工作线程中,并将一部分数据分配给每个要同时处理的工作线程。
如果模型大小大于单个 GPU 节点的内存,则 Naive DP 无法正常工作。像 GeePS (Cui et al. 2016) 这样的方法将暂时未使用的参数卸载回 CPU,以便在模型太大而无法放入一台机器时使用有限的 GPU 内存。数据交换传输应在后端进行,并且不会干扰训练计算。
模型并行性
模型并行性 (MP) 旨在解决模型权重无法适应单个节点的情况。计算和模型参数分布在多台机器上。与数据并行性不同,每个工作线程托管整个模型的完整副本,MP 仅在一个工作线程上分配一小部分模型参数,因此内存使用量和计算量都减少了。
由于深度神经网络通常包含一堆垂直层,因此将大型模型逐层拆分感觉很简单,其中一小群连续的层被分组到一个工作线程上的一个分区中。然而,通过具有顺序依赖性的多个此类工作线程运行每个数据批次的幼稚实现会导致等待时间的巨大泡沫和计算资源的严重利用不足。
管道并行性
管道并行性 (PP) 将模型并行性与数据并行性相结合,以减少低效的时间“气泡”。主要思想是将一个小批量分成多个微批量,并使每个阶段的工作人员能够同时处理一个微批量。请注意,每个微批次都需要两次传递,一次向前,一次向后。工作线程间通信仅传输激活(向前)和梯度(向后)。这些通道的调度方式以及梯度的聚合方式在不同的方法中有所不同。分区(工作线程)的数量也称为管道深度。
张量并行性
模型并行度和管道并行度都会垂直分割模型。OTOH 我们可以在多个设备上水平划分一个张量运算的计算,称为张量并行度 (TP)。
训练大型神经网络的技术
大型神经网络是 AI 领域许多最新进展的核心,但训练它们是一项艰巨的工程和研究挑战,需要编排一组 GPU 来执行单一的同步计算。
大型神经网络是 AI 领域许多最新进展的核心,但训练它们是一项艰巨的工程和研究挑战,需要编排一组 GPU 来执行单一的同步计算。随着集群和模型大小的增长,机器学习从业者已经开发了越来越多的技术来在许多 GPU 上并行进行模型训练。乍一看,理解这些并行技术可能看起来令人生畏,但只要对计算结构做出一些假设,这些技术就会变得更加清晰——在这一点上,你只是在从 A 到 B 的不透明位之间穿梭,就像网络交换机在数据包周围穿梭一样。
训练神经网络是一个迭代过程。在每次迭代中,我们都会通过模型的层(在新窗口中打开)计算一批数据中每个训练样本的输出。然后继续进行另一次传递向后(在新窗口中打开)通过各层,通过计算 a 传播每个参数对最终输出的影响程度梯度(在新窗口中打开)关于每个参数。批次的平均梯度、参数和一些每个参数的优化状态将传递给优化算法,例如亚当(在新窗口中打开),用于计算下一次迭代的参数(在数据上的性能应该略好一些)和新的每个参数的优化状态。随着训练对成批数据的迭代,模型会不断发展,以产生越来越准确的输出。
各种并行技术将此训练过程划分为不同维度,包括:
- 数据并行性 - 在不同的 GPU 上运行批处理的不同子集;
- 流水线并行性 - 在不同的 GPU 上运行模型的不同层;
- 张量并行性 - 分解单个运算的数学运算,例如在 GPU 之间拆分的矩阵乘法;
- Mixture-of-Experts - 仅通过每层的一小部分处理每个示例。
参考链接
How to Train Really Large Models on Many GPUs?
Techniques for training large neural networks
相关文章:

【学习笔记】如何训练大模型
如何在许多 GPU 上训练真正的大型模型? 单个 GPU 工作线程的内存有限,并且许多大型模型的大小已经超出了单个 GPU 的范围。有几种并行范式可以跨多个 GPU 进行模型训练,还可以使用各种模型架构和内存节省设计来帮助训练超大型神经网络。 并…...

高可用集群KEEPALIVED
一、集群相关概念简述 HA是High Available缩写,是双机集群系统简称,指高可用性集群,是保证业务连续性的有效解决方案,一般有两个或两个以上的节点,且分为活动节点及备用节点。 1、集群的分类 LB:负载均衡…...

Linux shell编程学习笔记69: curl 命令行网络数据传输工具 选项数量雷人(中)
0 前言 curl是Linux中的一款综合性网络传输工具,既可以上传也可以下载,支持HTTP、HTTPS、FTP等30余种常见协议。 该命令选项超多,在学习笔记68中,我们列举了该命令的部分实例,今天继续通过实例来研究curl命令的功能…...

怎么在网站底部添加站点地图?
在优化网站 SEO 时,站点地图(Sitemap)是一个非常重要的工具。它帮助搜索引擎更好地理解和抓取您的网站内容。幸运的是,从 WordPress 5.5 开始,WordPress 自带了站点地图生成功能,无需额外插件。下面将介绍如…...

bash和sh的区别
Bash和sh的主要区别在于它们的交互性、兼容性、默认shell以及脚本执行方式。 首先,Bash提供了更丰富的交互功能,使得它在终端中的使用更加舒适和方便。相比之下,sh由于其最小化的功能集,提供了更广泛的兼容性。然而ÿ…...

基于LSTM的锂电池剩余寿命预测 [电池容量提取+锂电池寿命预测] Matlab代码
基于LSTM的锂电池剩余寿命预测 [电池容量提取锂电池寿命预测] Matlab代码 无需更改代码,双击main直接运行!!! 1、内含“电池容量提取”和“锂电池寿命预测”两个部分完整代码和NASA的电池数据 2、提取NASA数据集的电池容量&am…...

PHP项目任务系统小程序源码
🚀解锁高效新境界!我的项目任务系统大揭秘🔍 🌟 段落一:引言 - 为什么需要项目任务系统? Hey小伙伴们!你是否曾为了杂乱的待办事项焦头烂额?🤯 或是项目截止日逼近&…...

乡村振兴旅游休闲景观解决方案
乡村振兴旅游休闲景观解决方案摘要 2. 规划方案概览 规划核心:PPT展示了乡村振兴建设规划的核心区平面图及鸟瞰图,涵盖景观小品、设施农业、自行车道、新社区等设计元素。 规划策略:方案注重打造大开大合的空间感受,特色农产大观…...

【大数据】重塑时代的核心技术及其发展历程
🐇明明跟你说过:个人主页 🏅个人专栏:《大数据前沿:技术与应用并进》🏅 🔖行路有良友,便是天堂🔖 目录 一、引言 1、什么是大数据 2、大数据技术诞生的背景 二、大…...

基于python的小区监控图像拼接系统设计与实现
博主介绍: 大家好,本人精通Java、Python、C#、C、C编程语言,同时也熟练掌握微信小程序、Php和Android等技术,能够为大家提供全方位的技术支持和交流。 我有丰富的成品Java、Python、C#毕设项目经验,能够为学生提供各类…...

在HFSS中对曲线等结构进行分割(Split)
在HFSS中对曲线进行分割 我们往往需要把DXF等其他类型文件导入HFSS进行分析,但是有时需要对某一个曲线单独进行分割成两段修改。 如果是使用HFSS绘制的曲线,我们修改起来非常方便,修改参数即可。但是如果是导入的曲线,则需要使用…...

高等数学精解【8】
文章目录 直线与二元一次方程平行垂直题目点到直线距离直线束概述直线束的详细说明一、定义二、计算 三、例子例子1:中心直线束例子2:平行直线束 四、例题 参考文献 直线与二元一次方程 平行 两直线平等的条件是它们的斜率相同。 L 1 : A 1 x B 1 y …...

山石网科---WAF---巨细
文章目录 前言一、pandas是什么?二、使用步骤 1.引入库2.读入数据总结 前言 今天被安排协助一线上架一台WAF,在这里重点总结一下WAF的内容 一.WAF部署 串联透明模式 串联模式特点: 二层透明接入,对客户网络影响小站点和webserve…...

【C++】6.类和对象(4)
文章目录 5.赋值运算符重载5.1 运算符重载5.2 赋值运算符重载5.3 前置和后置重载5.4 日期类的实现 6.取地址运算符重载6.1 const成员函数6.2 取地址运算符重载 5.赋值运算符重载 5.1 运算符重载 当运算符被用于类类型的对象时,C语言允许我们通过运算符重载的形式指…...

【5.2 python中的列表】
python中的列表 Python中的列表(List)是一种非常灵活且强大的数据结构,用于存储一系列的元素。列表是可变的,意味着你可以添加、删除或修改列表中的元素。列表中的元素可以是不同类型的数据,包括整数、浮点数、字符串、…...

opencv-特征检测
1,Harris角点检测 如果粉色窗口向四周移动,窗口内的像素没有变化则认定为平坦区域,如果窗口向上移动无明显变化,而左右移动有变化则认定为边缘,如果窗口向任意方向移动均有明显变化则为角点,如下图 dst不是…...

单片机在线升级架构(bootloader+app)
1、架构(bootloaderapp) 在一定的时间内如果没有程序需要更新则自动跳转到app地址执行用户程序 内部flash 512K bootloader 跑裸机 48k 主要实现USB升级和eeprom标志位升级 app 跑freeRtos 464K 程序的基本功能,升级时软件复位开始执行bootloader升级…...

leetcode169. 多数元素,摩尔投票法附证明
leetcode169. 多数元素 给定一个大小为 n 的数组 nums ,返回其中的多数元素。多数元素是指在数组中出现次数 大于 ⌊ n/2 ⌋ 的元素。 你可以假设数组是非空的,并且给定的数组总是存在多数元素。 示例 1: 输入:nums [3,2,3] 输…...

Pixel Adventure Unity2D开发完整指南
本文参考:2-2. Get and Setup Assets_哔哩哔哩_bilibili 1、下载资源 在Asset Store中下载Pix Adventure1 2的资源: 在import的时候,不用到Scene import进来,如下图所示,Scenes目录反勾选一下。 两个资源都下载完成后…...

signed main()与int main()的区别
刷算法题时为了防止爆int ,通常会开long long #define int long long 但这样int main()会出现问题,main函数的返回值必须是signed或int,由于定义int 为long long 我们只能让返回值变为signed main() #include<bits/stdc.h> using namespace std; #define int long lo…...

【面试宝典】Java基础 这个面试题整理的不全 后期会进行补充
一、equals 和 hashcode 1、简述 hashCode() 和 equals(Object obj) 的作用及其关系 hashCode() 方法用于获取对象的哈希码,即一个整数。这个哈希码在基于哈希的集合(如HashSet、HashMap等)中用于确定对象的存储位置。 equals(Object obj)…...

获取语音文件时长
获取语音文件时长一会儿有一会儿没的,百思不得其解。 错误代码: const getAudioDuration async src > {const audio new Audio(src);const duration await new Promise(resolve > {if (audio.duration) {return resolve(parseInt(audio.duratio…...

应急响应计划:网络安全事件后的快速恢复策略
在数字化时代,网络安全威胁日益严峻,任何企业都无法完全避免遭受网络攻击或数据泄露的风险。因此,制定一套完善的应急响应计划,以便在网络安全事件发生后能够迅速、有效地进行应对和恢复,成为企业保障业务连续性、保护…...

【网络】IP和MAC地址的映射——ARP协议和ARP欺骗概述
目录 引言 ARP的工作机制 ARP欺骗 ARP欺骗的断网行为 ARP欺骗成为中间人 工具介绍 个人主页:东洛的克莱斯韦克-CSDN博客 引言 同一子网内不同主机用数据链路层的MAC地址来寻址,而不是子网内的私有IP(网络层)。数据包中的IP…...

鸿蒙(API 12 Beta3版)【音视频解封装】 文件解析封装
开发者可以调用本模块的Native API接口,完成音视频解封装,即从比特流数据中取出音频、视频等媒体帧数据。 当前支持的数据输入类型有:远程连接(http协议、HLS协议)和文件描述符(fd)。 支持的解封装格式如下: 媒体格式封装格式码…...

智能马桶盖和普通马桶盖有什么不同?
智能马桶盖与普通马桶盖之间存在显著的差异,主要体现在以下几个方面: 一、功能差异 1.清洗功能: 智能马桶盖:配备了清洗功能,包括臀洗、妇洗等,特别针对女性设计了贴心功能,如移动喷水、水流按…...

C# OnnxRuntime部署LivePortrait实现快速、高质量的人像驱动视频生成
目录 效果 说明 项目 模型信息 代码 下载 效果 LivePortrait实现快速、高质量的人像驱动视频生成 说明 官网地址:https://github.com/KwaiVGI/LivePortrait 代码实现参考:https://github.com/hpc203/liveportrait-onnxrun 模型下载:…...

Spring boot框架指南
1. Spring Boot 概述 1.1 定义与起源 Spring Boot是一种基于Spring框架的开源框架,旨在简化Spring应用程序的创建和开发过程。它通过提供一系列默认配置和自动配置功能,减少了开发者在配置上的工作量,使得快速搭建生产级别的Spring应用程序…...

数据结构--树与二叉树
数据结构分类 集合 线性结构(一对一) 树形结构(一对多) 图结构(多对多) 数据结构三要素 1、逻辑结构 2、数据的运算 3、存储结构(物理结构) 树的概念 树的分类 满二叉树和完全二叉树 二叉排序树 平衡二叉树 二叉树分类总结 二叉树的存储结构 …...

C#项目实战经验——计时方法总结
前言 我们在开发C#程序的过程中经常需要计算某段程序执行的时间,比如调用的某个算法的时间,这时候我们就需要利用计时工具,本文就是详细介绍在C#中我们常用哪些计时工具。 1、计时方法—StopWatch 在C#中我们可以利用Stopwatch这个类来实现…...