《大规模语言模型从理论到实践》第一轮学习--分布式训练

news2024/11/25 4:28:17

基础知识

5分钟看懂电脑硬件配置 - 知乎 (zhihu.com)

显存

定义:显存是显卡上的专用高速缓存,用于存储图形处理器(GPU)在处理图像和视频数据时所需的临时数据。

功能:显存的主要作用是提供GPU快速访问的数据存储,支持图形渲染和并行计算任务。

内存

定义:内存(RAM)是计算机系统中的一种易失性存储器,用于存储CPU执行程序时所需的临时数据。

功能:内存为CPU提供快速访问的数据存储,支持程序的运行和数据的处理。它是外存与CPU进行沟通的桥梁,计算机中所有程序的运行都在内存中进行。

CPU

定义:CPU(Central Processing Unit)是计算机系统的核心处理器,负责执行程序中的指令,处理数据。

功能:CPU通过读取内存中的数据,执行指令,完成计算和控制任务。它是信息处理和程序运行的最终执行单元。

GPU

定义:GPU(Graphics Processing Unit)是图形处理器,专门用于处理图形和图像数据,以及进行并行计算。

功能:GPU通过其大量的核心和高速显存,能够高效地处理图形数据,同时支持深度学习等并行计算任务。

显卡

定义:显卡(Graphics Card)是一种专门用于处理图像和视频数据的硬件设备

功能:显卡的主要作用是将计算机中的数字信号转换为可以在显示器上显示的图像信号。它通常由处理器(GPU)、显存、电路板等部分组成。

大模型参数和数据量的单位

参数量的单位

参数量指的是模型中所有权重和偏置的数量总和。在大模型中,参数量的单位通常以“百万”(M)或“亿”(B,也常说十亿)来表示。

  • 百万(M):表示一百万个参数。例如,如果一个模型有110M个参数,那么它实际上有110,000,000(即1.1亿)个参数。
  • 亿(B):表示十亿个参数。例如,GPT-3模型有175B个参数,即175,000,000,000(即1750亿)个参数。

数据量的单位

在大数据和机器学习的语境下,数据量通常指的是用于训练或测试模型的数据的大小。数据量的单位可以是字节(Byte)、千字节(KB)、兆字节(MB)、吉字节(GB)等。

  • 字节(Byte):是数据存储的基本单位。一个字节由8个比特(bit)组成。
  • 千字节(KB):等于1024个字节。
  • 兆字节(MB):等于1024个千字节,也常用于表示文件或数据的大小。
  • 吉字节(GB):等于1024个兆字节,是较大的数据存储单位。

在大模型中,由于模型参数通常是以浮点数(如float32)存储的,因此可以通过模型参数量来计算模型所需的存储空间大小。例如,如果一个模型有1.1亿个参数,并且每个参数用float32表示(即每个参数占4个字节),那么该模型所需的存储空间大约为44MB(1.1亿×4字节/1024/1024)。

bit(比特):bit是二进制数字中的位,是信息量的最小单位。在二进制数系统中,每个0或1就是一个bit。bit是计算机内部数据存储和传输的基本单位。在数据传输过程中,通常以bit为单位来表示数据的传输速率或带宽。

字节(Byte)定义:字节是计算机信息技术用于计量存储容量的一种单位,也表示一些计算机编程语言中的数据类型和语言字符。字节通常由8个bit组成。字节是计算机中数据处理的基本单位。在存储数据时,通常以字节为单位来表示数据的大小或容量。

bit和字节的关系:1字节(Byte)等于8比特(bit)。在计算机科学中,经常需要将数据的大小从字节转换为比特,或者从比特转换为字节。例如,在数据传输过程中,如果知道数据的传输速率是以比特每秒(bps)为单位的,那么可以通过除以8来将其转换为字节每秒(Bps)的单位。

分布式训练(Distributed Training)

是指将机器学习或深度学习模型训练任务分解成多个子任务,并在多个计算设备上并行地进行训练。这里计算设备可以是中央处理器(Central Processing Unit,CPU)、图形处理器(Graphics Processing Unit,GPU)、张量处理器(Tensor Processing Unit,TPU)也可以是神经网络处理器(Neural network Processing Unit,NPU)。

单设备计算速度主要由单块计算加速芯片的运算速度和数据 I/O 能力来决定,对单设备训练效率进行优化,主要的技术手段有混合精度训练、算子融合、梯度累加等
分布式训练系统中计算设备数量越多,其理论峰值计算速度就会越高,但是受到通讯效率的影响,计算设备数量增大则会造成加速比急速降低;
多设备加速比则是由计算和通讯效率决定,需要结合算法和网络拓扑结构进行优化.
分布式训练并行策略主要目标就是提升分布式训练系统中的多设备加速比。
分布式训练系统仍然需要克服计算墙、显存墙、通信墙等多种挑战,以确保集群内的所有资源得到充分利用,从而加速训练过程并缩短训练周期。

• 计算墙:单个计算设备所能提供的计算能力与大语言模型所需的总计算量之间存在巨大差异。

• 显存墙:单个计算设备无法完整存储一个大语言模型的参数。

通信墙:分布式训练系统中各计算设备之间需要频繁地进行参数传输和同步。由于通信的延迟和带宽限制,这可能成为训练过程的瓶颈。

计算墙和显存墙源于单计算设备的计算和存储能力有限,与模型对庞大计算和存储需求之间存在 矛盾。这个问题可以通过采用分布式训练方法来解决,但分布式训练又会面临通信墙的挑战。在 多机多卡的训练中,这些问题逐渐显现。随着大模型参数的增大,对应的集群规模也随之增加,这些问题变得更加突出。同时,在大型集群进行长时间训练时,设备故障可能会影响或中断训练过 程,对分布式系统的问题性也提出了很高要求。

AI集群

集群就是指一组(若干个)相互独立的计算机,利用高速通信网络组成的一个较大的计算机服务系统,每个集群节点(即集群中的每台计算机)都是运行各自服务的独立服务器。这些服务器之间可以彼此通信,协同向用户提供应用程序,系统资源和数据,并以单一系统的模式加以管理。当用户请求集群系统时,集群给用户的感觉就是一个单一独立的服务器,而实际上用户请求的是一组集群服务器。

硬件组成:AI集群通常包括高性能的CPU和GPU,以及大量的RAM和存储空间。其中,GPU尤其重要,因为它们能够并行处理大量数据,加速深度学习模型的训练过程。此外,还需要集群网络,RDMA(远程直接数据存取)网络是集群网络的首选,这是一种高带宽低延迟的大规模通信网络,非常适用于AI算力集群。

软件架构:集群需要运行特定的软件,如分布式计算框架(如TensorFlow、PyTorch等),这些框架能够协调不同节点上的计算任务。

从设备数上优化计算速率

分布式训练需要使用由多台服务器组成的计算集群完成,分布式训练集群属于高性能计算集群,集群的架构主要有两种常见架构:参数服务器架构 (Parameter Server,PS)和去中心化架构(Decentralized Network)。

高性能计算集群的硬件组成

AI集群通信中的软硬件介绍-腾讯云开发者社区-腾讯云 (tencent.com)

带宽:每一秒通信多少数据;延迟:通信的快慢

分布式训练服务器集群架构

AI集群P/S服务器架构

参数服务器Parameter Server(P/S架构)已经成为现在AI集群、AI服务器中最常用的组网架构,有了参数服务器PS架构之后,训练大模型就需要解决模型参数同步的问题,于是出现了各种各样的物理网络互联方式,通过集合通信进行网络数据传输。而环是一种较优的网络拓扑,通过Ring All Reduce算法可以有效地解决参数服务器之间的数据同步问题。

区别在于:CPU完成2、3;GPU0完成2、3;每一个GPU完成2、3。

参数服务器架构分布式训练过程可以细分为同步训练和异步训练。

同步并行

白色的部分叫bubble

 异步并行

橘色是反向传播,蓝色是正向传播,可以看到device 1在device 2还没有开始反向时候就已经进行了下一步的前向传播,这样就会导致冲突。

环同步(Ring Sychronization)

GPU和GPU之间是通过NVLink来连接的,不同的GPU之间有环连接。

百度提出的Scatter-reduce and all gather

去中心化架构

去中心化架构没有中央服务器或控制节点,而是由节点之间进行直接通信和协调,这种架构的好处是可以减少通信瓶颈,提高系统的可扩展性。可以减少通信墙的影响。其通常采用集合通信(CC)实现。常见通信原语有: 

Broadcast

Scatter

Reduce

All-Reduce

Gather

All-Gather

Reduce-Scatter

All-to-All

 

 Pytorch - 分布式通信原语(附源码) - 知乎 (zhihu.com)

从设备间加速比优化计算速率

数据并行

DataParallel(DP)

DP里面只有一个优化器Optimizer,这个优化器Optimizer只在Master GPU上进行参数更新,当环境不再不在改变的时候,其它GPU选择了躺平,当GPU:0忙前忙后去分发数据、汇总梯度,更新参数的时候,其它GPU就静静躺着。 

DistributedDataParallel(DDP)

DDP采用多进程架构,赋予了每个GPU更多的自由,支持多机多卡分布式训练。每个进程都拥有自己的优化器Optimizer,可独立优化所有步骤。每个进程中在自己的GPU上计算loss,反向计算梯度。

模型并行MP

1.按模型的「layer层切分」到不同设备;流水线并行

朴素流水线并行:计算图中的下游设备(Downstream Device)需要长时 间持续处于空闲状态,等待上游设备(Upstream Device)的计算完成,才能开始计算自身的任务。这种情况导致了设备的平均使用率大幅降低,形成了模型并行气泡。

2.将参数切分到不同设备,张量并行 

混合并行

BLOOM 使用了 Megatron-DeepSpeed 框架进行训练,主要包含两个部分:Megatron-LM 提供张量并行能力和数据加载原语;DeepSpeed 提供 ZeRO 优化器、模型流水线以及常规的分布式训练组件。通过这种方式可以实现数据、张量和流水线三维并行。

DeepSpeed 实践

这个博客介绍的非常清晰:一文读懂deepSpeed:深度学习训练的并行化-CSDN博客

目前训练超大规模语言模型技术路线:GPU + PyTorch + Megatron-LM + DeepSpeed

DeepSpeed 提供了分布式计算框架,几个重要的基础的概念:节点编号、全局进程编号、局部进程编号、全局总进程数和主节点。DeepSpeed 主节点(master_ip+master_port)负责协调所有其他节点和进程的工作,由主节点所在服务器的 IP 地址和主节点进程的端口号来确定 主节点。主节点还负责监控系统状态、处理任务分配和结果汇总等任务,因此是整个系统的关键 部分。节点编号(node_rank)是系统中每个节点的唯一标识符,用于区分不同计算机之间的通信。 全局进程编号(rank)是整个系统中的每个进程的唯一标识符,用于区分不同进程之间的通信。局部进程编号(local_rank):是单个节点内的每个进程的唯一标识符,用于区分同一节点内的不同 进程之间的通信。全局总进程数(word_size)是整个系统中运行的所有进程的总数,用于确定可 以并行完成多少工作以及需要完成任务所需的资源数量。

ZeRO(Zero Redundancy Optimizer)

内存优化技术,ZeRO将模型的参数、梯度和优化器状态进行分片,平均分配到所有的GPU中,这样每个GPU只存储一部分数据,从而减少了单个设备的内存需求。

Megatron-LM

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

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

相关文章

从桌面运维转到网络安全后,我是怎样成为大厂高级网络安全工程师

我的第一份工作是桌面运维,我的上一份工作是大厂高级网络安全工程师。 很多人都不知道网络安全工程师是具体做什么的,今天就来给大家细细说下。 网络安全工程师是保护信息系统和网络免受破坏、攻击或非法访问的专业人员。他们的工作内容主要包括以下几个…

poi通过在word中写入了表格,通过libreoffice转换成PDF后,word中刚才画的表格宽度无限拉伸问题的解决。

一、复现: poi版本: <poi>3.17</poi><poi-ooxml>3.17</poi-ooxml><poi-ooxml-schemas>3.17</poi-ooxml-schemas><dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId><versio…

单例模式和读者写者问题

文章目录 10. 线程安全的单例模式10.1 什么是设计模式10.2 什么是单例模式10.3 单例模式的特点10.4 饿汉方式和懒汉方式10.5 单例模式的线程池 11. STL和智能指针的线程安全 问题11.1 STL中的容器是否是线程安全的?11.2 智能指针是否是线程安全的? 12. 其他常见的各种锁13. 读…

【Linux】来查看当前系统的架构

使用 uname 命令 uname -m 使用 arch 命令 arch 查看 /proc/cpuinfo 文件 查找 model name 或 Processor 字段。 cat /proc/cpuinfo 使用 lscpu 命令 lscpu

linux线程 | 线程的控制

前言&#xff1a;本节内容为线程的控制。在本篇文章中&#xff0c; 博主不仅将会带友友们认识接口&#xff0c; 使用接口。 而且也会剖析底层&#xff0c;带领友友们理解线程的底层原理。 相信友友们学完本节内容&#xff0c; 一定会对线程的控制有一个很好的把握。 那么&#…

算法:反转链表

一、题目描述 给定单链表的头节点 head &#xff0c;请反转链表&#xff0c;并返回反转后的链表的头节点。 二、解题思路 1.迭代法 原始链表中&#xff0c;每个结点的 next 指针都指向后一个结点。反转链表之后&#xff0c;每个结点的 next 指针都指向前一个结点。因此&…

Unity UndoRedo(撤销重做)功能

需求 撤销与重做功能 思考 关于记录的数据的两点思考&#xff1a; 记录操作记录影响显示和逻辑的所有数据 很显然这里就要考虑取舍了&#xff1a; 记录操作 这种方案只需要记录每一步的操作&#xff0c;具体这个操作要怎么渲染和实现出来完全需要自己去实现&#xff0c;这…

怎么下载安装yarn

安装 npm install --global yarn 是否安装成功 yarn -v Yarn 淘宝源安装&#xff0c;分别复制粘贴以下代码行到黑窗口运行即可 yarn config set registry https://registry.npm.taobao.org -g yarn config set sass_binary_site http://cdn.npm.taobao.org/di…

免杀对抗—python分离免杀无文件落地图片隐写SOCK管道

前言 之前就基本把所有语言都讲了一遍了&#xff0c;C/C&#xff0c;Java&#xff0c;python&#xff0c;golang&#xff0c;汇编。今天就开始讲免杀的技巧以及手法&#xff0c;分离免杀之前讲过一点&#xff0c;就是通过http或者参数获取shellcode&#xff0c;今天把其他的分…

ppt压缩文件怎么压缩?压缩PPT文件的多种压缩方法

ppt压缩文件怎么压缩&#xff1f;当文件体积过大时&#xff0c;分享和传输就会变得困难。许多电子邮件服务对附件的大小有限制&#xff0c;而在网络环境不佳时&#xff0c;上传和下载大文件可能耗时较长。此外&#xff0c;在不同设备上播放时&#xff0c;较大的PPT文件还可能导…

Chromium HTML attribute与c++接口对应关系分析

<a href"https://www.w3school.com.cn" target"_blank">访问 W3School</a>前端这些属性定义在html_attribute_names.json5文件中&#xff1a; third_party\blink\renderer\core\html\html_attribute_names.json5 html_attribute_names.json5…

【前端碎片记录】大文件分片上传

大文件分片上传&#xff0c;主要是为了提高上传效率&#xff0c;避免网络问题或者其他原因导致整个上传失败。 HTML部分没什么特殊代码&#xff0c;这里只写js代码。用原生js实现&#xff0c;框架中可参考实现 // 获取上传文件的 input框 const ipt document.querySelector(…

Richtek立锜科技线性稳压器 (LDO) 选型

一、什么是LDO? LDO也可称为低压差线性稳压器&#xff0c;适合从较高的输入电压转换成较低输出电压的应用&#xff0c;这种应用的功率消耗通常不是很大&#xff0c;尤其适用于要求低杂讯、低电流和输入、输出电压差很小的应用环境。 二、LDO的特性 LDO透过控制线性区调整管…

【每日一坑】pcb出的光绘文件导入到cam350有两个警告

pcb出的光绘文件导入到cam350有两个警告&#xff1a; 1 Warning - Zero radius arc detected. Assuming linear interpolation. 2 Warning - Apertures are used which have a size of 0. 这个 应该检查到处光绘文件时候&#xff0c;默认的线宽是否为0&#xff1b; 通过负片…

面试八股文对校招的用处有多大?C/C++语言篇

前言 1.本系列面试八股文的题目及答案均来自于网络平台的内容整理&#xff0c;对其进行了归类整理&#xff0c;在格式和内容上或许会存在一定错误&#xff0c;大家自行理解。内容涵盖部分若有侵权部分&#xff0c;请后台联系&#xff0c;及时删除。 2.本系列发布内容分为12篇…

单通道 LVDS 差分线路接收器MS21112S

MS21112S 是一款单通道低压差分信号 (LVDS) 线 路接收器。在输入共模电压范围内&#xff0c;差分接收器可以 将 100mV 的差分输入电压转换成有效的逻辑输出。 该芯片可应用于 100Ω 的受控阻抗介质上&#xff0c;进行点对 点基带数据传输。传输介质可以是印刷电路板、…

图像处理(二)——MDPI特刊推荐

特刊征稿 01 期刊名称&#xff1a; Computer Vision and Image Processing, 2nd Edition 截止时间&#xff1a; 投稿截止日期&#xff1a;2024年12月31日 目标及范围&#xff1a; 感兴趣的主题包括但不限于&#xff1a; 用于图像分类和识别的深度学习 对象检测和跟…

EdgeNAT: 高效边缘检测的 Transformer

EdgeNAT: Transformer for Efficient Edge Detection 介绍了一种名为EdgeNAT的基于Transformer的边缘检测方法。 1. 背景与动机 EdgeNAT预测结果示例。(a, b):来自BSDS500的数据集的输入图像。(c, d):对应的真实标签。(e, f):由EdgeNAT检测到的边缘。(e)显示了由于颜色变化…

QT元对象系统特性详细介绍(信号槽、类型信息、动态设置属性)(注释)

目 录 一、元对象系统简介 二、信号和槽 三、类型信息 四、动态设置属性 一、元对象系统简介 QT中的元对象系统Q_OBJECT并不是C标准代码&#xff0c;因此在使用时需要QT的MOC&#xff08;元对象编译器&#xff09;进行预处理&#xff0c;MOC会在编译时期读取C代码中的特定…

暗语源码 复现佛禅翻译系统v2升级版源码

与佛论禅翻译系统 一个翻译佛论的娱乐系统&#xff0c;类似于核心价值观加密 此为升级版&#xff0c;每次加密得到的结果不一样&#xff0c;配合箴言功能&#xff0c;更加安全 源码下载&#xff1a;https://download.csdn.net/download/m0_66047725/89874751 更多资源下载&a…