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

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

基础知识

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

相关文章:

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

基础知识 5分钟看懂电脑硬件配置 - 知乎 (zhihu.com) 显存 定义:显存是显卡上的专用高速缓存,用于存储图形处理器(GPU)在处理图像和视频数据时所需的临时数据。 功能:显存的主要作用是提供GPU快速访问的数据存储&a…...

多模态智能

研究背景: 深度学习从1.0的端到端走向2.0的预训练,通过大规模预训练来记忆多模态数据中共性知识,增强对下游任务的学习能力。 深度学习1.0:特定任务有标注训练数据->随机初始化训练->最终模型 深度学习2.0:大规…...

【机器学习(十三)】机器学习回归案例之股票价格预测分析—Sentosa_DSML社区版

文章目录 一、背景描述二、Python代码和Sentosa_DSML社区版算法实现对比(一) 数据读入(二) 特征工程(三) 样本分区(四) 模型训练和评估(五) 模型可视化 三、总结 一、背景描述 股票价格是一种不稳定的时间序列,受多种因素的影响。影响股市的外部因素很多,主要有经济因素、政治因…...

大模型微调

概述 什么是模型微调? 模型微调是通过微调工具,使用独特的场景数据对平台的基础模型进行调整,帮助你快速定制一个更符合业务需求的大型模型。其优势在于对基础模型进行小幅调整以满足特定需求,相比于训练一个新模型,…...

240607 继承

面向对象三大特性:封装、继承、多态 RE: 封装 C把数据和方法封装在类里面迭代器和适配器 继承 1 基类 & 派生类 一个类可以派生自多个类,这意味着,它可以从多个基类继承数据和函数。定义一个派生类,我们使用一个类派生列表…...

轻松应对意外丢失:高效电脑数据恢复指南!

有时候由于误操作、硬件故障、病毒攻击等原因,电脑里的重要文件可能会突然消失不见。面对这样的情况,很多人会感到手足无措。其实,借助专业的电脑数据恢复软件,我们可以较为轻松地找回丢失的数据。今天,我们就来介绍几…...

vue项目中播放rtsp视频流

一、下载webrtc-streamer 下载地址:https://github.com/mpromonet/webrtc-streamer/releases 根据设备型号下载对应的版本到本地直接解压就行,我下载的是webrtc-streamer-v0.8.6-dirty-Windows-AMD64-Release.tar版本。 双击webrtc-streamer.exe可执行文…...

tomcat部署web配置环境变量

在Tomcat中设置环境变量通常涉及以下步骤: 找到Tomcat的启动脚本(如catalina.sh或catalina.bat)。 在启动脚本中设置环境变量。 对于catalina.sh(Linux/Unix系统),你可以在文件顶部添加环境变量&#xf…...

数据仓库技术及应用(练习1)

1.创表 (1)customers.csv CREATE EXTERNAL TABLE IF NOT EXISTS customers ( customer_id int, customer_fname varchar(45), customer_lname varchar(45), customer_email varchar(45), customer_password varchar(45), customer_street …...

老板的“神助攻”:公司电脑监控软件

在当今的商业世界中,企业管理者都希望员工能全身心投入工作,为企业创造更多价值。然而,员工上班摸鱼的现象却让许多老板头疼不已。公司电脑监控软件的出现,为解决这一问题提供了可能。接下来,我们将详细介绍几款优质的…...

前端vue部署网站

这里讲解一下前端vue框架部署网站,使用工具是 xshell 和 xftp (大家去官网安装免费版的就行了) 服务器 我使用的阿里云服务器,买的是 99 一年的,淘宝有新手9.9 一个月服务器。可以去用,学生的话是有免费三…...

Unity3D 动画回调函数详解

在Unity3D中,动画回调函数是实现精细动画效果的重要工具。通过动画回调函数,我们可以在动画的特定时刻执行自定义代码,从而实现更加灵活和复杂的动画效果。本文将详细解释Unity3D中的动画回调函数,并提供相应的代码实现。 对惹&a…...

el-table表格表尾合计行,指定合计某几列,自定义合计方法

🤵 作者:coderYYY 🧑 个人简介:前端程序媛,目前主攻web前端,后端辅助,其他技术知识也会偶尔分享🍀欢迎和我一起交流!🚀(评论和私信一般会回&#…...

一款工具替你解决Mac电脑菜单栏图标杂乱问题

你的菜单栏是不是各种图标挤在一起?图标过多显得杂乱?刘海屏遮挡菜单栏图标?教你如何让你的菜单栏变的简洁美观 iBar,一款Mac上优秀的菜单栏管理工具,可以自主选择菜单栏图标隐藏,单独窗口聚合展示&#x…...

MySQL 基础入门教程

参考视频地址:一小时MySQL教程 bilibili SQL 基础 数据库分为关系型数据库和非关系型数据库 常见的关系型数据库: MySQL、PostgreSQL、Oracle、SQL Server等。 非关系型数据库: MongoDB(文档型数据库)、Redis&am…...

俏生元将传统膳食智慧融入现代生活,自然成分绽放健康光彩

近年来,当代女性健康食品市场正经历快速发展和显著变化。随着女性健康意识的提升,市场对专门针对女性健康的产品需求快速上升。女性消费者对健康的关注不再局限于表面,而是越来越注重内在健康和生活质量的提升。此外,中式养生文化…...

腾讯云推流播放相关

直播的在线人数是否有上限? 腾讯云直播默认不限制观看直播的在线人数,只要网络等条件允许都可以观看直播。如果用户配置了带宽限制,当观看人数过多、超出了限制带宽时新的用户无法观看,此情况下在线人数是有限制的。 如何使用播…...

UE5运行时动态加载场景角色动画任意搭配-相机及运镜(二)

通过《MMD模型及动作一键完美导入UE5》系列文章,我们可以把外部场景、角色、动画资产导入UE5,接下来我们将实现运行时动态加载这些资产,并任意组合搭配。 1、运行时播放相机动画 1、创建1个BlueprintActor,通过这个蓝图动态创建1个LevelSequence,并Play 2、将这个Bluep…...

@JsonAlias和@JSONField序列化和反序列化

com.fasterxml.jackson.annotation.JsonAlias("expressCode") com.alibaba.fastjson.annotation.JSONField(name "expressCode") 这两个注解分别属于不同的JSON序列化框架:Jackson 和 Fastjson,它们的用途是处理JSON字段的名称映射…...

k8s1.27部署ingress 1.11.2

k8s1.27部署ingress 1.11.2 要求: 1、使用主机网络。 2、多节点部署,以来标签:isingressistrue ingress1.11.2支持版本 官方参考链接: https://github.com/kubernetes/ingress-nginx/ 官网yaml https://raw.githubuserconten…...

【运维】自动化运维详解

目录 引言一、什么是自动化运维?二、自动化运维的优势三、自动化运维的关键组成部分详解3.1 监控与告警3.2 部署与配置管理3.3 备份与恢复3.4 安全管理 总结 引言 在当今信息技术飞速发展的时代,企业对IT基础设施的依赖日益增强,传统的人工运…...

线控底盘技术介绍

随着汽车工业的不断发展,传统的机械控制系统逐渐向电子控制系统转变。线控底盘(Drive-by-Wire Chassis)作为这一转变的重要组成部分,正在改变汽车的操控方式和驾驶体验。本文将全面介绍线控底盘的概念、组成、工作原理、优缺点、应…...

DOM对象

DOM概述 官方定义: DOM是W3C制定的一个规范(标准),(Document Object Model,文档对象模型),是提供了访问和操作网页中各元素的方法,让程序可以动态的修改或改变网页元素的内容、样式、结构。 DOM是W3C制定的一个规范…...

[SQL] 数据库图形化安装和使用

一 安装 1.1 图形化安装 下载DataGrip安装包 点击此处一直下一步即可。点击免费使用。 进去界面后,选择新建一个项目 点击加号,创建一个Mysql连接。输入Mysql的连接信息。点击DownLoad下载Mysql的驱动 接下来点击创建的mysq项目中后面的三个点,选择…...

springboot 前后端处理日志

为了实现一个高效且合理的日志记录方案,我们需要在系统架构层面进行细致规划。在某些情况下,一个前端页面可能会调用多个辅助接口来完成整个业务流程,而并非所有这些接口的交互都需要被记录到日志中。为了避免不必要的日志开销,并…...

C++11 简单手撕多线程编程

如何使用线程库 std::thread 创建线程 thread1.join(); 阻塞主线程 thread1.detach(); 线程分离 #include<iostream> #include<thread>void helloworld(std::string msg) {for (int i 0; i < 10000; i){std::cout << i << std::endl;}//std::cou…...

刷c语言练习题7(牛客网)

1、函数fun的声明为int fun(int *p[4]),以下哪个变量可以作为fun的合法参数&#xff08;&#xff09; A、int a[4][4]; B、int **a; C、int **a[4] D、int (*a)[4]; 答案&#xff1a;B 解析&#xff1a;如果是fun的合法参数&#xff0c;那么其类型应该与定义函数fun中的参数类型…...

Web Worker和WebSocket

Web Worker和WebSocket协议都是Web开发中用于处理多线程和实时通信的技术&#xff0c;但它们的应用场景和工作原理有所不同。 Web Worker Web Worker是HTML5引入的一项技术&#xff0c;它允许JavaScript代码在后台线程中运行&#xff0c;从而实现真正的多线程处理。Web Worke…...

【LeetCode】动态规划—712. 两个字符串的最小ASCII删除和(附完整Python/C++代码)

动态规划—712. 两个字符串的最小ASCII删除和 前言题目描述基本思路1. 问题定义2. 理解问题和递推关系3. 解决方法3.1 动态规划方法3.2 空间优化的动态规划 4. 进一步优化5. 小总结 代码实现PythonPython3代码实现Python 代码解释 CC代码实现C 代码解释 总结: 前言 在字符串处…...

wordpress Contact Form 7插件提交留言时发生错误可能的原因

WordPress Contact Form 7 插件提交留言时发生错误可能有以下几种原因&#xff0c;并提供相应的解决方案&#xff1a; 1. 表单字段验证失败 原因&#xff1a; 用户输入的数据未通过表单字段的验证规则。 解决方案&#xff1a; – 检查表单字段的验证规则是否设置正确。 –…...