LLM:并行化训练

news2025/1/8 5:47:03

llama3.1论文称使用了:张量并行(TP)、流水线并行(PP)、上下文并行(CP)和数据并行(DP)。
在这里插入图片描述

并行化可以先粗分为:
1.数据并行
2.模型并行:张量并行,流水线并行
3.上下文并行(llama3.1)
4.deepspeed (专门提出)

所以主要就是 数据并行(DP)、张量并行(TP)、流水线并行(PP)。还有deepspeed。

1.数据并行

数据并行是最常见的并行形式,因为它很简单。在数据并行训练中,数据集被分割成几个碎片,每个碎片被分配到一个设备上。这相当于沿批次(Batch)维度对训练过程进行并行化。每个设备将持有一个完整的模型副本,并在分配的数据集碎片上进行训练。在反向传播之后,模型的梯度将会聚合(All Reduce),以便在不同设备上的模型参数能够保持同步。

在这里插入图片描述
DP(Data Parallelism):早期数据并行模式,一般采用参数服务器(Parameters Server)这一编程框架。实际中多用于单机多卡。
DDP(Distributed Data Parallelism):分布式数据并行,采用Ring AllReduce的通讯方式,多用于多机多卡场景。
可见:https://www.bilibili.com/video/BV1mm42137X8/?share_source=copy_web&vd_source=29af710704ae24d166ca951b4c167d53

2.张量并行

张量并行训练是将一个张量沿特定维度分成 N 块,每个设备只持有整个张量的 1/N,同时不影响计算图的正确性。
以一般的矩阵乘法为例,假设我们有 C = AB。我们可以将B沿着列分割成 [B0 B1 B2 … Bn],每个设备持有一列。然后我们将 A 与每个设备上 B 中的每一列相乘,我们将得到 [AB0 AB1 AB2 … ABn] 。此刻,每个设备仍然持有一部分的结果,例如,设备(rank=0)持有 AB0。为了确保结果的正确性,我们需要收集全部的结果,并沿列维串联张量。通过这种方式,我们能够将张量分布在设备上,同时确保计算流程保持正确。
也可以对这两个矩阵都进行切分。
在这里插入图片描述

3.流水线并行

流水线并行的核心思想是,模型按层分割成若干块,每块都交给一个设备。
在前向传播过程中,每个设备将中间的激活传递给下一个阶段。
在后向传播过程中,每个设备将输入张量的梯度传回给前一个流水线阶段。

在这里插入图片描述
该方案有个很大的缺陷是GPU的利用率太低,当一个GPU进行计算的时候,其他层的GPU都是闲置的。为了解决这个缺陷,谷歌提出了GPipe 流水线并行(Pipeline model parallesim ),下图来自GPipe官方论文。

在这里插入图片描述
在这里插入图片描述
方案引用了一个chunks的超参,将每一个mini-batch数据划分到chunks个micro-batches上。

4.deepspeed

官方文档:https://www.deepspeed.ai/

模型训练时的大概流程

在这里插入图片描述
正向传播时(FWD),上一层fp16的激活值和fp16的参数参与了计算,得到这一层的fp16激活值
反向传播时(BWD),本层的激活值和参数参与计算,得到fp16的梯度
参数更新时,fp16的梯度以及fp32的参数副本,momentum和variance参与计算,最终算出更新后的fp32参数、momentum和variance,然后将fp32的参数转化为fp16进行本层的参数更新

训练过程中的显存占用分析:

训练大模型时通常会采用AdamW优化器,并用混合精度训练来加速训练,基于这个前提分析显存占用。
请添加图片描述
来自:https://zhuanlan.zhihu.com/p/624740065
请添加图片描述
来自:https://zhuanlan.zhihu.com/p/639872915

按我的理解:fp16的模型参数,fp16的梯度,fp32的优化器状态:模型参数、动量、方差。最终就是2+2+4*(1+1+1)=16。

推理过程中的显存占用分析

请添加图片描述

deepspeed详解

在这里插入图片描述
可以看到baseline的参数估计就是我理解的这种,条件是提到的那些,k是优化器状态,2是模型参数,2是梯度。

ZeRO技术优化重点便是优化Model States 显存占用。在整个训练过程中, States只是会在对应算子计算时候才会被用到,optimizer states只在最终做update时才用到。数据并行中,gradients只在最后做AllReduce和updates时才用到。参数W只在做forward和backward的那一刻才用到,ZeRO技术针对以上做了以下优化:

Stage 0: 禁用所有类型的分片,仅使用 DDP (Distributed Data Parallel) ,对应下图的Baseline情况;

Stage 1: 把优化器状态(optimizer states) 分片到每个数据并行的工作进程(每个GPU)下,对应下图Pos

Stage 2: 把优化器状态(optimizer states) + 梯度(gradients) 分片到每个数据并行的工作进程(每个GPU)下,对应下图Pos + Pg的情况;

Stage 3: 把优化器状态(optimizer states) + 梯度(gradients) + 模型参数(parameters) 分片到每个数据并行的工作进程(每个GPU)下,Pos + Pg +Pp的情况;

Optimizer Offload: 在Stage2的基础上,把梯度和优化器状态下沉到CPU内存或硬盘上

Param Offload: 在Stage3的基础上,把模型参数下沉到CPU内存或硬盘上

deepspeed的实现需要设置一个config文件,在训练时一般使用zero2。

参考:
https://zhuanlan.zhihu.com/p/598714869

https://zhuanlan.zhihu.com/p/688873027
https://zhuanlan.zhihu.com/p/685472786
https://zhuanlan.zhihu.com/p/624740065
【动画理解Pytorch 大模型分布式训练技术 DP,DDP,DeepSpeed ZeRO技术】
https://zhuanlan.zhihu.com/p/639872915

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1969464.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

多模态多智能体,在实现系统2(深思熟虑)方面的探索

多模态和多智能体,在系统2(深思熟虑)方面的探索 提出背景理性的定义为什么理性定义是四大基本原则,而不是其他数量,又为何是这四个,而不是其他?理性 不等于 推理 通过多模态多智能体系统增强理性…

el-table 表格序号列前端实现递增,切换分页不从头开始

<el-table-column type"index" width"55" label"序号" :index"hIndex"> </el-table-column> 分页 <el-pagination size-change"handleSizeChange" current-change"handleCurrentChange"> <…

【Linux】动态库|静态库|创建使用|动态库加载过程

目录 ​编辑 前言 静态库 为什么要使用库(形成原理 ) 生成一个静态库 静态库的使用 动态库 生成一个动态库 动态库的使用 解决方法 动态库加载过程 ​编辑 前言 库&#xff08;Library&#xff09;是一种方式&#xff0c;可以将代码打包成可重用的格式&#xff08;站…

OrionX:革新GPU资源管理,助力AI开发团队高效运作

您的AI开发团队是否经常陷入这样的窘境&#xff1a; 人多卡少&#xff0c;GPU资源难以满足每个成员的需求&#xff1f; 当开发环境中需要变更GPU卡配置时&#xff0c;流程繁琐不堪&#xff0c;不得不关闭容器、重新配置再重启&#xff1f; 是否曾因GPU卡分配后未被充分利用而…

简单好用的DX修复工具下载|修复丢失损坏的DLL文件

DirectX是被广泛运用于游戏和多媒体应用程序的一种重要组件&#xff0c;它可以提供优良的视觉效果和音频体验。很多用户在使用计算机时或多或少会遇到因为DirectX缺失而导致相关问题。例如&#xff1a;系统故障、图形渲染错误、音频失真等问题。 今天小编将深入浅出地为大家讲…

在循环语句里面element重复提示最后一条的解决办法

做项目时遇到了个问题&#xff0c;要求把时间重叠的每个阶段都提示出来 但是发现$message的提示框不仅都重合在一起 并且数据内容只是最后一次循环出来的信息如下图 首先解决样式重合问题 这里我就用的是简单粗暴的方法加个定时器 这样重合问题就可以解决其次是提示内容只是最后…

删除分区 全局索引 drop partition global index Statistics变化

1.不一定unusable&#xff0c;可以先删除data (index 再删除过程中会更新结构)再drop/truncate. ---------------------- CREATE TABLE interval_sale ( prod_id NUMBER(6) , cust_id NUMBER , time_id DATE ) PARTITION BY RANGE (time_i…

前端面试宝典【HTML篇】【4】

欢迎来到《前端面试宝典》,这里是你通往互联网大厂的专属通道,专为渴望在前端领域大放异彩的你量身定制。通过本专栏的学习,无论是一线大厂还是初创企业的面试,都能自信满满地展现你的实力。 核心特色: 独家实战案例:每一期专栏都将深入剖析真实的前端面试案例,从基础知…

C++回顾——虚析构

一、示例代码 #include<iostream> using namespace std;class Weapon { public:virtual void getWeapon() 0;//virtual ~Weapon() default; };class bow :public Weapon { public:void getWeapon() override{cout << "弓箭 " << ends;}~bow(){c…

支持对接OpenAI、Ollama和本地向量模型,MaxKB开源知识库问答系统发布v1.4.0版本

2024年8月1日&#xff0c;MaxKB开源知识库问答系统正式发布v1.4.0版本。在这一版本中&#xff0c;MaxKB的社区版支持对接OpenAI、Ollama和本地的向量模型&#xff0c;并且支持设置模型的使用权限&#xff0c;同时MaxKB还支持知识库自定义向量模型。 自v1.4.0版本开始&#xff…

坐牢第二十一天 20240801(IO)

一.作业 1、使用两个线程完成两个文件的拷贝&#xff0c;分支线程1拷贝前一半&#xff0c;分支线程2拷贝后一半&#xff0c;主线程回收两个分支线程的资源 #include <myhead.h> struct Node {char *src;char *dest;int start;int len; }; //定义求源文件大小的函数 int…

python爬虫初识

一、什么互联网 互联网&#xff08;Internet&#xff09;是全球范围内最大的计算机网络&#xff0c;它将数以百万计的私人、公共、学术、商业和政府网络通过一系列标准通信协议&#xff08;如TCP/IP&#xff09;连接起来形成的一个庞大的国际网络。 互联网的起源可以追溯到196…

【C++】1.C++入门(1)

文章目录 1.C关键字2.命名空间2.1 命名空间定义2.2 命名空间使用 3.C输入&输出4.缺省参数4.1 缺省参数概念4.2 缺省参数分类 5.函数重载5.1 函数重载概念5.2 C支持函数重载的原理--名字修饰(name Mangling) 1.C关键字 C总计63个关键字&#xff0c;C语言32个关键字 2.命名空…

0206创建场景状态的基础接口

一、创建一个类 二、写一个类&#xff0c;作为接口类的作用&#xff08;不一定是interface&#xff09;

ctfshow 大赛原题 web689--web695

web689 <?php error_reporting(0); if(isset($_GET) && !empty($_GET)){$url $_GET[file];$path "upload/".$_GET[path];}else{show_source(__FILE__);exit(); }if(strpos($path,..) > -1){ //检查 $path 是否包含 ..&#xff0c;以防止路径注…

Podman 发布 v5.2.0-RC3

这是 v5.2.0 的最终候选版本。以下是初步的发布说明。 功能 Podman 现在支持使用 libkrun 作为在 MacOS 上创建虚拟机的后端。libkrun 后端的优势在于允许将 GPU 挂载到虚拟机中以加速任务。默认后端仍然是 applehv。Quadlet 现在支持.build 文件&#xff0c;这使得可以由 Quad…

2024PDF编辑工具新趋势:从基础到高级的全方位方案

随着数字化办公的发展&#xff0c;我们对PDF编辑的需求也日益增长。从最开始对文字的修改到现在可以插入音频、视频文件。这些都离不开PDF编辑软件的功劳&#xff0c;那有什么好用的PDF编辑工具呢&#xff0c;听我娓娓道来。 1.福昕PDF编辑器 直达链接&#xff1a;https://e…

【轨物方案】分布式光伏电站运维智能化升级方案

分布式光伏电站从2010年开始在国内推广&#xff0c;到2022年底&#xff0c;全国工商业分布式光伏电站装机容量为157.62GW&#xff0c;并且新增装机量逐年递增。以1MW/电站计算&#xff0c;保守估计全国至少已有十几万个工商业分布式光伏电站。 这些电站的运维工作是往往交给专业…

百度松果菁英班作业整理(第一期)

本期的题目比较简单&#xff0c;最后两题稍微复杂&#xff0c;但是主题思路也不难&#xff0c;大家可以一起练习。 孪生质数 在质数中&#xff0c;若两个质数之差为2,我们称之为孪生质数,例如(3、5)(5、7)&#xff0c;输入2个正整数&#xff0c;判断他是不是孪生质数,输出YE…