0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

聚焦“源1.0”背后的计算挑战以及我们采取的训练方法

浪潮AIHPC 来源:浪潮AIHPC 作者:浪潮AIHPC 2022-11-15 16:13 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

从2018年的BERT到2020年的GPT-3,NLP语言模型经历了爆发式的发展过程,其中BERT模型的参数量为3.4亿,而GPT-3的模型参数量达到了1750亿。2021年9月,浪潮发布了“源1.0”,它是目前规模最大的中文AI单体模型,参数规模高达2457亿,训练采用的中文数据集达5TB。“源1.0”在语言智能方面表现优异,获得中文语言理解评测基准CLUE榜单的零样本学习和小样本学习两类总榜冠军。测试结果显示,人群能够准确分辨人与“源1.0”作品差别的成功率低于50%。

海量的参数带来了模型训练和部署上的巨大挑战。本文将聚焦“源1.0”背后的计算挑战以及我们采取的训练方法。

“源1.0”的模型结构

“源1.0”是一个典型的语言模型。语言模型通俗来讲就是能够完成自然语言理解或者生成文本的神经网络模型。对于“源1.0”,我们考虑语言模型(Language Model,LM)和前缀语言模型(Prefix Language Model,PLM)两种模型结构。如下图所示:

91275cda-64bc-11ed-8abf-dac502259ad0.jpg

图1 模型结构示意图(左图为LM,右图为PLM)

我们比较了130亿参数的LM和PLM在不同下游任务上的结果,注意到LM在Zero-Shot和Few-Shot上表现更好,而PLM在微调方面表现出色。微调通常会在大多数任务中带来更好的准确性,然而微调会消耗大量的计算资源,这是不经济的。所以我们选择LM作为“源 1.0”模型的基础模型结构。

如何训练“源1.0”

| 源1.0训练面对的挑战

“源1.0”的训练需要面对的第一个挑战就是数据和计算量的挑战。

数据方面,如果把训练一个巨量模型的训练过程比作上异常战役的话,那么数据就是我们的弹药。数据量的多少,决定了我们可以训练模型的规模,以及最后的效果。针对这一方面,我们构建了一个全新的中文语料库,清洗后的高质量数据规模达到了5TB,是目前规模最大的中文语料库。

914ec108-64bc-11ed-8abf-dac502259ad0.jpg

图2 数据预处理流程图

算力方面,根据OpenAI提出的PetaFlop/s-day衡量标准,我们可以估算“源1.0”训练的计算需求情况。根据Wikipedia提供的数据(https://en.wikipedia.org/wiki/OpenAI),GPT-3的计算需求约为3640 PetaFlop/s-day,而“源1.0”的计算需求达到了4095 PetaFlop/s-day。

计算资源的巨大开销是限制研究人员研发具有数以千万计参数的NLP大模型的瓶颈。例如GPT-3是在由10000个GPU所组成的集群上训练得到的。我们在设计“源1.0”的模型结构时,考虑到了影响大规模分布式训练的关键因素,采用了专门的分布式训练策略,从而加速了模型的训练过程。

在模型训练时一般最常用的是采用数据并行分布式计算策略,但这只能满足小模型的训练需求。对于巨量模型来说,由于其模型参数量过大,远远超过常用计算设备比如GPU卡的显存容量,因此需要专门的算法设计来解决巨量模型训练的显存占用问题,同时还需要兼顾训练过程中的GPU计算性能的利用率。

| “源1.0”的训练策略

为了解决显存不足的问题,我们采用了张量并行、流水并行、数据并行相结合的并行策略,实现了在2128个GPU上部署“源1.0”,并完成了1800亿tokens的训练。

a. 张量并行

针对单个GPU设备不能完整的承载模型训练,一个解决方案就是张量并行+数据并行的2D并行策略。具体来说,使用多个GPU设备为1组,比如单个服务器内的8个GPU为1组,组内使用张量并行策略对模型进行拆分,组间(服务器间)采用数据并行。

对于张量并行部分,NVIDIA在Megatron-LM中提出了针对Transformer结构的张量并行解决方案。其思路是把每一个block的参数和计算都均匀的拆分到N个GPU设备上,从而实现每个GPU设备都承担这一block的参数量和计算量的1/N效果。图3展示了对Transformer结构中的MLP层和self-attention层进行张量并行拆分计算的过程示意图。

9177114e-64bc-11ed-8abf-dac502259ad0.jpg

图3 张量并行示意图

在训练过程中,tensor经过每一层的时候,计算量与通信数据量之比91b4a91e-64bc-11ed-8abf-dac502259ad0.png如下:

91cea1a2-64bc-11ed-8abf-dac502259ad0.jpg

其中,S为输入序列的长度,h为隐藏层的大小(hidden size)。

b. 流水并行

91e98698-64bc-11ed-8abf-dac502259ad0.jpg

图4 流水线并行示意图

对于具有数千亿参数的语言模型,这些参数很难被存放在单个节点中。流水线并行将LM的层序列在多个节点之间进行分割,以解决存储空间不足的问题,如图5所示。每个节点都是流水线中的一个阶段,它接受前一阶段的输出并将结果过发送到下一阶段。如果前一个相邻节点的输出尚未就绪,则当前节点将处于空闲状态。节点的空闲时间被称为流水线气泡(pipline bubble)。为了提高流水行并行的性能,我们必须尽可能减少在气泡上花费的时间。定义流水线中气泡的理想时间占比为如下形式:

920f7e3e-64bc-11ed-8abf-dac502259ad0.jpg

根据这一公式,流水线气泡的耗时随着层数L的增加而增加,随着微批次大小(micro-batch-size)的增加而减小。当m≫L/l的时候,流水并行过程中的流水线气泡对训练性能的影响几乎可以忽略。

与此同时,在流水并行过程中,节点间的计算量与通信数据量之比91b4a91e-64bc-11ed-8abf-dac502259ad0.png为:

924189b0-64bc-11ed-8abf-dac502259ad0.jpg

根据上面的公式,流水线中节点的计算效率与h和S呈线性关系,这与张量并行类似。

c. 数据并行

925b54c6-64bc-11ed-8abf-dac502259ad0.jpg

图6 数据并行示意图

采用数据并行时,全局批次大小(global batch size)按照流水线分组进行分割。每个流水线组都包含模型的一个副本,数据在组内按照局部批次规模送入模型副本。数据并行时的计算量与通信数据量的比值91b4a91e-64bc-11ed-8abf-dac502259ad0.png可用如下公式近似:

92a067aa-64bc-11ed-8abf-dac502259ad0.jpg

91b4a91e-64bc-11ed-8abf-dac502259ad0.pngd≫ 1时,上面公式可以进一步简化成:

92ce6272-64bc-11ed-8abf-dac502259ad0.jpg

根据这一公式,我们可以看出数据并行的计算效率与全局批次大小B和序列长度S呈正比关系。由于模型对内存的需求与S的平方成正比,与B成线性关系,因此增加全局批次大小可以更有效的提升数据并行的效率。

当全局批次大小过大的时候,模型很容易出现不收敛的问题,为了保证模型训练过程的稳定性,我们将全局批次大小限制在了10^7个token内。

根据以上的理论分析,我们确定了设计“源1.0”巨量模型结构的基本原则:

尽可能增加序列长度,因为它有利于张量并行、流水线并行和数据并行。由于内存占用与序列长度的平方成正比,因此有必要在反向传播时重新计算激活函数,以节省内存开销;

语言模型中层数太多会对性能产生负面影响,因为这会增加在流水线气泡上的时间消耗;

增加隐藏层大小可以提高张量并行和流水线并行的性能;

增加节点中的微批次大小可以提高流水线并行效率,增加全局批次大小可以提升数据并行的效率;

在这一设计原则的基础上,我们设计的“源1.0”的模型结构以及分布式策略的设置如下表所示:

92ec6e7a-64bc-11ed-8abf-dac502259ad0.jpg

结合模型结构的特性以及我们使用集群的硬件特性,我们如下的节点配置和分布式策略选择:

“源1.0”模型在训练过程中共使用了2128个GPU;

模型分成了7组,每组38台AI服务器,里面放置一个完整的“源1.0”模型,7组之间采用数据并行;

每组的38个服务器,采用流水并行每个服务器放置1/38的模型(2个Transformer Layer),一共76层;

在每台服务器内采用张量并行,按照Transformer结构的每一层进行均匀切分;

模型收敛曲线如下图:

930cd2a0-64bc-11ed-8abf-dac502259ad0.jpg

91b4a91e-64bc-11ed-8abf-dac502259ad0.png

关于“源1.0”的更多信息,大家可以参照浪潮发布在arxiv上的论文:https://arxiv.org/abs/2110.04725

审核编辑 :李倩

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 神经网络
    +关注

    关注

    42

    文章

    4827

    浏览量

    106803
  • 模型
    +关注

    关注

    1

    文章

    3649

    浏览量

    51716
  • 语言模型
    +关注

    关注

    0

    文章

    570

    浏览量

    11255

原文标题:如何训练2457亿参数量的中文巨量模型“源1.0”

文章出处:【微信号:浪潮AIHPC,微信公众号:浪潮AIHPC】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    重要通知 | Splashtop 即将停止支持 TLS 1.0/1.1

    尊敬的Splashtop用户:为持续增强Splashtop远程连接服务的安全性,我们将于2025年10月底停止支持TLS1.0和1.1协议。TLS1.0与1.1协议采用过时的加密方法
    的头像 发表于 09-30 10:08 469次阅读
    重要通知 | Splashtop 即将停止支持 TLS <b class='flag-5'>1.0</b>/1.1

    摩尔线程发布大模型训练仿真工具SimuMax v1.0

    近日,摩尔线程正式发布并开源大模型分布式训练仿真工具SimuMax 1.0版本。该版本在显存和性能仿真精度上实现突破性提升,同时引入多项关键功能,进一步增强了模型兼容性、灵活性与用户体验。
    的头像 发表于 09-11 18:19 3348次阅读
    摩尔线程发布大模型<b class='flag-5'>训练</b>仿真工具SimuMax v<b class='flag-5'>1.0</b>

    大模型推理显存和计算量估计方法研究

    方法。 一、引言 大模型推理是指在已知输入数据的情况下,通过深度学习模型进行预测或分类的过程。然而,大模型的推理过程对显存和计算资源的需求较高,这给实际应用带来了以下挑战: 显存不足:大模型在推理
    发表于 07-03 19:43

    GLAD应用:高斯光束的吸收和自聚焦效应

    ,此时介质折射率的横向分布也是钟形的,从而对入射光束产生会聚作用,这就是高斯光束的自聚焦效应。 系统描述 本例重点展示了beer以及sfocus两个命令的使用,给出了经过吸收之后高斯光束的强度分布轮廓图
    发表于 06-17 08:52

    GLAD应用:高斯光束的吸收和自聚焦效应

    ,此时介质折射率的横向分布也是钟形的,从而对入射光束产生会聚作用,这就是高斯光束的自聚焦效应。 系统描述 本例重点展示了beer以及sfocus两个命令的使用,给出了经过吸收之后高斯光束的强度分布轮廓图
    发表于 05-16 08:47

    RAKsmart智能算力架构:异构计算+低时延网络驱动企业AI训练范式升级

    在AI大模型参数量突破万亿、多模态应用爆发的今天,企业AI训练正面临算力效率与成本的双重挑战。RAKsmart推出的智能算力架构,以异构计算资源池化与超低时延网络为核心,重构AI训练
    的头像 发表于 04-17 09:29 599次阅读

    聚焦离子束技术的原理和应用

    聚焦离子束(FIB)技术在纳米科技里很重要,它在材料科学、微纳加工和微观分析等方面用处很多。离子:FIB的核心部件离子是FIB系统的关键部分,液态金属离子(LMIS)用得最多,特
    的头像 发表于 04-11 22:51 569次阅读
    <b class='flag-5'>聚焦</b>离子束技术的原理和应用

    砥砺创新 芯耀未来——武汉芯半导体荣膺21ic电子网2024年度“创新驱动奖”

    加剧、技术壁垒高筑的挑战,公司聚焦高性能、高可靠性芯片的自主研发,深耕MCU(微控制器)领域。 我们始终紧跟行业前沿趋势,持续在芯片设计等核心领域投入。近年来,我们成功推出了一系列具有
    发表于 03-13 14:21

    大模型训练:开源数据与算法的机遇与挑战分析

    最近,开源中国 OSCHINA、Gitee 与 Gitee AI 联合发布了《2024 中国开源开发者报告》。 报告聚焦 AI 大模型领域,对过去一年的技术演进动态、技术趋势、以及开源开发者生态数据
    的头像 发表于 02-20 10:40 998次阅读
    大模型<b class='flag-5'>训练</b>:开源数据与算法的机遇与<b class='flag-5'>挑战</b>分析

    华为公布AI模型训练与车辆控制专利

    显示,该专利涉及一种全新的模型训练方法以及车辆控制方法,并配套有相关装置,这些均可广泛应用于人工智能领域。具体而言,华为此次提出的创新点在于,利用专家系统的输出来引导并确定用于更新AI模型的梯度。这一
    的头像 发表于 02-20 09:14 729次阅读

    腾讯公布大语言模型训练新专利

    近日,腾讯科技(深圳)有限公司公布了一项名为“大语言模型的训练方法、装置、计算机设备及存储介质”的新专利。该专利的公布,标志着腾讯在大语言模型训练领域取得了新的突破。 据专利摘要显示,该方法
    的头像 发表于 02-10 09:37 718次阅读

    《具身智能机器人系统》第10-13章阅读心得之具身智能机器人计算挑战

    ,自动生成对抗样本。我们可以对防御机制进行了系统化梳理:在数据层面,采用清洗和过滤去除恶意样本;在模型层面,通过知识蒸馏压缩潜在攻击面;在训练层面,引入对抗样本增强模型鲁棒性。这些多层次的防御措施形成
    发表于 01-04 01:15

    《具身智能机器人系统》第7-9章阅读心得之具身智能机器人与大模型

    共同挑战:如何从高维噪声数据中提取有效特征?如何平衡模型复杂度和计算效率?如何保证系统在真实环境中的稳定性?书中提出的技术方案对我的工作很有启发。多模态融合策略可用于处理异构数据,元学习思想可指导增量学习系统设计,而模型优化
    发表于 12-24 15:03

    “芯合”异构混合并行训练系统1.0发布

    近日,中国移动研究院副院长段晓东携手天数智芯、壁仞科技、中兴、海光、瀚博等一众产业合作伙伴,共同推出了“芯合”异构混合并行训练系统1.0版本。 该系统具备两大核心能力,首先是基于非均匀计算任务切分
    的头像 发表于 12-13 15:46 929次阅读

    使用英特尔AI PC为YOLO模型训练加速

    在以往的实践中,当我们针对 ultralytics 的 YOLO 模型开展训练工作时,可供选择的计算设备通常局限于 CPU、mps 以及 cuda 这几种。然而,自 PyTorch2.
    的头像 发表于 12-09 16:14 2109次阅读
    使用英特尔AI PC为YOLO模型<b class='flag-5'>训练</b>加速