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

news2024/11/18 3:46:49

大语言模型基础之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 中文预训练模型使用介绍及情感分析项目实战

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

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

相关文章

vue中web端播放rtsp视频流(摄像头监控视频)(海康威视录像机)

一、ffmpeg安装​​​​​​ ffmpeg下载 https://ffmpeg.org/download.html找ffmpeg-release-essentials.zip点击下载,下载完解压ffmpeg.exe 程序运行 二、配置ffmpeg环境变量 添加成功后验证是否生效任意地方打开cmd窗口输入 ffmpeg 打印如下表示成功 三、node…

使用IOPaint实现图片擦除路人

IOPaint 是一个免费的开源的 inpainting/outpainting 工具,由最先进的 AI 模型提供支持。 IOPaint 中使用各种模型来修改图像: 擦除:删除任何不需要的物体、缺陷、水印、人物。修复:对图像的特定部分进行修改、添加新对象或替换…

synchronized的底层原理

目录 介绍 实现原理 对象头 Monitor(监视器) 锁升级 偏向锁 轻量级锁 重量级锁 锁的优缺点 介绍 synchronized 是 Java 中的关键字,它用于锁定代码块或方法,以确保同一时刻只有一个线程可以进入被锁定的部分。这在多线程…

OpenCompass 大模型评测实战——作业

OpenCompass 大模型评测实战——作业 一、基础作业1.1、使用 OpenCompass 评测 internlm2-chat-1_8b 模型在 C-Eval 数据集上的性能1.1.1、安装基本环境1.1.2、解压数据集1.1.3、查看支持的数据集和模型1.1.4、启动评测 二、进阶作业2.1、将自定义数据集提交至OpenCompass官网 …

WPS表格,怎样保留每个人的最近日期的那一行数据?

方法很多,这里演示使用排序删除重复项 来完成。具体操作如下: 1. 选中数据区域中任意一个单元格,注意要么全选数据区域,要么只选一个单元格 2. 点击数据选项卡,排序,自定义排序, 在弹出对话框…

Java | Leetcode Java题解之第42题接雨水

题目&#xff1a; 题解&#xff1a; class Solution {public int trap(int[] height) {int n height.length;if (n 0) {return 0;}int[] leftMax new int[n];leftMax[0] height[0];for (int i 1; i < n; i) {leftMax[i] Math.max(leftMax[i - 1], height[i]);}int[] …

单例设计模式c++

什么是单例模式&#xff1f; 单例模式指在整个系统生命周期里&#xff0c;保证一个类只能产生一个实例&#xff0c;确保该类的唯一性。 单例模式分类 单例模式可以分为懒汉式和饿汉式&#xff0c;两者之间的区别在于创建实例的时间不同&#xff1a; 懒汉式&#xff1a;指系…

德国激荡50年的荆棘之路

财通证券表示&#xff0c;过去50年见证了德国如何走出财政泥沼、以保守的货币政策稳步前行&#xff0c;见证了“专精特新”带来的全球竞争力&#xff0c;也见证了产业转型缓慢导致的增长动能缺失。 过去50年&#xff0c;德国经济经历了一段跌宕起伏的发展史&#xff0c;这辆曾…

2024五一萌趣嘉年华主题展活动策划案

2024五一国宝大作战 萌趣嘉年华熊猫滚滚来野主题展活动策划案-53P 活动策划信息&#xff1a; 方案页码&#xff1a;53页 文件格式&#xff1a;PPT 方案简介&#xff1a; 活动思路&#xff1a; 五一马上就要到了~再加上全民关注的对象--大熊猫&#xff01;&#xff01; 这…

SpringCloud系列(14)--Eureka服务发现(Discovery)

前言&#xff1a;在上一章节中我们说明了一些关于服务信息的配置&#xff0c;在本章节则介绍一些关于Discovery的知识点及其使用 1、Discovery是什么&#xff0c;有什么用 Discovery&#xff08;服务发现&#xff09;是eureka的功能和特性&#xff0c;有时候微服务可能需要对外…

【MATLAB源码-第31期】基于matlab的光通信中不同调制方式的误码率对比。

操作环境&#xff1a; MATLAB 2022a 1、算法描述 1. 光通信&#xff1a; 光通信是一种利用光波传输信息的技术。它使用光信号作为信息的载体&#xff0c;通过调制光波的特性来传输数据&#xff0c;通常利用光纤作为传输介质。光通信具有高带宽、低延迟和大容量等优点&#…

PE结构(二)PE头字段说明

PE头字段 DOS头 PE标记 标准PE头 可选PE头 我们今天分析一下PE头字段中所有重要成员的含义 DOS头 DOS头中我们需要去分析的是如下两个成员&#xff1a; 1.WORD e_magic&#xff1a;MZ标记&#xff0c;用于判断是否为可执行文件&#xff0c;即如果显示4D 5A&#xff0c;…

Centos7 安装zabbix agent2并测试与zabbix server的连通性

目录 1、实验环境 2、yum在线安装 2.1 查看agent2 rpm包&#xff0c;找到合适的rpm包 2.2 rpm安装 2.3 配置zabbix_agent2.conf 2.4启动agent2服务并将其加入到开机启动项中 3、配置防火墙放行10050端口&#xff0c;允许10050/tcp端口的入站流量。 4、在zabbix-server机…

云南旅游攻略

丽江景点 Day1 ——丽江古城 丽江古城是一个充满文化和历史的地方&#xff0c;拥有丰富的景点和活动。 推荐游玩&#xff1a; 参观标志性建筑&#xff1a;大水车是丽江古城的标志性建筑&#xff0c;可以在这里拍照留念。 探索中心广场&#xff1a;四方街是古城的中心&#xf…

从未如此清晰:了解SVG格式的终极解读!

图像质量对页面非常重要——扭曲和缩放变形的标志、图标或照片会使页面看起来粗糙和不协调&#xff0c;这个问题只会因为响应设计而复杂。访问者通过桌面机和智能手机查看应用程序&#xff0c;因此无论使用什么设备&#xff0c;图像都应该进行优化。如果有一个数字格式可以让图…

共享单车数据分析与需求预测项目

注意&#xff1a;本文引用自专业人工智能社区Venus AI 更多AI知识请参考原站 &#xff08;[www.aideeplearning.cn]&#xff09; 项目背景 自动自行车共享系统是传统自行车租赁的新一代&#xff0c;整个会员、租赁和归还过程都变得自动化。通过这些系统&#xff0c;用户可以…

SpringCloud系列(13)--Eureka服务名称修改和服务IP显示

前言&#xff1a;在上一章节中我们把服务提供者做成了集群&#xff0c;而本章节则是一些关于服务信息的配置&#xff0c;这部分知识对集群整体影响不大&#xff0c;不过最好还是掌握&#xff0c;毕竟万一有用到的地方呢 1、修改服务的名称 有时候我们想要修改服务的名称&#…

Linux网络-DHCP原理与配置

目录 一.DHCP工作原理 1.了解DHCP服务 1.1.使用DHCP的好处 1.2.DHCP的分配方式 2.DHCP的租约过程 2.1.DHCP工作原理 2.2.DHCP交互过程 二.DHCP服务器的配置 1.关闭防火墙 2.检查并且安装DHCP有关软件包 3.查看系统的配置文件 3.1.设置参数 4.修改网络 4.1.修改虚…

MATLAB命令

MATLAB是一个用于数值计算和数据可视化的交互式程序。您可以通过在命令窗口的MATLAB提示符 ‘>>’ 处键入命令来输入命令。 在本节中&#xff0c;我们将提供常用的通用MATLAB命令列表。 用于管理会话的命令 MATLAB提供了用于管理会话的各种命令。下表提供了所有此类命令…

Golang基础3-函数、nil相关

函数 需要声明原型支持不定参数 func sum(numbers ...int)int支持返回多值支持递归支持命名返回参数 // 命名返回参数 func add(a, b int) (sum int) {sum a breturn // 这里不需要显式地写出返回值&#xff0c;因为已经在函数签名中声明了命名返回参数 } 支持匿名函数、闭包…