【大模型系列篇】大语言模型架构分类和对比

news2024/11/16 9:42:46

在预训练语言模型时代,自然语言处理领域广泛采用了预训练(Pre-training) + 微调(SFT)的范式, 并诞生了以 BERT 为代表的编码器(Encoder-only)架构、以 GPT 为代表的解码器(Decoder-only)架构和以 T5 为代表的编码器-解码器(Encoder-decoder)架构的大规模预训练语言模型。随着 GPT 系列模型的成功发展,当前自然语言处理领域 走向了生成式大语言模型的道路,解码器架构已经成为了目前大语言模型的主流架构。进一步,解码器架构还可以细分为两个变种架构,包括因果解码器(Causal Decoder)架构和前缀解码器(Prefix Decoder)架构。值得注意的是,学术界所提到解码器架构时,通常指的都是因果解码器架构。

编码器-解码器架构

编码器-解码器架构是自然语言处理领域里一种经典的模型结构,广泛应用于如机器翻译等多项任务。原始的Transformer 模型也使用了这一架构,组合了两个分别担任编码器和解码器的 Transformer 模块。具体细节可以阅读原论文解读篇《论文解读:Transformer - Attention Is All You Need》。此架构在编码器端采用了双向自注意力机制对输入信息进行编码处理,而在解码器端则使用了交叉注意力与掩码自注意力机制,进而通过自回归的方式对输出进行生成。

编码器-解码器架构是输入双向注意力,输出单向注意力。在输入端(编码器)双向语言模型允许所有词元相互关注。能够编码来自两个方向的上下文信息。自注意力掩码矩阵为全零矩阵,因此每个词元都可以关注输入序列中的所有位置,对问题的编码理解更充分。在众多自然语言理解与生成任务中展现出了优异的性能,缺点是在长文本生成任务上效果较差,训练效率低。代表模型:T5、Flan-T5、BART。

因果解码器架构

当前,绝大部分主流的大语言模型采用了因果解码器架构。因果解码器采用了 Transformer 中的解码器模块,同时做出了几点重要改动。首先,因果解码器没有显式地区分输入和输出部分。该架构采用了单向的掩码注意力机制,使得每个输入的词元只关注序列中位于它前面的词元和它本身,进而自回归地预测输出的词元。此外,由于不含有编码器部分,因果解码器删除了关注编码器表示的交叉注意力模块。经过自注意力模块后的词元表示将直接送入到前馈神经网络中。在因果解码器架构中,最具有代表性的模型就是 OpenAI 推出的 GPT系列。其中,GPT-3 将模型参数拓展到了100B 级别,并展现出了强大的零样本和少样本学习能力。

因果解码器架构是从左到右的单向注意力。通过对自注意力掩码矩阵使用一个三角矩阵来实现这一点,其中自注意力掩码的上三角部分设为−∞,其余元素设为0。自回归语言模型,预训练和下游应用是完全一致的,文本生成任务效果好。训练效率高、零样本泛化能力更强、有不错的涌现能力。伴随着 GPT-3 的成功,因果解码器被广泛采用于各种大语言模 型中,包括 BLOOM、LLaMA 、 Mistral 、Qwen等。

前缀解码器架构

前缀解码器架构也被称为非因果解码器架构,对于因果解码器的掩码机制进行了修改。该架构和因果解码器一样,仅仅使用了解码器模块。与之不同的是,该架构参考了编码器-解码器的设计,对于输入和输出部分进行了特定处理。前缀解码器对于输入(前缀)部分使用双向注意力进行编码,而对于输出部分利用单向的掩码注意力利用该词元本身和前面的词元进行自回归地预测。与编码器-解码器不同的是,前缀解码器在编码和解码过程中是共享参数的,并没有划分为独立的解码器和编码器。对于前缀解码器,也可以由现有的因果解码器继续预训练转换而来,进而加速该模型的训练。

前缀解码器架构是输入双向注意力,输出单向注意力。通过修改了因果解码器的屏蔽机制,使其能够对前缀词元进行双向关注,并仅对生成的词元进行单向关注。当前,基于前缀解码器架构的代表性大语言模型包括 GLM130B 和 U-PaLM。

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

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

相关文章

关于springboot对接chatglm3-6b大模型的尝试

之前我们通过阿里提供的cloud ai对接了通义千问。cloud ai对接通义千问 那么接下来我们尝试一些别的模型看一下,其实这个文章主要是表达一种对接方式,其他的都大同小异。都可以依此方法进行处理。 一、明确模型参数 本次我们对接的理论支持来自于阿里云…

模型 DFEAS营销法

系列文章 分享 模型,了解更多👉 模型_思维模型目录。需求触发,精准营销转化。 1 DFEAS营销法的应用 1.1 个性化健身应用的市场拓展策略 随着健康意识的增强,个性化健身应用市场迅速发展。一款名为“FitMyLife”的个性化健身应用…

FancyVideo

一、模型介绍 合成运动丰富且时间一致的视频仍然是人工智能领域的一项挑战,尤其是在处理较长的持续时间时。现有的文本到视频 (T2V) 模型通常采用空间交叉注意进行文本控制,等效地指导不同帧的生成而无需特定于帧的文本指导。因此,模型理解提…

经典算法之链表篇(二)

目录 一:重排链表(LeetCode.143) 二:删除链表的节点(LCR 136. 删除链表的节点) 三:K个一组反转链表(LeetCode.25) 有关经典算法链表的第一篇内容,可以查看我…

在线考试系统源码功能分析

在线考试系统源码的功能分析涵盖了多个关键方面,以确保系统能够满足教育机构和个人的需求。以下是一些常见的功能分析: 权限控制:系统通常支持多个角色,如教师、管理员和学生,并使用JWT等技术进行用户身份的合法性校验…

Leetcode JAVA刷刷站(101)对称二叉树

一、题目概述 二、思路方向 在Java中,要检查一个二叉树是否是轴对称的(也称为镜像对称的),你可以通过递归地比较树的左子树和右子树是否镜像对称来实现。轴对称的二叉树意味着树的左子树和右子树关于根节点对称,即左子…

微信小程序:手机联调同一个网段无法找到本地接口

我们在开发微信小程序的时候,一般会启动本地服务器进行API连调,不过模拟器上面往往一些问题及细节发现不了,需要真机调试,结果调试的时候发现,不能访问到 localhost或者本机IP,也就访问不到本地接口&#x…

【HarmonyOS NEXT开发】鸿蒙开发环境准备,ArkTS基础语法入门

文章目录 鸿蒙开发环境准备,ArkTS基础语法入门大纲简介DevEco Studio简介运行环境要求 安装与配置开发工具下载Harmony OS 和 OpenHarmony 的区别Previewer汉化插件的配置 ArkTS基础快速入门1. 解释说明2. 变量与常量3. 变量命名规则4. 数组5. 函数定义函数调用函数…

Mini型LoRa DTU远距离无线传输“小体积大作为”

Mini型LoRa DTU(数据传输单元)CL61M凭借其小巧的体积、低功耗、远距离通信和高可靠性等特点,在远距离无线传输领域展现出了巨大的应用潜力。使RS485/232串口终端设备能够轻松实现十公里的远距离无线通信,适用于多种复杂环境&#…

(三)Kafka离线安装 - ZooKeeper开机自启

手动启动方式 一般通过指令手动来启动zookeeper的方法是,先进入到zookeeper的安装目录下的bin目录,然后执行启动指令。 cd /usr/local/zookeeper/zookeeper-3.8.4/bin/zkServer.sh start 停止指令 zkServer.sh stop 查看状态 zkServer.sh status 上…

如何在知行之桥上通过业务单号查找原始报文?

在知行之桥中接收或发送的数据通常是EDI原始报文,知行之桥会对EDI原始报文进行格式转换,以方便用户后端系统的处理。因此,一般情况下,用户看到的都是转换后的数据结构,例如Json、XML或Excel等,无需直接查看…

window上部署kafka3.6.1,并配置sasl认证

1 安装kafka 第一步安装kafka,并能成功启动,可参考文章Windows下安装Kafka3-CSDN博客 2 修改kafka的配置文件 server.properties是kafka的主要配置文件,里面有很多参数可以调整。 主要修改如下 listenersSASL_PLAINTEXT://127.0.0.1:9092 sasl.enable…

基于tkinter实现学生管理系统(四)

学生信息管理系统-修改学生 代码实现 在上一节中的class StudentManagerApp中添加如下方法: # 修改学生信息def modify_student(self):selection self.tree.selection()if not selection:messagebox.showwarning("警告", "请选择要修改的学员"…

04:创建PADS Logic软件逻辑库

1. 打开自带的库文件 2.保留common库,移除其他库文件 3.新建库 5点击封装工具栏 6选择2D线 7添加端点 8点击保存 9打开查看

SQLi-LABS靶场46-50通过攻略

less-46 1.判断注入点 ?sort1 页面出现报错 2.判断闭合方式 ?sort1 -- 3.查询数据库 因为页面有报错 所以使用报错注入 ?sort1 and updatexml(1,concat(1,database()),1)-- 4.查询数据库的所有表 ?sort1 and updatexml(1,concat(1,(select group_concat(table_name)…

【功能自动化】使用HTMLTestRunner生成测试报告

配置环境: 1.部署webtours网站 2.user.txt 3.HTMLTestRunner.py """ A TestRunner for use with the Python unit testing framework. It generates a HTML report to show the result at a glance.The simplest way to use this is to invoke it…

【Go高性能】测试(单元测试、基准测试)

Go测试 一、分类1. 单元测试2. 基准测试 二、基准测试1. 介绍2. 基准测试基本原则3. 使用testing包构建基准测试3.1 执行基准测试3.2 基准测试工作原理3.3 改进基准测试的准确性3.3.1 -benchtime3.3.2 -count3.3.3 -cpu 4. 使用benchstat工具比较基准测试(可跳过)4.…

Leetcode 第 408 场周赛题解

Leetcode 第 408 场周赛题解 Leetcode 第 408 场周赛题解题目1:3232. 判断是否可以赢得数字游戏思路代码复杂度分析 题目2:3233. 统计不是特殊数字的数字数量思路代码复杂度分析 题目3:3234. 统计 1 显著的字符串的数量思路代码复杂度分析 题…

Pycharm can‘t open file ‘D:\\Program‘: [Errno 2] No such file or directory

问题描述 Pycharm 使用Python 3.11.9 版本调试代码报错: 解决方案 1、WindowsR,调起CMD(PowerShell不行),执行以下指令: mklink /J "D:\PyCharm" "D:\Program Files\JetBrains\PyCharm 2…