4月25日,华为云发布盘古系列超大规模预训练模型,包括30亿参数的全球最大视觉(CV)预训练模型,以及与循环智能、鹏城实验室联合开发的千亿参数、40TB训练数据的全球最大中文语言(NLP)预训练模型。
其中,盘古NLP大模型由华为云、循环智能和鹏城实验室联合开发,具备领先的语言理解和模型生成能力:在权威的中文语言理解评测基准CLUE榜单中,盘古NLP大模型在总排行榜及分类、阅读理解单项均排名第一,刷新三项榜单世界历史纪录;总排行榜得分83.046,多项子任务得分业界领先, 向人类水平(85.61)迈进了一大步。
外界对盘古大模型充满了好奇,在华为开发者大会(Cloud)期间,参与大模型开发的两位华为云专家回答了以下几个大家关心的问题。
谢凌曦博士专访
Q:作为一个开发者,请问这些预训练模型的易用性如何?使用成本有多高?
谢凌曦:预训练模型设计的目的就是为了让大家降低使用成本。模型的预训练过程,成本是比较高的,但这个成本不需要开发者来承担。而在使用这些大模型的时候,它本身的易用性会使得使用成本进一步降低,达到一个比较合适的水平。比如说,我们会开发出一些比较通俗易懂的Pipeline,如果你是有一定基础的开发人员,你可以从我们的Pipeline当中去做更多的定制化的开发,更好地去释放我们预训练模型的能力。如果你只是一个AI开发小白,想用大模型去做AI简单的开发,我们也会给你更加通俗易懂的界面,让大家能够用一些拖拉拽的方式使用盘古大模型。总体来讲,大家在使用预训练模型的时候,计算时长、调参所需要重复的代价等都会被降到很低,总体来讲是对开发者非常友好的。
Q:对于新入门计算机视觉的人来说,需要掌握什么哪些知识才能快速进入到学习和研发中?
谢凌曦:人工智能、计算机视觉,经过几十年的发展,到现在已经拥有很庞大的知识体系。如果一个初学者想要把这些东西都了解以后再开始做研究,效率会稍微有点低。我给大家的建议是,你在学习过程当中,可以先找准一个问题。刚开始的时候,这个问题可能是相对初级的问题,但一定有具体的场景。比如想做弱监督学习,一般就是遇到某个实际的问题,它确实需要弱监督算法。但是这个时候我是不是一定要掌握全监督才能去做弱监督呢?并不是这样的。你可以先去查阅一些资料,了解当前的弱监督学习方法,它的基线是什么,它的前沿在哪里。然后你就可以开始做一些简单的实验。实验的过程当中,一般会遇到一些困难或者一些疑惑。解决这些困难和疑惑的过程,一般就会把你引导到它的基础,比如说全监督到底是怎么做的。当你有了更多基础以后,回过头来,也会发现你对当前做的算法有了一个更好的理解。
所以我的建议是大家可以找一本机器学习、计算机视觉这类介绍比较深入的教材去看。但是不要局限于这个教材:一边做具体的课题,一边去学习知识,效率会比较高。
张晓鹏博士专访
Q:盘古CV大模型有哪些成功的落地?跟业界相比处在什么位置?
张晓鹏:视觉预训练CV大模型,结合相关流程化开发,已经在华为内部以及其他合作项目上,有100+成功落地,这些方向涵盖了各行各业,包括工业视觉、网络审查、零售商超,以及医疗等场景,都获得了一些相较于之前不使用预训练大模型更高的结果。在某些场景上,比如刚才提到的遥感影像分割,我们通过设计针对遥感影像的预训练算法,在没有增加额外标注代价的情况下,达到了最多12%的分割精度提升。还有另外一个比较有意思的现象,我们使用超大规模图像进行的预训练模型具有更好的可迁移性,即直接把这样一个模型,迁移到了工业质检的缺陷上进行推理,我们非常欣喜地发现,我们在下游数据集上没有进行任何微调,但是在工业缺陷检测上,获得了比之前我的模型不停地高度的优化,甚至利用下游的数据微调更好的结果,这个结果基本上会高出3到4个百分点。这个启发我们,模型数据一旦够多,其实它的泛化能力能够获得更好的保障。
第二,我们是国内最早做视觉预训练大模型的公司之一。在国外是Facebook和谷歌从2019年开始在图像上做了一些应用。我们视觉预训练模型大概从2019年底的时候就开始了,通过自研的一些列改进算法,我们首次在基于imagNet 的无监督预训练模型线性分类精度上达到了全监督基线的水平,同时在小样本学习上大大领先现有技术,这些都是业界领先的成果。
Q: 华为的预训练是采用什么类型数据和学习任务?大模型如何保证端侧性能?
张晓鹏:针对视觉图像不同角度,以及不同场景的变化,我们采取的方法非常简单。一,我们可能有海量数据集,这个数据集规模已经达到了亿级甚至十亿级这样的规模,我们相信这个海量的数据集,它能够建模,我们实际场景图像的方方面面。另外一个,我们采取了什么样的学习方式。其实它的一个核心思想,就是2019年开始,比较火的基于全局的对比度自监督学习方法。
当然我们在这上面做了很多改进。包括如何来利用弱标签信息,如何把全局的信息拓展到局部来更好建模局部相关关系。同时也会呼应刚才提到的,如何处理不同视角,不同尺度图像问题,怎么来让它进行高效的建模,这里面就是让它进行不同的数据增强,我们在预训练算法里面,集成了十余种数据增强方法,让它通过不同的数据增强,使得整个模型具有针对不同数据增强的不变性。
到目前为止,我们在一个大模型,搭载模型蒸馏、抽取以及行业大模型,我们现在已经适配了大概十余种预训练模型。而这十余种模型都是通过我们一个大模型的抽取,蒸馏所得到的,它在相应的行业上,得到了非常大的精度提升。同时也极大的减少了标注代价以及模型迭代周期。
Q:华为的预训练模型是如何结合不同行业知识,解决标注数据大的问题?
张晓鹏:举一个我们在HDC Cloud上发布的国网电力智能巡检的例子,这就是非常典型的利用盘古CV大模型解决行业知识。
在国网电力巡检模型开发的过程中,它有海量的数据,标注非常困难,我们做了什么呢?通过我们的视觉预训练算法,在海量的巡检数据上进行预训练,这个预训练是利用了无人机巡检的数十TB,上百万规模的数量,进行预训练,它的预训练可以看到我们非常多的数据,它的内在分布。我们的大模型,模型参数越大,也看了更多的数据,所以说它能够更好的建模无人机巡检过程中的图片的细微差异。
利用我们的视觉预训练大模型,它能够提供更好的表征以后,因为它的缺陷和正常样本的表征能力更强,我们在标注代价上,基本上减少了80%以上,这一块整个在人力上是一个非常大的提升。除了减少标注,我们一个模型可以适配我们电力行业一百多种缺陷,从而让模型迭代周期大大减少,整个迭代效率大概提升了10倍,我们在每次迭代过程中反馈给人需要标注的整体的工作量就会越少,通过这两种模式,我们实现了在电力行业方面,利用我们视觉预训练模型,极大的提升了我们的开发效率。
千亿参数,TB 级内存的模型
以盘古 2000 亿为例,如果我们训练时权重都用标准的 FP32 数据格式,那么算下来,权重占的空间就达到了 750GB,训练过程中内存开销还会数倍上升。这 750GB 参数,不是放在硬盘上,也不是加载到内存中,而是需要移到昇腾Atlas训练服务器 HBM(High Bandwidth Memory 高带宽存储器)内存中,以利用昇腾Atlas训练服务器训练模型。
模型大 ,意味着数据也大,而且都需要是高质量数据。为了满足数据需求,研发团队从互联网爬取了 80 TB 文本,并最后清洗为 1TB 的中文数据集。
这样的模型与数据,已经不是我们几台服务器能加载上的了,更不用说进行训练。好在研发团队会提供 API,一般算法工程师直接调用接口就能试试效果。
可以说,目前盘古是业界首创的千亿规模中文预训练模型,其中最高参数量达 2000 亿。
超大规模自动并行,算法工程师的福音
先考虑一个问题,你想到如何训练这样的大模型了吗?
如果给你足够的计算力,你能想到如何训练这么大的模型吗?我们最常用的分布式训练方式数据并行,单独这么做肯定是不行的,因为没有哪个计算硬件能放下 800GB 的参数。那么再加上模型并行呢?又产生了新问题,我们该如何拆分如此巨大的「盘古」?硬件产品(如 NPU、GPU 等)之间的梯度流、数据流通信又是什么样的?
显然训练如此庞大的模型,远比我们想象中的复杂,需要大量的工程化操作,并保证这些操作不会或极少影响到模型最终收敛效果。
难道盘古真得靠手动并行优化?
如果手动来写分布式训练逻辑,那么需要综合考虑计算量与类型、集群带宽、拓扑结构、样本数量等等一大堆复杂的东西,然后再设计出性能比较优秀的并行切分策略,并编写大量并行切分和节点间的通信代码。如果系统环境变了,还要重新设计并修改算法,想想就觉得头大。
倘若我们用 TensorFlow 或其他类似框架,MirroredStrategy 这一系列自带的分布式策略完全用不上,看起来自行写并行策略是必不可少的。然而,盘古 真正的训练是一种软硬件协同的方式,MindSpore 计算框架、CANN 异构计算架构、昇腾基础软硬件平台整套基础设施。其中,MindSpore 提供的,就包含了至关重要的自动并行能力。
融合 5 大维度,强大的自动并行
MindSpore 自动并行提供了 5 维的并行方式:数据并行、算子级模型并行、Pipeline 模型并行、优化器模型并行和重计算,并且在图编译阶段,有机融合了 5 个维度的并行。这 5 维并行方式组合起来构成了盘古的并行策略。
a. 数据并行
数据并行是最基本,应用最广的并行方式,其将训练数据(mini-batch)切分,每台设备取得其中一份;每台设备拥有完整的模型。在训练时,每台设备经过梯度计算后,需要经过设备间的梯度同步,然后才能进行模型参数的更新。
b. 算子级模型并行
算子级模型并行是对模型网络中的每个算子涉及到的张量进行切分。MindSpore 对每个算子都独立建模,每个算子可以拥有不同的切分策略。
以矩阵乘算子 MatMul(x, w)为例,x 是训练数据,w 是模型参数,两者都是二维矩阵。并行策略 ((4, 1), (1, 1)) 表示将 x 按行切 4 份,保持 w 不切,如果一共有 4 台设备,那么每台设备拥有一份 x 的切片,和完整的 w。
c.Pipeline 模型并行
Pipeline 模型并行将模型的按层分成多个 stage,再把各个 sage 映射到多台设备上。为了提高设备资源的利用率,又将 mini-batch 划分成多个 micro-batch, 这样就能够使得不同设备在同一时刻处理不同 micro-batch 的数据。
一种 Pipeline 并行方式(Gpipe) 要求反向计算要等所有设备的正向计算完成后才开始,而反向计算可能依赖于正向的输出,导致每个卡正向计算过程中累积的 activation 内存与 micro-batch 数量成正比,从而限制了 micro-batch 的数量。MindSpore 的 Pipeline 并行中,将反向提前,每个 micro-batch 计算完成后,就开始计算反向,有效降低 activation 存储时间,从而提升整体并行效率。
d. 优化器模型并行
优化器模型并行将优化器涉及到的参数和梯度切分到多台设备上。以 Adam 优化器为例,其内部可能有多份与权重同等大小的「动量」需要参与计算。在数据并行的情况下,每个卡都拥有完整的「动量」,它们在每个卡上都重复计算,造成了内存及计算的浪费。通过引入优化器并行,每个卡只保存权重及「动量」的切片,能降低每个卡的静态内存及提升计算效率。
e. 重计算
重计算 (Rematerialization) 针对正向算子的输出累计保存在内存中,导致内存峰值过大的问题,舍弃了部分正向算子的输出,而是在反向阶段用到时再重新计算一遍。这样做有效地降低了训练过程中的内存使用峰值。如下图所示,第一个内存峰值通过重计算消除,第二个内存峰值可以通过前面讲到的优化器并行消除。
有了这 5 维的并行维度后,如何将其组合起来作用于盘古,并且如何将切分后的模型分片分配到每台设备上仍然是难题。MindSpore 自动并行,把这 5 个维度并行有机组合起来,可以实现非常高效的大模型分布式训练能力。
下图 (b) 是一典型的树形的硬件拓扑结构,其带宽随着树深度的增加而降低,并且会产生一些流量冲突。为了利用此特征,MindSpore 的目标是最大化计算通信比,将通信量大的并行方式(算子级并行)放置在服务器内部的多卡之间;将通信量较小(Pipeline 并行)的放置在同一机架内的服务器间;将数据并行(优化器并行)的部分放置在不同机架间,因为该通信可以和计算同时执行(overlap),对带宽要求较低。
在盘古 2000 亿模型中,MindSpore 将 64 层(layer)划分为 16 个 stage,每个 stage 包含 4 层。在每层中,利用算子级并行的方式对张量进行切分。
如下图中的 Q,K,V 的参数在实际中(按列)被切了 8 份,输入张量(按行)被切了 16 份,输出张量因此被切了 128 份(8*16)。重计算配置是配置在每层内的,也就是重计算引入的多余的计算量不会超过一层的计算量。总计,MindSpore 使用了 2048 块昇腾处理器来训练盘古。
MindSpore 对外屏蔽了复杂并行实现的细节,使得用户像编写单机模型脚本那样简单。用户在单机脚本的基础上,仅通过少了配置就能实现多维度的混合并行。下图是简化版的盘古脚本,其中红色加粗字体表示的在 MindSpore 中的并行策略。将红色加粗字体去掉,则是单机脚本。
图算跨层联合优化,发挥硬件极致性能
除了跨节点间的大规模自动外,在单卡节点内,MindSpore 通过图层和算子层的跨层协同优化,来进一步发挥昇腾算力。
在传统的 NN 网络中,不同算子承载的计算量和计算复杂度也各不相同。如 LayerNorm 由 11 个基本算子组成,而 Add 则只有 1 个基本算子。这种基于用户角度的算子定义,通常是无法充分发挥硬件资源计算能力的。因为计算量过大、过复杂的算子,通常很难生成切分较好的高性能算子。从而降低设备利用率;而计算量过小的算子,由于计算无法有效隐藏数据搬移开销,也可能会造成计算的空等时延,从而降低设备利用率。
为了提升硬件利用率,MindSpore 使用了图算融合优化技术,通过图层和算子层联合优化,并将「用户使用角度的易用性算子」进行重组融合,然后转换为「硬件执行角度的高性能算子」,从而充分提升硬件资源利用率,进而提升整网执行性能。具体优化流程如下图所示:
以 LayerNorm 算子为例,通过算子拆分和重组,11 个小算子,组成了 1 个单算子和 2 个融合算子。这些重组后的算子可以生成更加高性能的算子,从而大大降低了整体网络运行时间。
在盘古模型中,图算融合帮助整体训练时间减少了 20% 以上。除此之外,对于其它 NLP、CV 等任务,图算融合在优化性能方面都有不错的表现。
点击关注,第一时间了解华为云新鲜技术~ |
|