当前位置: 首页 > news >正文

【学习笔记】如何训练大模型

如何在许多 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 传播每个参数对最终输出的影响程度梯度(在新窗口中打开)关于每个参数。批次的平均梯度、参数和一些每个参数的优化状态将传递给优化算法,例如亚当(在新窗口中打开),用于计算下一次迭代的参数(在数据上的性能应该略好一些)和新的每个参数的优化状态。随着训练对成批数据的迭代,模型会不断发展,以产生越来越准确的输出。

各种并行技术将此训练过程划分为不同维度,包括:

  1. 数据并行性 - 在不同的 GPU 上运行批处理的不同子集;
  2. 流水线并行性 - 在不同的 GPU 上运行模型的不同层;
  3. 张量并行性 - 分解单个运算的数学运算,例如在 GPU 之间拆分的矩阵乘法;
  4. 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由于其最小化的功能集,提供了更广泛的兼容性。然而&#xff…...

基于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…...

外贸网站SEO优化需要注意哪些合规性问题

外贸网站SEO优化需要注意哪些合规性问题 在全球化的今天&#xff0c;外贸业务的重要性日益凸显&#xff0c;而外贸网站作为企业展示产品和服务的重要平台&#xff0c;其SEO优化成为了提升网站流量和转化率的关键。在进行外贸网站SEO优化时&#xff0c;企业必须关注和遵守一系列…...

三层交换机RIP实战:从VLAN划分到动态路由配置全解析

1. 三层交换机与RIP协议基础认知 第一次接触三层交换机的朋友可能会疑惑&#xff1a;这玩意儿和普通交换机有什么区别&#xff1f;简单来说&#xff0c;普通二层交换机就像小区里的邮递员&#xff0c;只能根据门牌号&#xff08;MAC地址&#xff09;在同一栋楼里送快递。而三层…...

3大核心功能解密:Greasy Fork如何成为浏览器扩展的终极解决方案

3大核心功能解密&#xff1a;Greasy Fork如何成为浏览器扩展的终极解决方案 【免费下载链接】greasyfork An online repository of user scripts. 项目地址: https://gitcode.com/gh_mirrors/gr/greasyfork 你是否曾为浏览器功能不足而烦恼&#xff1f;想要屏蔽烦人的广…...

LangChain DeepAgents 速通指南(六)—— DeepAgents SubAgent 子智能体机制

前言 上篇文章《LangChain DeepAgents 速通指南&#xff08;五&#xff09;—— 快速了解DeepAgents框架及其核心特性》介绍了 DeepAgents 在任务规划、上下文管理、子智能体并行执行等方面的强大能力&#xff0c;仅需少量代码即可构建出复杂的智能体。上篇的案例演示也展示了…...

DL基础营 | 第P1周:Pytorch实现mnist手写数字识别

&#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊编译器&#xff1a;jupyterlab 一、 前期准备 1. 设置GPU 2. 导入数据 3. 数据可视化 二、构建简单的CNN网络 加载并打印模型 三、 训练模型 1. 设置超参数 …...

解锁5大核心能力:猫抓Cat-Catch资源嗅探工具完全指南

解锁5大核心能力&#xff1a;猫抓Cat-Catch资源嗅探工具完全指南 【免费下载链接】cat-catch 猫抓 浏览器资源嗅探扩展 / cat-catch Browser Resource Sniffing Extension 项目地址: https://gitcode.com/GitHub_Trending/ca/cat-catch 猫抓Cat-Catch是一款高效的浏览器…...

Spring AI聊天记录丢了怎么办?手把手教你用Redis实现ChatMemory持久化(附完整代码)

Spring AI聊天记录持久化实战&#xff1a;Redis解决方案与工程实践 在构建智能对话系统时&#xff0c;聊天记录的持久化是一个经常被忽视却至关重要的环节。想象一下这样的场景&#xff1a;用户昨天与你的客服机器人进行了长达30分钟的咨询&#xff0c;今天再次访问时却发现系统…...

PCIe C++代理实例化

为了能调用PCIe AVIP的C用户接口&#xff0c;先要在C仿真文件中对PCIe C代理做一个实例化声明。PCIe C代理负责两件事&#xff1a;从C仿真程序获得事务报文&#xff0c;并将其通过信号接口发送给BFM。从信号接口接收事务响应报文&#xff0c;并将其发送给C仿真程序。注意&#…...

Qwen-Image-Layered实战:一键将图片拆成可编辑图层,设计师效率提升10倍

Qwen-Image-Layered实战&#xff1a;一键将图片拆成可编辑图层&#xff0c;设计师效率提升10倍 你是不是也遇到过这样的场景&#xff1f;客户发来一张产品海报&#xff0c;说“把背景换成星空&#xff0c;把Logo放大一点&#xff0c;再把模特往右移一点”。听起来只是几个简单…...

Linux上使用apt-file查找编译时缺失的依赖库

前言&#xff1a;在Linux上做开发时会遇到依赖库缺失与环境配置问题&#xff0c;如报"fatal error:xxxxxxx.h:没有那个文件或者目录"等错误&#xff0c;此时则只能通过提示中缺失的头文件"xxxxxxx.h"进行缺失依赖库的定位&#xff0c;若错误提示的头文件为…...