【NLP】大语言模型基础之GPT

大语言模型基础之GPT

  • GPT简介
    • 1. 无监督预训练
    • 2. 有监督下游任务微调
  • GPT-4体系结构
    • 1. GPT-4的模型结构
    • 2. GPT-4并行策略
    • 3. GPT-4中的专家并行
    • GPT-4的特点
  • 参考连接

以ELMo为代表的动态词向量模型开启了语言模型预训练的大门,此后,出现了以GPT和BERT为代表的基于Transformer的大规模预训练模型。利用丰富的训练语料、自监督的预训练人物及Transformer等深度神经网络结构,预训练语言模型具备了通用且强大的自然语言表示能力,能够有效地学习到词汇、语法和语义信息。将预训练模型应用于下游人物时,不需要了解太多的人物细节,不需要设计特定的神经网络结构,只需要“微调”预训练模型,即使用具体任务的标注数据在预训练语言模型上进行监督训练,就可以取得显著的性能提升。

GPT简介

OpenAI公司在2018年提出的生成式预训练语言模型(Generative Pre-Training, GPT)是典型的生成式预训练语言模型之一。GPT的模型结构如下所示:
GPT4的结构
它是由多层Transformer组成的单向语言模型,主要分为输入层、编码层和输出层三部分。直观上如下图所示:
GPT的模型结构
GPT 使用 Transformer的 Decoder 结构,并对 Transformer Decoder 进行了一些改动,原本的 Decoder 包含了两个 Multi-Head Attention 结构,GPT 只保留了 Mask Multi-Head Attention

接下来重点介绍GPT的无监督预训练、有监督下游任务以及基于HuggingFace的预训练语言实践。

1. 无监督预训练

GPT采用生成式预训练方法,单向意味着模型只能从左到右或从右到左对文本序列建模,所采用的Transformer结果和解码策略保证了输入文本每个位置只能依赖过去时刻的信息。

具体而言,假设我们无标记的语料库里面有一句话是 μ = { u 1 , u 2 , . . . , u n } \mu=\{u_1,u_2,...,u_n\} μ={u1,u2,...,un},GPT的模型参数是 Θ \Theta Θ,作者设计了下面的目标函数来最大化 L 1 ( μ ) L_1(\mu) L1(μ):
L 1 ( μ ) = ∑ i log ⁡ P ( u i ∣ u i − k , . . . , u i − 1 ; Θ ) L_1(\mu)=\sum_i\log{P(u_i|u_{i-k},...,u_{i-1};\Theta)} L1(μ)=ilogP(uiuik,...,ui1;Θ)
式中,k是上下文窗口的大小。这个式子的本质是让模型看到前面k个词,然后预测下一个词是什么,再根据真实的下一个词来计算误差,并使用随机梯度下降来训练。即希望模型能够根据前k个词更好地预测下一个词。

GPT首先在输入层将给定的文本序列映射为稠密的向量 v i = v i t + v i p v_i=v_i^t+v_i^p vi=vit+vip其中, v i t v_i^t vit是词 u i u_i ui的词向量, v i p v_i^p vip是词 u i u_i ui的位置向量, v i v_i vi为第i个位置的单词经过模型输入层(第0层)后的输出。GPT模型的输入层与神经网络语言模型的不同之处在于其需要添加位置向量。这是因为Transformer结构自身无法感知位置导致的,因此需要来自输入层的额外位置信息。

经过输入层编码,模型得到表示向量序列 v = v 1 , . . . , v n v=v_1, ..., v_n v=v1,...,vn,随后将 v v v送入模型编码层。编码层由L个Transformer模块组成,在自注意力机制的作用下,每一层的每个表示向量都会包含之前位置表示向量的信息,使每个表示向量都具备丰富的上下文信息,而且,经过多层编码,GPT就能得到每个单词层次化的组合式表示,其计算过程表示为:
h ( L ) = Transformer-Block ( L ) ( h ( 0 ) ) h^{(L)}=\text{Transformer-Block}^{(L)}(h^{(0)}) h(L)=Transformer-Block(L)(h(0))
其中, h ( L ) ∈ R d × n h^{(L)}\in R^{d\times n} h(L)Rd×n表示第L层的表示向量序列,n为序列长度,d为模型隐藏层维度,L为模型总层数。

GPT模型的输出层基于最后一层的表示 h ( L ) h^{(L)} h(L),预测每个位置上的条件概率,其计算过程可以表示为 P ( w i ∣ w 1 , . . . , w i − 1 ) = Softmax ( W e h i ( L ) + b o u t ) P(w_i|w_1,...,w_{i-1})=\text{Softmax}(W^eh_i^{(L)}+b^{out}) P(wiw1,...,wi1)=Softmax(Wehi(L)+bout)
其中 W e ∈ R ∣ V ∣ × d W^e\in R^{|V|\times d} WeRV×d为词向量矩阵, ∣ V ∣ |V| V为词表大小。

单向语言模型按照阅读顺序输入文本序列 u u u,用常规语言模型目标优化 u u u最大似然估计,使之能根据输入历史序列对当前词做出准确的预测: L P T ( u ) = − ∑ i = 1 n log ⁡ P ( u i ∣ u 0 , . . . , u i − 1 ; θ ) L^{PT}(u)=-\sum_{i=1}^n\log{P(u_i|u_0,...,u_{i-1};\theta)} LPT(u)=i=1nlogP(uiu0,...,ui1;θ)
其中 θ \theta θ代表模型参数。
也可以基于马尔可夫假设,只使用部分过去词进行训练。预训练时通常使用随机梯度下降法进行反向传播,优化该负对数似然函数。

2. 有监督下游任务微调

通过无监督语言模型预训练,使得GPT 模型具备了一定的通用语义表示能力。下游任务微调(Downstream Task Fine-tuning)的目的是在通用语义表示的基础上,根据下游任务的特性进行适配。

下游任务通常需要利用有标注数据集进行训练,数据集使用 D D D进行表示,每个样例由输入长度为n的文本序列 x = x 1 x 2 . . . x n x=x_1x_2...x_n x=x1x2...xn和对应的标签 y y y构成。

输入首先通过Transformer Block,然后通过一个线性层(参数为 W y W_y Wy)和Softmax得到最终的输出,计算真实标签上面的概率:
P ( y ∣ x 1 , . . . , x n ) = softmax ( h l n W y ) P(y|x_1,...,x_n)=\text{softmax}(h_l^nW_y) P(yx1,...,xn)=softmax(hlnWy)
其中 h l n h_l^n hln表示第 l l l个block的最终输出, W y W_y Wy是fine-tuning的权重。

通过对整个标注数据集 D D D优化如下目标函数精调下游任务 L F T ( D ) = − ∑ x , y log ⁡ P ( y ∣ x 1 . . . x n ) L^{FT}(D)=-\sum_{x,y}\log{P(y|x_1...x_n)} LFT(D)=x,ylogP(yx1...xn)
在微调过程中,下游任务针对任务目标进行优化,很容易使得模型遗忘预训练阶段所学习的通用语义知识表示,从而损失模型的通用性和泛化能力,导致出现灾难性遗忘(Catastrophic Forgetting)问题。

因此,通常采用混合预训练任务损失和下游微调损失的方法来缓解,即由两个目标函数:

  1. 给定一个序列,让模型预测序列未来的词
  2. 给定完整的序列,让模型预测序列未来的标号。

L = L F T ( D ) + λ L P T ( D ) L = L^{FT}(D)+\lambda L^{PT}(D) L=LFT(D)+λLPT(D)
其中 λ \lambda λ的取值为[0, 1],用于调节预训练任务的损失占比。

GPT-4体系结构

先说结论:

  • GPT-4(Generative Pre-trained Transformer 4)是 OpenAI 发布的最新 GPT 系列模型。它是一个大规模多模态模型,相比 GPT-3.5 / ChatGPT,GPT-4 可以接受图像和文本两种形式的输入,产生文本输出。
  • GPT-4的输出依旧是一个自回归的单词预测任务。技术上,GPT-4 采用了**专家混合(MoE)**技术,进一步增强模型的能力。
  • 整体来说,GPT-4 在各种专业和学术基准上表现出了人类的水平,对于生成式的幻觉、安全问题均有较大的改善。

GPT4技术报告:GPT-4 Technical Report

1. GPT-4的模型结构

GPT-4 的体系结构由16个不同的专家模型组成每个模型都有 111B 个参数总计约 1.76 万亿个参数。除了更大的参数规模外,另一个重要的细节是 GPT-4 使用了专家混合Mixture of Experts,简写为 MoE)架构,这意味着模型中的不同组件或“专家”协同工作,每个组件都有助于最终输出。
MoE
上图可视了采用 MoE 的 Transformer 层在 GPT-4 中 Attention 的参数量有 55B,MoE 的参数量是 111B * 16,一共 120 层 Transformer。每个 token 会通过一个路由算法选择两个 MLP 进行计算,参数 seq_len 为 8k,每个 MLP 分到 1k 个 token。GPT-4 的模型宽度,深度基本和 GPT-3 (175B) 差不多,区别在于 MLP 的数量要多16倍

2. GPT-4并行策略

GPT-4 训练采用的并行策略是:

  • 张量并行:8
  • 流水并行:16
  • 数据并行:196

总计使用约 3125 台机器(25000 张 A100)进行训练。其中 batch size 为 60M token,seq_len 为 8k。张量并行和流水并行包含了 GPT-4 完整的模型参数,其结构如下:
GPT-4的张量并行和流水并行
其中,张量并行通讯耗时占比小于 15%,PipeDream 流水线气泡占比 28% 左右,Interleaved 1F1B 流水线气泡占比 16% 左右。

3. GPT-4中的专家并行

专家混合(Mixture of Experts,简写为 MoE)是一种在模型增强的道路达到极限时采用的实用方法。运作原理很简单——由更简单的模型或“专家”组成一个小组,每个模型或专家都针对数据的特定方面,然后利用他们的集体智慧。

这就像处理一项复杂的任务。比如建造一所房子会招聘建筑师、工程师和室内设计师等专业人士,每个人都有自己独特的专业知识。类似地,MoE模型由多个“专家”组成,每个专家都精通某个特定领域,协作以提供增强的结果。如下图所示:
MoE
对于 MoE 模型进行并行训练,这里可以做一个初步的估计:按照目前最大的 8 路张量并行,16 路流水线并行计算,每个 GPU 上的参数量是 14B,假设用 FP32 的梯度,则参数和梯度需要占用 84 GB 的显存,目前市面上还没有能完整放下显卡。因此,GPT-4 大概率会使用专家并行(Expert Parallelism)技术来节省显存占用
专家并行

GPT-4的特点

  1. 具有图像理解能力,突破纯文字的模态,增加了图像模态的输入。
  2. 支持更长的上下文窗口,GPT-4 的 seq_len 为 8k,是 ChatGPT 上下文长度的2倍。
  3. 复杂任务处理能力大幅提升
  4. 改善幻觉、安全等局限性

参考连接

  1. 开源大语言模型(LLM)汇总
  2. GPT-4大模型硬核解读,看完成半个专家
  3. GPT模型总结【模型结构及计算过程_详细说明】
  4. LLM 系列超详细解读 (一):GPT:无标注数据的预训练生成式语言模型
  5. 深入浅出 GPT-4 的体系结构
  6. Hugging Face 中文预训练模型使用介绍及情感分析项目实战

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Simulink从0搭建模型03-Enabled Subsystem 使能子系统

参考博客 b站视频 【Simulink 0基础入门教程 P4 使能子系统 Enabled Subsystem 的使用介绍】 个人听了这个博主的视频风格觉得很适合我入门学习,讲得很清楚。 另外,视频里面教得很详细了,我也不会再详细写怎么打开创建等步骤,跟着…

年如何在不丢失数据的情况下解锁锁定的 Android 手机?

当您忘记密码、PIN 码或图案并且想要解锁 Android 手机时,您可能会丢失 Android 手机上的数据。但您无需再担心,因为在这里,我们想出了几种解锁锁定的 Android 手机而不丢失数据的方法。 方法 1. 使用 Android Unlock 解锁锁定的 Android 且不…

拿捏 顺序表(1)

目录 1. 顺序表的分类2. 顺序表实现3. 顺序表实现完整代码4. 总结 前言: 一天xxx想存储一组数据, 并且能够轻松的实现删除和增加, 此时数组大胆站出, 但是每次都需要遍历一遍数组, 来确定已经存储的元素个数, 太麻烦了, 于是迎来了顺序表不屑的调侃: 数组你不行啊… 顺序表是一…

MSE实现全链路灰度实践

技术架构包括以下基础设施和云服务: 1个地域:ACK集群、微服务应用、MSE实例均部署在同一地域下。 1个专有网络VPC:形成云上私有网络,确保核心云资源的网络环境,如容器服务ACK、微服务引擎MSE。 ACK集群:简单…

升级 jQuery:努力打造健康的 Web 生态

jQuery 对 Web 的影响始终是显而易见的。当 jQuery 在 2006 年首次推出时,几乎立即成为 Web 开发人员的基本工具。它简化了 JavaScript 编程,使操作 HTML 文档、处理事件、执行动画等变得更加容易。从那时起,它在 Web 标准和浏览器功能的演变…

idea中打印日志不会乱码,但是部署到外部tomcat中乱码了。

问题:如图Tomcat乱码,而且启动时的系统日志不会乱码,webapp中的打印日志才乱码。 idea中的情况如下:正常中文展示。 问题分析:网上分析的原因是Tomcat配置的字符集和web应用的字符集不匹配,网上集中的解决…

Springboot的日常操作技巧

文章目录 1、自定义横幅2、容器刷新后触发方法自定义3、容器启动后触发方法自定义**CommandLineRunner**ApplicationRunner 不定时增加 参考文章 1、自定义横幅 简单就一点你需要把banner.text放到classpath 路径下 ,默认它会找叫做banner的文件,各种格式…

“奇观”初见,祁门竞赛上海正式发

布给上下山水、左右人文的“徽州”,另起一笔“烟火” 城市更新从空间营造进入地方创生。何为地方?如何创生?其关键也许在于“持续打开”,源源不断吸引新生力量参与,从在地文化中生长出创作生态。 镶嵌于长三角腹地&a…

Ubuntu Pycharm安装

下载PyCharm,https://www.jetbrains.com/pycharm/download/?sectionlinux 然后按照下图执行安装: 安装的时候可能出现的问题: 问题1:No JDK found. Please validate either PYCHARM_JDK, JDK_HOME or JAVA_HOME environment var…

SHELL脚本(全是干货)

一、shell是什么? 1. 1 shell 是一种脚本语言 脚本语言的本质是一个文件,文件里面存放的是特点格式的指令,系统可以使用脚本解析器翻译或者解析指令,并且执行(它不需要编译) shell 即是应用程序&#xff…

江开2024年春《大学英语(B)(2) 060052》过程性考核作业4参考答案

答案:更多答案,请关注【电大搜题】微信公众号 答案:更多答案,请关注【电大搜题】微信公众号 答案:更多答案,请关注【电大搜题】微信公众号 单选题 1阅读Passage One,回答C-1C-4个问题。请…

高频前端面试题汇总之HTML篇

1. src和href的区别 src和href都是用来引用外部的资源,它们的区别如下: src: 表示对资源的引用,它指向的内容会嵌入到当前标签所在的位置。src会将其指向的资源下载并应⽤到⽂档内,如请求js脚本。当浏览器解析到该元素…

OpenCV 如何实现边缘检测器

返回:OpenCV系列文章目录(持续更新中......) 上一篇:OpenCV如何实现拉普拉斯算子的离散模拟 下一篇 :OpenCV系列文章目录(持续更新中......) 目标 在本教程中,您将学习如何: 使用 OpenCV 函数…

为什么浏览器打印后会有一个undefined

问题: 原因:浏览器中调试代码,浏览器会默认输出打印语句返回值,多行调试命令返回时只执行最后一个返回值 1、这里没有打印操作,但是返回了1。控制台输出的是调试命令的【返回值】 2、如果调试命令本身就带有打印的语…

C系统编程:从零手搓一个shell

背景 这么久没更新就是在干这件事!!因为系统编程已经学的差不多了,所以想找几个项目练练手,之前就一直想写一个自己的shell!!现在终于有机会实现了。 首先说明一下我的操作系统:Arch linux 服务…

HFSS端口介绍2---波端口

前面我们讨论了Lumped Port设定相关的内容,这节我们继续讨论Wave Port(波端口)使用相关的问题。 波端口使用范围 封闭结构:如波导、同轴电缆等 包含多个传播模式的模型 端口平面在求解区域外的模型 模型中包含均匀的波导或者传输线结构 波端口的大小 对于封闭的传输线结构:边…

【C++】vector常用函数总结及其模拟实现

目录 一、vector简介 二、vector的构造 三、vector的大小和容量 四、vector的访问 五、vector的插入 六、vector的删除 简单模拟实现 一、vector简介 vector容器&#xff0c;直译为向量&#xff0c;实践中我们可以称呼它为变长数组。 使用时需添加头文件#include<v…

【御控工业物联网】JAVA JSON结构转换、JSON结构重构、JSON结构互换(5):对象To对象——转换映射方式

御控官网&#xff1a;https://www.yu-con.com/ 文章目录 御控官网&#xff1a;[https://www.yu-con.com/](https://www.yu-con.com/)一、JSON结构转换是什么&#xff1f;二、术语解释三、案例之《JSON对象 To JSON对象》四、代码实现五、在线转换工具六、技术资料 一、JSON结构…

MySQL索引为什么选择B+树,而不是二叉树、红黑树、B树?

12.1.为什么没有选择二叉树? 二叉树是一种二分查找树,有很好的查找性能,相当于二分查找。 二叉树的非叶子节值大于左边子节点、小于右边子节点。 原因: 但是当N比较大的时候,树的深度比较高。数据查询的时间主要依赖于磁盘IO的次数,二叉树深度越大,查找的次数越多,性能…

openstack-镜像封装 7

再克隆两台主机并且安装图形化组件和虚拟化组件 进入图形化界面并安装一个虚拟化管理器 根下创建一个目录&#xff0c;虚拟化管理器新添加一个路径 创建虚拟化 配置虚拟化主机 设置虚拟化主机配置 安装所需软件 清理创建云主机时安装的组件 主机安装虚拟化工具 清理虚拟化缓存 …