大模型分布式训练并行技术(一)-概述

近年来,随着Transformer、MOE架构的提出,使得深度学习模型轻松突破上万亿规模参数,传统的单机单卡模式已经无法满足超大模型进行训练的要求。因此,我们需要基于单机多卡、甚至是多机多卡进行分布式大模型的训练。

而利用AI集群,使深度学习算法更好地从大量数据中高效地训练出性能优良的大模型是分布式机器学习的首要目标。为了实现该目标,一般需要根据硬件资源与数据/模型规模的匹配情况,考虑对计算任务、训练数据和模型进行划分,从而进行分布式存储和分布式训练。因此,分布式训练相关技术值得我们进行深入分析其背后的机理。

下面主要对大模型进行分布式训练的并行技术进行讲解,本系列大体分九篇文章进行讲解。

本文为分布式训练并行技术的第一篇,对大模型进行分布式训练常见的并行技术进行简要介绍。

数据并行


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

image.png

模型并行


在数据并行训练中,一个明显的特点是每个 GPU 持有整个模型权重的副本。这就带来了冗余问题。另一种并行模式是模型并行,即模型被分割并分布在一个设备阵列上。

通常有两种类型的模型并行:张量并行和流水线并行。

  • 张量并行是在一个操作中进行并行计算,如:矩阵-矩阵乘法。
  • 流水线并行是在各层之间进行并行计算。

因此,从另一个角度来看,张量并行可以被看作是层内并行,流水线并行可以被看作是层间并行。

张量并行

张量并行训练是将一个张量沿特定维度分成 N 块,每个设备只持有整个张量的 1/N,同时不影响计算图的正确性。这需要额外的通信来确保结果的正确性。

以一般的矩阵乘法为例,假设我们有 C = AB。我们可以将B沿着列分割成 [B0 B1 B2 … Bn],每个设备持有一列。然后我们将 A 与每个设备上 B 中的每一列相乘,我们将得到 [AB0 AB1 AB2 … ABn] 。此刻,每个设备仍然持有一部分的结果,例如,设备(rank=0)持有 AB0。为了确保结果的正确性,我们需要收集全部的结果,并沿列维串联张量。通过这种方式,我们能够将张量分布在设备上,同时确保计算流程保持正确。

image.png

典型的张量并行实现:Megatron-LM(1D)、Colossal-AI(2D、2.5D、3D)。

流水线并行

流水线并行的核心思想是,模型按层分割成若干块,每块都交给一个设备。

  • 在前向传播过程中,每个设备将中间的激活传递给下一个阶段。
  • 在后向传播过程中,每个设备将输入张量的梯度传回给前一个流水线阶段。

这允许设备同时进行计算,从而增加训练的吞吐量。

image.png

流水线并行训练的一个明显缺点是训练设备容易出现空闲状态(因为后一个阶段需要等待前一个阶段执行完毕),导致计算资源的浪费,加速效率没有数据并行高。

image.png

典型的流水线并行实现:GPipe、PipeDream、PipeDream-2BW、PipeDream Flush(1F1B)。

优化器相关的并行


目前随着模型越来越大,单个GPU的显存目前通常无法装下那么大的模型了。那么就要想办法对占显存的地方进行优化。

通常来说,模型训练的过程中,GPU上需要进行存储的参数包括了模型本身的参数、优化器状态、激活函数的输出值、梯度以及一些零时的Buffer。各种数据的占比如下图所示:

image.png

可以看到模型参数仅占模型训练过程中所有数据的一部分,当进行混合精度运算时,其中模型状态参数(优化器状态 + 梯度+ 模型参数)占到了一大半以上。因此,我们需要想办法去除模型训练过程中的冗余数据。

而优化器相关的并行就是一种去除冗余数据的并行方案,目前这种并行最流行的方法是 ZeRO(即零冗余优化器)。针对模型状态的存储优化(去除冗余),ZeRO使用的方法是分片,即每张卡只存 1/N 的模型状态量,这样系统内只维护一份模型状态。ZeRO有三个不同级别,对模型状态进行不同程度的分片:

  • ZeRO-1 : 对优化器状态分片(Optimizer States Sharding)
  • ZeRO-2 : 对优化器状态和梯度分片(Optimizer States & Gradients Sharding)
  • ZeRO-3 : 对优化器状态、梯度分片以及模型权重参数分片(Optimizer States & Gradients & Parameters Sharding)

image.png

异构系统并行


上述的方法中,通常需要大量的 GPU 来训练一个大型模型。然而,人们常常忽略一点,与 GPU 相比,CPU 的内存要大得多。在一个典型的服务器上,CPU 可以轻松拥有几百GB甚至上TB的内存,而每张 GPU 卡通常只有 48 或 80 GB的内存。这促使人们思考为什么 CPU 内存没有被用于分布式训练。

而最近的进展是依靠 CPU 甚至是 NVMe 磁盘来训练大型模型。主要的想法是,在不使用张量时,将其卸载回 CPU 内存或 NVMe 磁盘。

通过使用异构系统架构,有可能在一台机器上容纳一个巨大的模型。

image.png

多维混合并行


多维混合并行指将数据并行、模型并行和流水线并行等多种并行技术结合起来进行分布式训练。

image.png

通常,在进行超大规模模型的预训练和全参数微调时,都需要用到多维混合并行。

image.png

为了充分利用带宽,通常情况下,张量并行所需的通信量最大,而数据并行与流水线并行所需的通信量相对来说较小。因此,同一个服务器内使用张量并行,而服务器之间使用数据并行与流水线并行。

image.png

自动并行


上面提到的数据并行、张量并行、流水线并行等多维混合并行需要把模型切分到多张AI加速卡上面,如果让用户手动实现,对开发者来说难度非常大,需要考虑性能、内存、通信、训练效果等问题,要是能够将模型按算子或者按层自动切分到不同的加速卡上,可以大大的降低开发者的使用难度。因此,自动并行应运而生。

image.png

MOE并行 / 专家并行


通常来讲,模型规模的扩展会导致训练成本显著增加,计算资源的限制成为了大规模密集模型训练的瓶颈。为了解决这个问题,一种基于稀疏 MoE 层的深度学习模型架构被提出,即将大模型拆分成多个小模型(专家,expert), 每轮迭代根据样本决定激活一部分专家用于计算,达到了节省计算资源的效果; 并引入可训练并确保稀疏性的门( gate )机制,以保证计算能力的优化。

使用 MoE 结构,可以在计算成本次线性增加的同时实现超大规模模型训练,为恒定的计算资源预算带来巨大增益。而 MOE 并行,本质上也是一种模型并行方法。下图展示了一个有六个专家网络的模型被两路专家并行地训练。其中,专家1-3被放置在第一个计算单元上,而专家4-6被放置在第二个计算单元上。

image.png

结语


本文针对大模型进行分布式训练常见的并行技术进行了简要的介绍。后续章节将针对常见并行技术的不同方案进行详细的讲解。

如果觉得我的文章能够能够给您带来帮助,期待您的点赞收藏加关注~~


最后如果您也对AI大模型感兴趣想学习却苦于没有方向👀
小编给自己收藏整理好的学习资料分享出来给大家💖
👉获取方式:

😝有需要的小伙伴,可以保存图片到wx扫描二v码关注免费领取【保证100%免费】🆓

请添加图片描述

👉AI大模型学习路线汇总👈

大模型学习路线图,整体分为7个大的阶段:(全套教程文末领取哈)
在这里插入图片描述

第一阶段: 从大模型系统设计入手,讲解大模型的主要方法;

第二阶段: 在通过大模型提示词工程从Prompts角度入手更好发挥模型的作用;

第三阶段: 大模型平台应用开发借助阿里云PAI平台构建电商领域虚拟试衣系统;

第四阶段: 大模型知识库应用开发以LangChain框架为例,构建物流行业咨询智能问答系统;

第五阶段: 大模型微调开发借助以大健康、新零售、新媒体领域构建适合当前领域大模型;

第六阶段: 以SD多模态大模型为主,搭建了文生图小程序案例;

第七阶段: 以大模型平台应用与开发为主,通过星火大模型,文心大模型等成熟大模型构建大模型行业应用。

👉如何学习AI大模型?👈

作为一名热心肠的互联网老兵,我决定把宝贵的AI知识分享给大家。 至于能学习到多少就看你的学习毅力和能力了 。我已将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。

这份完整版的大模型 AI 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费
在这里插入图片描述

一、全套AGI大模型学习路线

AI大模型时代的学习之旅:从基础到前沿,掌握人工智能的核心技能!
在这里插入图片描述

二、640套AI大模型报告合集

这套包含640份报告的合集,涵盖了AI大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师,还是对AI大模型感兴趣的爱好者,这套报告合集都将为您提供宝贵的信息和启示。
在这里插入图片描述

三、AI大模型经典PDF籍

随着人工智能技术的飞速发展,AI大模型已经成为了当今科技领域的一大热点。这些大型预训练模型,如GPT-3、BERT、XLNet等,以其强大的语言理解和生成能力,正在改变我们对人工智能的认识。 那以下这些PDF籍就是非常不错的学习资源。
在这里插入图片描述

四、AI大模型商业化落地方案

在这里插入图片描述

作为普通人,入局大模型时代需要持续学习和实践,不断提高自己的技能和认知水平,同时也需要有责任感和伦理意识,为人工智能的健康发展贡献力量。
请添加图片描述

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

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

相关文章

Gitee基本指令操作

目录 1.概念 2. git的基本指令 3. .gitignore 文件 4 . Linux git || gitee || github 1.概念 Git是一种版本控制的软件。 Git是免费且开源的。 Git常被称为 去中心化的分布式的 数据存储。 【其实git也可以进行本地版本控制。对于git,可理解为是一个 本地版本…

超轻量级电竞体验,还有8K超高回报率,雷柏VT1 Air MAX上手

PC玩家想要获得更精彩的游戏体验,除了要关注主机上显卡、CPU等方面的配置,还需要键、鼠标的操控体验跟得上节奏,而在这方面,国产品牌雷柏算是行业里的翘楚,尤其是这两年,连续不断的推出了多个电竞系列鼠标&…

3. 函数

函数是 JavaScript 编程中最重要的工具之一。用一个值封装一段程序的概念有很多用途。它为我们提供了一种结构化大型程序的方法,可以减少重复,将名称与子程序关联起来,并将这些子程序相互隔离。 函数最明显的应用是定义新的词汇。在散文中创造…

2024 天池云原生编程挑战赛决赛名单出炉,冠军来自中山大学、昆仑数智战队

9 月 20 日,2024 天池云原生编程挑战赛决赛答辩完美落幕,12 支进入决赛的团队用精彩的答辩,为历时 3 个月的大赛画下了圆满的句号。其中,来自中山大学的陈泓仰以及来自昆仑数智的冉旭欣、沈鑫糠、武鹏鹏, 以出色的方案…

Nordic软件二[蓝牙协议栈初始化卡死(时钟源默认外部晶振但是板子是内部RC)问题][BSP代码模块修改管脚和相关机制]

蓝牙协议栈初始化卡死(时钟源默认外部晶振但是板子是内部RC)问题 本文摘录于:https://blog.csdn.net/chengbaojin/article/details/103778150只是做学习备份之用,绝无抄袭之意,有疑惑请联系本人! 先参考上面的文章做如下修改: …

中国科学院云南天文台博士招生目录

中国科学院云南天文台是专业基础研究与应用研究结合的综合性天文研究机构(其前身是1938年中央研究院天文研究所在昆明东郊凤凰山创建的凤凰山天文台),总部在云南省昆明市,设有两个观测站(丽江高美古天文观测站和澄江抚…

使用通义灵码,参与开源项目全程纪实

作者:shuipin100-34561 背景 缘起 OceanBase。作为一个充满好奇心的 DBA,一直一来想探寻数据库的内部世界。开源为我们这些好奇的猫打开了一扇新世界的大门。OceanBase 作为分布式关系型数据库的排头兵,自然进入了我的优选名单。起初走进了…

ComfyUI中缺失节点安装一点小小注意事项

加载工作流,遇到了红当当的缺失节点警告窗口: 在ComfyUI-Manager点击安装缺失节点,发现竟然弹出4个,而上面告警窗口中只是缺失3个,究竟是怎么回事呢,刚开始接触ComfyUI时,我也是不管3721&#x…

04 面部表情识别:Pytorch实现表情识别-表情数据集训练代码

总目录:人脸检测与表情分类 https://blog.csdn.net/whiffeyf/category_12793480.html 目录 0 相关资料1 面部表情识数据集2 模型下载3 训练0 相关资料 面部表情识别2:Pytorch实现表情识别(含表情识别数据集和训练代码):https://blog.csdn.net/guyuealian/article/details/1…

【c语言数据结构】超详细!模拟实现双向链表(初始化、销毁、头删、尾删、头插、尾插、指定位置插入与删除、查找数据、判断链表是否为空)

特点: 结构:指向前一结点指针数据指向后一结点指针由于循环,尾结点的下一结点next指向头结点(哨兵结点)空的双向链表只有自循环的哨兵结点(头结点) 模拟实现双向链表 LIST.h #define _CRT_…

【WorldView系列卫星】

WorldView系列卫星 WorldView系列卫星是美国DigitalGlobe公司推出的一系列先进商业遥感卫星,旨在提供高分辨率的地球成像服务。该系列卫星以其卓越的成像能力,如高分辨率、快速重访时间和宽幅扫描能力,引领了地球观测技术的新标准。以下是对…

最新版C/C++通过CLion2024进行Linux远程开发保姆级教学

目前来说,对Linux远程开发支持相对比较好的也就是Clion和VSCode了,这两个其实对于C和C语言开发都很友好,大可不必过于纠结使用那个,至于VS和QtCreator,前者太过重量级了,后者更是不用说,主要用于…

110Redis 简明教程--Redis 数据类型

Redis strings 字符串是一种最基本、最常用的 Redis 值类型。 Redis 字符串是二进制安全的,这意味着一个 Redis 字符串能包含任意类型的数据,例如: 一张经过 base64 编码的图片或者一个序列化的 Ruby 对象。通过这样的方式,Redis …

双亲委派机制SPI

SPI如何破坏双亲委派机制?可根据以下概念一步步深入 什么是双亲委派机制? 双亲委派机制是Java类加载器体系中采用的一种类加载策略,旨在保证类加载的安全性和稳定性。 这一机制规定了类加载的顺序和规则,即当一个类加载器收到类…

创建单链表

一、完成单链表操作,要求节点构造类型。 1、建立学生结构体(学号,姓名,成绩) 2、循环调用头插法创建整表 3、遍历单链表 4、任意位置插入一个完整的学生信息 5、任意位置删除一个学生。 6、单链表逆置 7、单链表按照学…

SpringBoot框架在文档管理中的创新应用

第3章 系统分析 3.1 需求分析 在线文档管理系统主要是为了提高工作人员的工作效率和更方便快捷的满足员工,更好存储所有数据信息及快速方便的检索功能,对系统的各个模块是通过许多今天的发达系统做出合理的分析来确定考虑员工的可操作性,遵循…

ELK-03-skywalking监控linux系统

文章目录 前言一、下载node_exporter二、启动node_exporter三、下载OpenTelemetry Collector四、启动OpenTelemetry Collector4.1 将配置文件下载到同级目录4.2 启动 五、查看总结 前言 skywalking安装完成后,开始我们的第一个监控-监控linux系统。 参考官方文档&a…

最古早的linux发行版,已发行30年!!

最古早的linux发行版,已发行30年!! 当谈到 Linux 发行版时,大多数人首先想到的可能是像 Ubuntu、Fedora 或 CentOS 这样的知名发行版。然而,在 Linux 的世界中,还有一款古老而稳定的发行版,它以…

SIGformer: Sign-aware Graph Transformer for Recommendation---论文学习笔记

SIGIR 2024 用于推荐的符号感知图像转换器 摘要 在推荐系统中,大多数基于图的方法主要关注用户的正面反馈,而忽视了负面反馈的价值。而将正负反馈结合起来形成符号图可以更全面地理解用户偏好。然而,现有的尝试整合这俩种类型反馈的方法很…

图片压缩工具免费怎么找?归纳了这几个压缩工具

有哪些图片压缩工具免费?在数字化时代,图像已成为我们生活中不可或缺的一部分。无论是网站设计、社交媒体分享还是文件传输,高质量的图片都扮演着重要的角色。但高质量往往意味着大文件体积,这可能会导致加载速度变慢或存储空间不…