GLM-130B-一个开放的双语通用预训练模型-论文精读

本文为作为类ChatGPT的模型ChatGLM的前期基础论文2《AN OPEN BILINGUAL PRE-TRAINED MODEL》的精读笔记,基础论文1的精读笔记请见《GLM论文精读-自回归填空的通用语言模型》。希望对大家有帮助,欢迎讨论交流。GLM-130B,主要思想概述:一个双语(英文和中文)的基于GLM的双向稠密模型。并没有使用GPT风格的架构,而是采用通用语言模型(GLM)算法(Du et al.,2022)来利用其双向注意力优势和自回归空白填充目标,模型参数为1300亿,语料约训练了4000亿个文本标记,在语义理解和文本生成任务上性能强大。

论文地址: https://arxiv.org/abs/2210.02414

论文代码: GitHub - THUDM/GLM-130B: GLM-130B: An Open Bilingual Pre-Trained Model (ICLR 2023)

官方博客: GLM-130B:开源的双语预训练模型 | GLM-130B

学习完后的最大感受是这是一个非常扎实的工作,论文的附录里把相关架构的选择思考、数据的构成乃至训练的log和主要失败的实验都记录公开了,不愧是T大!

目录

论文架构概述

论文的主要贡献包括:

架构

训练目标

位置编码

DeepNorm 归一化,使用DeepNet的Post-LN。

FFN改成GLU

训练

训练的难题

浮点数格式:FP16混合精度

嵌入层:梯度缩减

训练稳定性提升与注意力计算选择FP32 softmax

训练数据集

训练成本估算

超参数配置

​编辑 

工程实现与优化

并行策略:高效训练千亿模型

其他优化-算子融合

其他优化-流水线平衡

跨平台兼容,swDeepSpeed训练库

GLM模型量化

效果-优势

参考与致谢:

论文架构概述

  • 论文的主要贡献包括:

    • 1)架构选择

      • 通用语言模型GLM

      • 组件改进:旋转位置编码、DeepNorm、GeGLU

    • 2)工程实现

      • 并行策略:数据、张量、流水线3D并行

      • 多平台高效适配

    • 3)训练策略改进

      • 梯度爆炸的问题,采用了嵌入层梯度缩减策略

      • 解决注意力数值溢出问题,采用了FP32的softmax计算策略,训练稳定性有提升

  • GLM-130B的代码: 目前只开源了evaluate部分代码和checkpoint,并没有直接开源train的代码,基于研究目的可以申请获得。

架构

  • 训练目标

    • 自监督的自回归文本填空(95%tokens)。GLM利用自回归文本填空作为其主要的预训练目标。它掩盖了随机的连续跨度(例如,下面的例子中的 "complete unknown"),并对其进行自回归预测。上下文之间的注意力(例如,"like a [MASK], like a rolling stone")是双向的。相反,被掩盖的标记之间的注意力,和从上下文到被掩盖的标识符的注意力是自回归掩码的。

    • (注: glm的注意力双向和单向的介绍,刘潇的视频大概在14min左右)

      • 在GLM-130B的实现中,有两种不同的MASK标识符,表示两个不同的目的(To support both understanding and generation, it mixes two corruption objectives, each indicated by a special mask token):

        • [MASK]根据泊松分布 (λ=3)对输入中标识符进行短跨度的采样,主要服务对文本的理解能力目标;([MASK]: short blanks in sentences whose lengths add up to a certain portion of the input.)

        • [gMASK]掩盖一个长的跨度,从其位置到整个文本的结束,主要服务对文本的生成目标能力目标。 ([gMASK]: random-length long blanks at the end of sentences with prefix contexts provided) 

    • 多任务学习预训练(5%tokens)。T5(Raffel et al.,2020)和ExT5(Aribandi et al.,2022)表明,预训练中的多任务学习比微调更有帮助,因此论文建议在GLM-130B的预训练中包括各种指令提示数据集,包括语言理解、生成和信息抽取。

从概念上讲,与GPT风格的模型相比,具有双向注意力的填空目标能够更有效地理解上下文:当使用[MASK]时,GLM-130B表现为BERT(Devlin et al.,2019)和T5(Raffel et al.,2020);当使用[gMASK]时,GLM-130B的行为与PrefixLM类似(Liu等人,2018;Dong等人,2019)。

  • 位置编码

    • GLM-130B使用旋转位置编码(RoPE)。谷歌的PaLM和ElutherAI的GPT-*系列也采用这种编码。RoPE是一种相对位置编码,它利用复数空间的正交投影矩阵来表示标识符的相对距离。还有其他的相对位置编码选项,如Bigscience的BLOOM所使用的AliBi。但在我们的初步实验中,我们发现RoPE编码优势:1)当序列长度增长时,RoPE的实现速度更快。2)RoPE对双向注意力更友好,在下游微调实验中效果更好

    • 位置编码通常的划分:

      • 1)相对位置编码: Transformer-XL论文里提出attention中建模单词两两之间的相对距离。相对位置编码2021年来得到较多发展,ALiBI 和RoPE。其中ALiBi是给Attention加上bias矩阵(不同注意力头系数不同) 。RoPE旋转式编码,是一种相对位置编码,但是其是以绝对编码的形式实现相对编码。EleutherAI 、Google PalM 530B采用,实验表明RoPE 对GLM更有效且更容易实现双向相对注意力。

      • 2)绝对位置编码: 最早的transformer的三角函数式编码,Bert、GPT中提出的可学习式编码。

DeepNorm 归一化,使用DeepNet的Post-LN。

  • 原始的BERT论文采用的是Post-LN 结构。 但20年左右有论文证明Post-LN 结构容易发散,21年近年来文本生成的大模型普遍采用Pre-LN结构。 数百亿/多模态混合精读训练(FP16)中,Pre-LN也不稳定,实验发现Pre-的变体Sandwich-LN结构可以缓解这一现象

  • Pre-LN虽然容易训练,但性能不如稳定训练后的Post-Ln .

  • 202203提出的DeepNet,调整残差,更改初始化,能更加稳定的训练千层。千亿模型上,DeepNorm比Sandwich-LN 更稳定。

  • 在GLM-130B中,我们决定使用Post-LN,并使用新提出的DeepNorm来克服不稳定性。DeepNorm的重点是改进初始化,可以帮助Post-LN变换器扩展到1000层以上。在我们的初步实验中,模型扩展到130B,Sandwich-LN的梯度在大约2.5k步时就会出现损失突变(导致损失发散),而带有DeepNorm的Post-Ln则保持健康并呈现出较小的梯度大小(即更稳定)。即稳定训练1000层Post-LN 的方法, DeepNorm(x) = LayerNorm(@*x +g(x)) , @>1

FFN改成GLU

  • GLM-130B中改进transformer结构中的前馈网络(FFN),用GLU(在PaLM中采用)取代它,实验效果表明选择带有GeLU激活的GLU训练更稳定.(对比了另一个新提出的门控单元GAU)

  • GeGLU需要三个投影矩阵;为了保持相同数量的参数,与只利用两个矩阵的FFN相比,我们将其隐藏状态减少到2/3。

训练

训练的难题

  • 效率和稳定性两大权衡。据其观察,大模型比我们认为的那些小模型更容易受到不可避免的噪音数据和意外涌现的梯度影响。原因是,在训练效率和稳定性之间存在着权衡,其中效率:我们需要一个低精度的浮点格式(如FP16),以减少内存和计算成本;稳定性:低精度浮点格式容易出现溢出和下溢。

浮点数格式:FP16混合精度

  • FP16 用于前向和后向,FP32 用于优化器状态和主权重(Mixed-Precision. We follow the common practice of a mixedprecision (Micikevicius et al., 2018) strategy (Apex O2), i.e., FP16 for forwards and backwards and FP32 for optimizer states and master weights). 选择FP16作为其训练浮点格式。FP16混合精度已经成为主流大规模模型训练框架的默认选项,用于训练十亿到百亿规模的模型,但其存在容易遇到精度问题。为了让更多开发者使用,GLM-130B仍然选择FP16作为其训练浮点格式(此话表明只是训练浮点格式为FP16,其他的非浮点格式并不一定是FP16,如在softmax计算时使用的是FP32)。

嵌入层:梯度缩减

  • 现象:在训练的早期阶段,嵌入层的梯度范数明显比其他层大。根据经验,我们发现大多数训练崩溃都发生在其梯度范数激增之后。已有解决方案:BLOOM汇报了使用嵌入归一化(我们也发现它能稳定训练),但同时,其牺牲了相对较大的下游性能。

  • GLM-130B的解决方案:由于根本问题是输入嵌入层的急剧梯度,我们建议缩小输入嵌入层的梯度。实现起来相当简单。word_embedding = word_embedding * α + word_embedding.detach() * (1 - α) , 这就把梯度缩小到α。在我们的实践中,我们发现α=0.1对GLM-130B是最好的。

  • 效果:初步实验中,我们观察到,对于早期阶段的训练来说,缩小嵌入梯度并没有减缓收敛速度;相反,没有缩小梯度的模型会出现意外的尖峰,并在5k步左右出现训练崩溃的情况。

  • 梯度收缩是一种避免训练崩溃的事后技术。从本质上讲,崩溃是由异常的损失 "梯度"形成的,要么是由于噪声数据,要么是正向计算中的精度上溢或者下溢。

训练稳定性提升与注意力计算选择FP32 softmax

  • 背景:观察到,在大型语言模型中,注意力的计算操作是最容易上溢或下溢的。CogView显示,不同的注意力头对其注意力分数有非常不同的数值范围,有些注意力头计算出的平均分数可以达到+1e4或-1e-3。这种不同的数值范围会导致在softmax计算中FP16下的频繁上溢或下溢。CogView提出了精度瓶颈放松(PB-Relax)来缓解这个问题,它在做softmax之前扣除了每个头的注意力得分矩阵中的最大绝对值。

    • 混合精度训练,以模型参数fp16进行存储的。具体的细节见22年9月14的视频48min左右开始讲。

  • 训练中不稳定解决

    • Attention score层: softmax in 32 可以避免上下溢出

    • 调小embedding层梯度,缓解前期梯度爆炸问题

  • 在softmax中使用FP32。事实证明,PB-Relax在GLM-130B的训练中很慢,可能是因为在96个大小为2048*2048的注意分数矩阵中寻找最大值和操作标量对CUDA内核不友好。最后,经过几周的艰苦探索,我们发现避免这一问题的最快和最简单的方法是在softmax计算中使用FP32。与完全的FP16计算相比,它几乎没有任何速度上的损失,但明显提高了训练的稳定性。

训练数据集

1)自监督空白填充(95%token)

  • 共计2.5T的中英混合语料。1.3T中文语料。包括Wudao语料和从网络上爬取的250G中文语料(包括在线论坛、百科和问答)。1.2T Pile英文语料。GLM-130B在此任务中同时使用[MASK]和[gMASK]。

    • 字符级别27%,训练填空能力[MASK],短文本

      • 每个片段的长度从均值为3的泊松分布中采样,总片段长度为原始序列长度的15%

      • 单个字符级任务的最大序列长度为512,,4个任务拼接到一起,构成2048

    • 文档级别66%,训练生成能力[gMask],长文本

      • 一个文本序列中只有一个片段,片段长度为原始序列长度的50%~100%

      • 最大序列长度为2048

2)多任务指令预训练(5%token)

  • 5%的训练标记来自多任务指令预训练MIP(Multi-Task Instruction Pre-Training,MIP)数据集。一个只含有一个片段的文本序列,片段为下游任务数据的原始预测目标

训练成本估算

  • GLM-130B的预训练持续了60天,使用96个DGX-A100(40G)节点,等价花费490万美元的云服务费用(实际应该比这个低)

超参数配置

其中该词表和分词器是基于icetk实现的。icetk是一个统一的图像、中文和英文的多模态标记器。

工程实现与优化

并行策略:高效训练千亿模型

  • 采用Zero优化器在数据并行组内分摊优化器状态

  • 模型并行:将模型参数分布到多个GPU上,里面包括1)张量并行(切分参数矩阵,每个GPU计算一部分,增加一部分额外通行,降低计算粒度) 2)流水线并行,将网路分成多段并行,引入流水线气泡。 3) ZeRO-3: 将参数分布到数据并行组中,算之前先取回参数,增加了额外通信时间.。 整体并行策略: 张量并行随着模型规模增大缓慢扩展,但不超过单机规模,其余全部使用流水线并行,通过调整微批处理大小减少气泡占比

其他优化-算子融合

  • 融合多个element-wise算子,提升10%左右的计算速度

其他优化-流水线平衡

  • 流水线首尾阶段各少放置一个层平衡占用,节省10%左右的内存

跨平台兼容,swDeepSpeed训练库

  • 支持神威架构,一行代码 无缝替换兼容

  • 实现并行通信策略,混合精度策略,ZeRO优化器

  • 同一套训练框架可在三个训练集群上对齐训练曲线

GLM模型量化

  • 将GLM-130B的权重进行量化

  • 支持INT4的量化精度      

效果-优势

双语,同时支持中文和英文

高精度(英文) ,在LAMBADA数据集上由于GPT-3 175B

高精度(中文),在7个零样本的CLUE数据集上明显优于ERNIE

高效推理,可以基于FasterTransformer进行快速推理(相比Metatron提速最高可达2.5倍)

低门槛推理:最低量化INT4

跨平台,支持在navidia、海光DCU、昇腾910和神威处理器上的训练

零样本学习,中文语言理解基准CLUE ,acc的效果不错

零样本学习,大规模多任务语言理解MMLU 数据集上的,包括57个关于人类知识的多选题,效果不错

参考与致谢:

本笔记主要是参考如下文献整理而成,向前辈大佬们致敬!

GLM-130B/README_zh.md at main · THUDM/GLM-130B · GitHub

GLM-130B:开源的双语预训练模型 | GLM-130B

GLM-130B:开源的双语千亿预训练模型——可在4张3090或8张1080Ti上使用的千亿模型_哔哩哔哩_bilibili

论文阅读-GLM-130B:一种开放的双语预训练模型(2023) - 知乎

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【跟李牧学AI】 ChatGPT是什么?--先看看InstructGPT

最近OpenAI公司的ChatGPT非常火爆,虽然正式的论文还没有发布,但是按照OpenAI一贯的工作思路,基于前期工作进行相应的改造,我们可以跟着沐神一起来看看InstructGPT,也算法对了解ChatGPT有个前期的知识储备。 instructG…

李沐论文精度系列之十:GPT-4

文章目录 一、AIGC资讯速览1.1 Toolformer(2023.2.9)1.2 ChatGPT plugin1.3 LLaMA(2023.2.24)1.4 Visual ChatGPT(2023.3.8)1.5 GigaGAN(2023.3.9)1.6 Stanford Alpaca(2…

ViT论文逐段精读【论文精读】-跟李沐学AI

视频链接:ViT论文逐段精读【论文精读】_哔哩哔哩_bilibili ViT:过去一年,CV 最有影响力的工作 推翻了 2012 Alexnet 提出的 CNN 在 CV 的统治地位 有足够多的预训练数据,NLP 的 Transformer 搬运到 CV,效果很好 打…

血条加载!百度地图上线复苏指数;Quora推出问答机器人;腾讯绝悟成功用于医疗诊断;使用chatGPT生成推文;GitHub AI项目精选 | ShowMeAI资讯日报

👀日报合辑 | 🎡AI应用与工具大全 | 🔔公众号资料下载 | 🍩韩信子 📢 『百度地图 复苏指数』用大数据吹起人间烟火 随着疫情防控措施的调整优化,市民的出行和消费需求逐步回暖,各大城市日渐复…

火爆全网的[ChatGPT] ai studio可以玩啦

☆ 只需两步, Ai Studio上也可以玩[ChatGPT]了 ☆ 无需账号即可体验喽~ 【一定要选择最新版本的项目嗷!官方接口更新太快!】 据说诱导式可以得到匪夷所思的结果! 图源网络,仅供娱乐 0 Fork后进入项目 应用中心体验…

终于来了,OpenAI发布iOS版ChatGPT,支持语音提问

OpenAI发布了ChatGPT的iPhone版本,并承诺未来将发布安卓版本。 该软件免费使用,目前仅支持英语,在美国可以通过苹果商店下载后,在iOS操作系统的设备上使用,用户可以输入问题并接收来自聊天机器人(16.310, -0.34, -2.0…

爆火的ChatGPT,如何能打造一个属于自己的ai客服小程序

简单了解一下这个系统: 小程序中访问也比较方便安全,目前做的人还比较多,大家赶紧上车。 再次提醒风口项目不能犹豫,等你缓过神来,人家已经赚得盆满钵满了,但也不要头脑一热就搞,根据自己的资…

ChatGPT入门案例|张量流商务智能客服

本篇介绍了序列-序列机制和张量流的基本概念,基于中文语料库说明基于循环神经网络的语言翻译的实战应用。 01、序列-序列机制 序列-序列机制概述 序列-序列(Sequence To Sequence,Seq2Seq)是一个编码器-解码器 (Encoder-Decoder Mechanism)结构的神经网络,输入是序列(…

ChatGPT详聊IT服务台,AI可以取代人工么?

近期ChatGPT火爆出圈&#xff0c;在被更多人熟知的过程中&#xff0c;大家也提出了“未来AI是否会取代自身职位”的疑问。 那么&#xff0c;IT服务台的工作&#xff0c;未来会被人工智能取代吗&#xff1f; ⬇️以下内容均由ChatGPT输出⬇️ >IT服务台是怎么运营的< …

【基于ChatGPT+SpringBoot】打造智能聊天AI机器人接口并上线至服务器

&#x1f680; ChatGPT是最近很热门的AI智能聊天机器人 &#x1f680; 本文使用SpringBootOpenAI的官方API接口&#xff0c;自己实现一个可以返回对话数据的接口并上线服务器 &#x1f680; 用途方面相比于普通的聊天AI更加的广泛&#xff0c;甚至可以帮助你改BUG&#xff0c;写…

基于ChatGPT的私人助理机器人开发实战

你是否曾希望有一位私人助理来帮助管理知识或根据你的文档回答问题&#xff1f; 随着 OpenAI 最近发布的 GPT 3.5 系列 API&#xff0c;现在可以根据自己的数据构建自己的问答聊天机器人。 在本文中&#xff0c;我们将探讨如何使用 llama-index 和 GPT API 高效地构建文档问答…

AI 已死?不,AIGC 给我们带来了新的希望

爆款频出的 AIGC&#xff0c;2023 年能否延续热度&#xff1f; 文 | 刘雨洁、王与桐 编辑 | 石亚琼 封面来源&#xff5c;IC photo 2022 年的热门词汇有什么&#xff1f;AIGC 当之无愧位列其中&#xff0c;甚至将名列前茅。 从 5 月的 Disco Diffusion 和 DALLE2 引起的 AI 作画…

超导百年:物理学“圣杯”是如何诞生的?

最近科技圈流传的大新闻&#xff0c;大家都知道了吧&#xff1f; 简单来说&#xff0c;美国物理学会的三月会议上&#xff0c;来自罗彻斯特大学的Ranga Dias宣布&#xff0c;他们团队在近环境压强下实现了室温超导。 这个消息在中文互联网流传之后&#xff0c;很快就有了详细的…

树莓派离线下载

最近朋友买了一个私人网盘&#xff0c;可以用于资料的备份&#xff0c;也可以挂机下载&#xff0c;感觉还挺有趣的&#xff0c;自己也想折腾一下&#xff0c;利用树莓派搭载一个私人网盘&#xff0c;用于离线下载&#xff0c;折腾了半天终于弄好了&#xff0c;现在记录一下。 …

Linux Anaconda使用、离线安装包及其依赖库

Linux Anaconda使用、离线安装包及其依赖库 1. 以离线安装skimage包为例1.1 批量下载skimage包依赖库1.2 批量安装 2. Anaconda安装使用2.1下载安装2.2 使用2.2.1 查看Anaconda中已经安装的Python版本2.2.2 查看该环境中已经安装的包2.2.3 查看该环境中已有虚拟环境2.2.4 创建虚…

如何使用 ChatGPT4 学习 Python?

虽然 ChatGPT-4 可以提供支持和指导&#xff0c;但需要注意的是它是一种 AI 语言模型&#xff0c;而不是专门的 Python 学习平台。尽管如此&#xff0c;您仍然可以按照以下步骤使用 ChatGPT-4 来帮助您学习 Python&#xff1a; 熟悉 Python 基础知识&#xff1a;首先向 ChatGP…

送5本ChatGpt深度学习书籍

文末赠书 你听说了吗&#xff1f;微软市值一夜暴涨5450亿美元&#xff01; 难道是出现了什么颠覆人类的“黑科技”吗&#xff1f; 图1&#xff1a;微软股价变动 没错&#xff0c;就是这个令AI界发生震动的ChatGPT&#xff01; ChatGPT因其可以逼真地模拟人类语言、与用户可以自…

【3.0版本】用ChatGPT开发一个书籍推荐微信小程序(三)

文章目录 1 前言1.1 实现原理1.2 在小程序如何衔接1.3 技术架构 2 爬取数据2.1 根据书名爬取信息2.2 根据作者爬取信息2.3 根据类型爬取信息 3 讨论 1 前言 1.1 实现原理 万变不离其宗&#xff0c;还是相当于与ChatGPT交互问答&#xff0c;然后映射到小程序中&#xff0c;以下…

出海必知:跨境人必须知道的一个跨境电商推广常用渠道

目前大家通常首先会想到通过Facebook和Google的广告去为自己的跨境电商平台进行推广&#xff0c;但是大家往往会忽略“海外小红书” - Pinterest这一个热门且常用的渠道。对于现在做品牌出海以及跨境电商的卖家而言&#xff0c;Facebook和Google的价格和竞争力都太高了&#xf…

跨境电商如何制定社交媒体营销策略?

关键词&#xff1a;跨境电商&#xff0c;社交媒体营销&#xff0c;营销策略 社交媒体包罗万象&#xff0c;它并不像看起来那么简单。在制定促进业务的战略时&#xff0c;跨境电商新卖家很容易不知所措。尽管如此&#xff0c;创建一个成功的社交媒体营销策略并不一定是一个痛苦…