【学习笔记】如何训练大模型
如何在许多 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…...
vue3 字体颜色设置的多种方式
在Vue 3中设置字体颜色可以通过多种方式实现,这取决于你是想在组件内部直接设置,还是在CSS/SCSS/LESS等样式文件中定义。以下是几种常见的方法: 1. 内联样式 你可以直接在模板中使用style绑定来设置字体颜色。 <template><div :s…...
MySQL 8.0 OCP 英文题库解析(十三)
Oracle 为庆祝 MySQL 30 周年,截止到 2025.07.31 之前。所有人均可以免费考取原价245美元的MySQL OCP 认证。 从今天开始,将英文题库免费公布出来,并进行解析,帮助大家在一个月之内轻松通过OCP认证。 本期公布试题111~120 试题1…...
全志A40i android7.1 调试信息打印串口由uart0改为uart3
一,概述 1. 目的 将调试信息打印串口由uart0改为uart3。 2. 版本信息 Uboot版本:2014.07; Kernel版本:Linux-3.10; 二,Uboot 1. sys_config.fex改动 使能uart3(TX:PH00 RX:PH01),并让boo…...
如何理解 IP 数据报中的 TTL?
目录 前言理解 前言 面试灵魂一问:说说对 IP 数据报中 TTL 的理解?我们都知道,IP 数据报由首部和数据两部分组成,首部又分为两部分:固定部分和可变部分,共占 20 字节,而即将讨论的 TTL 就位于首…...
IP如何挑?2025年海外专线IP如何购买?
你花了时间和预算买了IP,结果IP质量不佳,项目效率低下不说,还可能带来莫名的网络问题,是不是太闹心了?尤其是在面对海外专线IP时,到底怎么才能买到适合自己的呢?所以,挑IP绝对是个技…...
【Nginx】使用 Nginx+Lua 实现基于 IP 的访问频率限制
使用 NginxLua 实现基于 IP 的访问频率限制 在高并发场景下,限制某个 IP 的访问频率是非常重要的,可以有效防止恶意攻击或错误配置导致的服务宕机。以下是一个详细的实现方案,使用 Nginx 和 Lua 脚本结合 Redis 来实现基于 IP 的访问频率限制…...
【C++进阶篇】智能指针
C内存管理终极指南:智能指针从入门到源码剖析 一. 智能指针1.1 auto_ptr1.2 unique_ptr1.3 shared_ptr1.4 make_shared 二. 原理三. shared_ptr循环引用问题三. 线程安全问题四. 内存泄漏4.1 什么是内存泄漏4.2 危害4.3 避免内存泄漏 五. 最后 一. 智能指针 智能指…...
Linux nano命令的基本使用
参考资料 GNU nanoを使いこなすnano基础 目录 一. 简介二. 文件打开2.1 普通方式打开文件2.2 只读方式打开文件 三. 文件查看3.1 打开文件时,显示行号3.2 翻页查看 四. 文件编辑4.1 Ctrl K 复制 和 Ctrl U 粘贴4.2 Alt/Esc U 撤回 五. 文件保存与退出5.1 Ctrl …...
解读《网络安全法》最新修订,把握网络安全新趋势
《网络安全法》自2017年施行以来,在维护网络空间安全方面发挥了重要作用。但随着网络环境的日益复杂,网络攻击、数据泄露等事件频发,现行法律已难以完全适应新的风险挑战。 2025年3月28日,国家网信办会同相关部门起草了《网络安全…...
LLaMA-Factory 微调 Qwen2-VL 进行人脸情感识别(二)
在上一篇文章中,我们详细介绍了如何使用LLaMA-Factory框架对Qwen2-VL大模型进行微调,以实现人脸情感识别的功能。本篇文章将聚焦于微调完成后,如何调用这个模型进行人脸情感识别的具体代码实现,包括详细的步骤和注释。 模型调用步骤 环境准备:确保安装了必要的Python库。…...
