基于 Encoder-Decoder 架构的大语言模型

ops/2024/11/12 13:17:33/

基于 Encoder-Decoder 架构的大语言模型

Encoder-Decoder 架构

为了弥补 Encoder-only 架构在文本生成任务上的短板,Encoder-Decoder 架构在其基础上引入了一个解码器(Decoder),并采用交叉注意力机制来实现编码器与解码器之间的有效交互。

  • 工作流程
    在这里插入图片描述
    其中分词器和输出文本只在训练阶段存在,而实现“自回归”的红色虚线只在推理阶段存在。

具体来说,解码器包含了输出编码、特征解码以及输出生成三个部分。

输出编码与编码器中的输入编码结构相同,包含分词、向量化以及添加位置编码三个过程,将原始输入文本转换化为带有位置信息的向量序列。

特征解码部分与特征编码部分在网络结构上也高度相似,包括掩码自注意力(MaskedSelf-Attention)模块,交叉注意力模块和全连接前馈模块。其中掩码自注意力模块确保模型只关注上文,不会“预见”未来的信息,从而可以在无“下文泄露”的条件下,进行“自回归”的训练和推理。而交叉注意力模块则负责处理从编码模块向解码模块传递相关信息。

输出生成部分则由一个线性层以及一个Softmax层组成,负责将特征解码后的向量转换为词表上的概率分布,并从这个分布中采样得到最合适的Token作为输出。
在这里插入图片描述
Encoder-Decoder 架构

上述的是一种典型的编码器-解码器(Encoder-Decoder)架构,这种架构广泛应用于序列到序列(Seq2Seq)的任务中,比如机器翻译、文本摘要、问答系统等。这种架构的核心思想是将输入序列编码成一个固定大小的上下文向量,然后解码器根据这个向量和部分输出序列来生成目标序列。

以下是描述的架构中各个组件的功能:

  1. 编码器(Encoder)

    • 由多个编码模块堆叠而成。
    • 每个编码模块包含:
      • 自注意力模块(Self-Attention Module):允许模型在编码时考虑输入序列中的所有位置,捕捉序列内部的依赖关系。
      • 全连接前馈模块(Feed-Forward Neural Network):对自注意力模块的输出进行进一步的处理,通常包含两个线性变换和激活函数。
  2. 上下文向量(Context Vector)

    • 编码器的输出,包含了输入序列的丰富语义信息,用于后续的解码过程。
  3. 解码器(Decoder)

    • 同样由多个解码模块堆叠而成。
    • 每个解码模块包含:
      • 带掩码的自注意力模块(Masked Self-Attention Module):通过掩码机制防止未来信息的“泄露”,确保解码过程的自回归特性。这意味着在生成当前词时,模型只能看到已经生成的词,而不能看到未来的词。
      • 交叉注意力模块(Cross-Attention Module):允许解码器关注编码器的输出,实现编码器与解码器之间的信息交互,这对于生成与输入序列高度相关的输出至关重要。
      • 全连接前馈模块(Feed-Forward Neural Network):对交叉注意力模块的输出进行进一步的处理。

T5 语言模型

1. T5 模型结构

T5 模型的核心思想是将多种 NLP 任务统一到一个文本转文本的生成式框架中。

通过不同的输入前缀,T5 能够指示模型执行不同的任务并生成相应的输出。这种方法类似于早期的提示(Prompt)技术,通过构造合理的输入前缀,T5 模型能够针对特定任务进行优化,而无需对模型架构进行根本性的改变。这种灵活性显著提高了模型的实用性,使其能够适应各类新的 NLP 任务。

在模型架构方面,T5 采用了与原始 Transformer 相同的编码器和解码器结构。每个编码器和解码器由多个编码模块和解码模块堆叠而成。T5 提供了多个版本,包括 T5-Small、T5-Base、T5-Large、T5-3B 和 T5-11B,参数数量从约 6000 万到 110 亿不等,适应不同的计算需求和应用场景。

2. T5 预训练方式

为了获取高质量的预训练数据集,Google Research 团队从大规模网页数据集 Common Crawl 中提取了大量网页数据,经过清理和过滤,最终生成了 C4 数据集(Colossal Clean Crawled Corpus),其规模约为 750GB。T5 提出的预训练任务名为 Span Corruption,模型需要对原始输入中选择的 15% 的连续 Token 进行预测,这些被掩码的片段可能包括短语或子句,要求模型理解更深层次的句子结构和上下文之间的复杂依赖关系。这一设计显著提升了 T5 在文本摘要、问答系统和文本补全等生成任务中的表现。

3. T5 下游任务

基于预训练阶段学到的知识,T5 模型能够在零样本(Zero-Shot)情况下,利用 Prompt 工程技术直接适配多种下游任务。同时,T5 也可以通过微调(Fine-Tuning)来适配特定任务,尽管微调需要更多的计算资源和训练时间,通常只在对精度要求较高的场景中应用。

BART(Bidirectional and Auto-Regressive Transformers)模型

BART模型结构
  • 架构:BART遵循原始的Transformer架构,包含编码器和解码器,每个部分由多个编码模块和解码模块堆叠而成。
  • 版本:BART有两个版本,BART-Base和BART-Large。
    • BART-Base:包含6个编码模块和6个解码模块,隐藏层维度为768,自注意力头的数量为12,总参数数量约为1.4亿。
    • BART-Large:包含12个编码模块和12个解码模块,隐藏层维度为1024,自注意力头的数量为16,总参数数量约为4亿。
BART预训练方式
  • 数据来源:BART使用了与RoBERTa相同的语料库,包括BookCorpus、英语维基百科、CC-News、OpenWebText和Stories等,总数据量达到约160GB。
  • 预训练任务:BART通过破坏文本的方式进行预训练,包括Token Masking、Token Deletion、Text Infilling、Sentence Permutation和Document Rotation等任务,以训练模型恢复原始文本的能力。
预训练任务的具体形式
  1. Token Masking:随机替换部分Token为[MASK],训练模型推断被删除的Token。
  2. Token Deletion:随机删除部分Token,训练模型推断被删除Token的位置和内容。
  3. Text Infilling:选择连续的Token段替换为[MASK],训练模型推断span及其长度。
  4. Sentence Permutation:打乱句子顺序,训练模型推理前后句关系。
  5. Document Rotation:随机选取Token作为新起点,训练模型找到合理起始点。

Encoder-Decoder 架构代表模型参数和语料大小表

模型发布时间参数量(亿)语料规模
T52019.100.6-110750GB
mT52020.103-1309.7TB
T02021.1030-110约 400GB
BART2019.101.4-4约 20GB
mBART2020.060.4-6.1约 1TB

http://www.ppmy.cn/ops/132533.html

相关文章

aws申请ssl证书的方法【该证书仅供aws】

这里先声明,过程是对的,最终没有达到目的。 原本想着申请ssl证书替代,结果发现aws证书只能给自己的服务器用 但是整套申请证书以及下载,以及使用aws控制台的过程可以参考借鉴。 起因: 腾讯云的ssl证书越来越没法用了…

SpringMVC总结 我的学习笔记

SpringMVC总结 我的学习笔记 一、SpringMVC简介1.MVC2.SpringMVC概述3. SpringMVC中的核心组件4.SpringMVC核心架构流程 二、SpringMVC框架实例具体实现使用注解实现 四、数据处理及跳转1.结果跳转方式2.处理器方法的参数与返回值处理提交数据数据显示到前端 五、RestFul风格1.…

ORACLE 删除archivelog日志

监控信息 df -h 查看磁盘空间 /oracle 500G 已用 450G,剩余 50G 具体分析 /oracle/oraarch 421G 占绝对大头,看文件信息 ,从2023年以来一直没有做过日志删除 参考ORACLE 正确删除归档日志的方法_oracle 清理归档日志-CSDN博客 0. 切换…

Ingress nginx 公开TCP服务

文章目录 背景搞起拓展( PROXY Protocol )参考 背景 公司业务繁多, HTTP、GRPC、TCP多种协议服务并存,Kubernetes流量入口复杂,所以萌生了通过LoadBalancer Ingress-nginx 的方式完全的结果入口流量,当然在高并发的场景下可以对…

Chromium 中chrome.system.memory扩展接口定义c++

一、chrome.system.memory chrome.system.memory API。 权限 system.memory 类型 MemoryInfo 属性 availableCapacity number 可用容量的量(以字节为单位)。 容量 number 物理内存容量的总容量(以字节为单位)。 方法 ge…

红黑视觉化

有图有真相 不堪回首图最美公式 log ⁡ 2 n \log_{2}{n} log2​n 2 n 2^n 2nNIL节点(空叶子节点)为黑色 准备工作不用担心本子不够画了说明只能到九层了从任意结点画 观止 不堪回首 第一篇前就想画了,没有底气只能说打印。曾经手画过&#x…

github.com port 22

使用GitHub的443端口 22端口可能被防火墙屏蔽了,可以尝试连接GitHub的443端口。 查看ssh文件夹内是否存在config文件,没有的话创建一个 config文件内容为 Host github.comHostname ssh.github.comPort 443 保存后重新运行git操作即可

逐梦代码深林:Linux编译之舞,链接之诗——自举、动静态库的浪漫旅程

文章目录 问题引入,为什么要进行编译->汇编?一、详细解释编译器自举1. 从最初的二进制编程到汇编2. 第一代汇编编译器的诞生3. 编译器自举的出现:从汇编到更高级的编译器4. 自举的延续:从汇编到高级编程语言5. 为什么要进行编译器自举&am…