chatglm系列知识

news2024/9/20 9:27:54

一、目录

  1. chatglm 是什么语言模型与transformer decoder 的区别
  2. 解释prefix LM与Cause LM
  3. chatglm(prefix LM)与decoder-only LM 核心区别
  4. glm 架构
  5. chatglm 预训练方式
  6. chatglm 微调
  7. chatglm与chatglm2、chatglm3的区别
  8. chatglm 激活函数采用gelu, 为什么chatglm2 采用swish 激活函数?
  9. prefixLm 与decoder-only LM的优缺点?
    10 glm4 与chatglm3 的区别?

二、实现

  1. chatglm 是什么语言模型与transformer decoder 的区别
    1. GLM 预训练方式:自回归的空白填充,并通过 GLM 通过添加 2D 位置编码和打乱片段顺序来改进空白填充预训练。
    2. chatglm 为前缀语言模型(自回归空白填充的通用语言模型(GLM),prefix-LM。结构为:Prefix-LM中前半段深黑色的连线为双向语言模型的标准架构,而在后半段通过
    mask attetnion矩阵使其成为递归生成的单向语言模型。
    3. 模型架构为prefix decoder-only 模型架构,在输入上采用双向的注意力机制,在输出上采用单向注意力机制。在这里插入图片描述
    注意力为前缀注意力, 如输入x1 -x5, 第一时刻输出y1时,实际输入信息为x1-x3,第二第三时刻输出y2,y3 ,实际输入信息为x1-x3。第四时刻输出y4时,输入信息为x1-x4。在这里插入图片描述
  2. decoder-only 架构,也称Cause架构。
    在这里插入图片描述
    该类模型全程都是单向语言信息传输,其做法也是将attention后向信息部分mask掉在这里插入图片描述

2 解释prefix LM与Cause LM
prefix LM,前缀语言模型,在输入序列的开头添加一个可学习的任务相关的前缀,然后使用该前缀和输入序列一起生成输出。用于一道模型生成适应特定任务的输出。
causal LM,因果语言模型,也成为自回归语言模型,根据之前生成的token预测下一个token,在生成文本时,模型只能根据已经生成的部分生成后续部分,不能访问未来的信息。
3. chatglm(prefix LM)与decoder-only LM 核心区别
核心区别:多头注意力mask 不同。 prefix LM 有前缀。 cause LM 没有前缀。

  1. glm 架构在这里插入图片描述
    GLM使用Transformer,并对其架构进行了一些修改:
    (1)重新安排了层归一化和残差连接的顺序 (将Post-LN改成Pre-LN),这对于大规模语言模型避免数值误差至关重要;
    (2)使用单个线性层进行输出token预测;
    (3)用GeLUs替换ReLU激活函数。

  2. chatglm 预训练方式
    GLM(General Language Model)提出了一种新的训练架构,旨在吸收自回归和自编码两种方法的优势。主要思想是用生成式预测的方式来完形填空。在这里插入图片描述
    如图3所示,前面掩码,后面预测。(自回归填充)
    输入文本构成: 前半部分:有mask的文本,后半部分:被mask的词的真正预测。
    长文本生成具体包含以下两个目标:
    sentence-level (句子级):从文档中随机掩码若干文本片段,每个文本片段必须为完整的句子,被掩码的词数量为整个文档长度的15%。这一目标是能针对seq2seq任务,其预测往往是完整的整个句子或者段落。
    document-level (文档级):采样一个长度从原始文本长度的50%到100%的均匀分布中采样的片段。这预训练目标针对的是无条件的长文本生成。

  3. chatglm 微调
    在这里插入图片描述
    对于文本生成任务,给定的上下文构成了输入的 Part A,末尾附加了一个 mask 符号。模型自回归地生成 Part B 的文本。可以直接应用预训练的 GLM 进行无条件的生成,或者在下游的条件生成任务上对其进行微调。

  4. chatglm与chatglm2、chatglm3的区别

    1. chatglm 与chatglm2、chatglm3不同,chatglm2与chatglm3 架构相同。
      在 chatglm版本中,attention mask 分为两部分:Part A 和 Part B。Part A 部分是双向 Attention,Part B 部分是 Causal Attention。但在chatglm2 版本中,我们全部换成了 Causal Attention,不再区分是 Part A 还是 Part B,完全变成了 decoder-only 的架构。
    2. chatglm2改进点:1. 词表大小从15万528 缩小为6万5024 。
    3. 位置编码从每个模块编码升级为全局一份。
    4. 标准化有LayerNorm 改为RMSNorm。 采用FlashAttention, 长度2k -->32k,对话支持8k 数据。
    5. chatglm2 效果比chatglm 评分高,chatglm3 反而降低一些。
      chatglm–>chatglm2: 改进点:
      1. 训练数据: 1T -->1.4T
      词表缩小:150528–>65024
      2. 模型算子改进:
      更强大的性能:基于 ChatGLM 初代模型的开发经验,我们全面升级了 ChatGLM2-6B 的基座模型(Prefix-LM->Decoder-Only)。
      更长的上下文:基于 FlashAttention 技术,我们将基座模型的上下文长度(Context Length)由 ChatGLM-6B 的 2K 扩展到了 32K,并在对话阶段使用 8K 的上下文长度训练,允许更多轮次的对话。
      更高效的推理:基于 Multi-Query Attention 技术,ChatGLM2-6B 有更高效的推理速度和更低的显存占用:在官方的模型实现下,推理速度相比初代提升了 42%,INT4 量化下,6G 显存支持的对话长度由 1K 提升到了 8K。
      layerNorm—>RMSNorm
      chatglm2–>chatglm3:改进点:
      全新设计的 Prompt 格式
      一些工具的开发。
      训练数据更丰富。
  5. chatglm 激活函数采用gelu, 为什么chatglm2 采用swish 激活函数?
    使用Swish作为GLU块的激活函数可以增强模型的非线性能力,并在某些情况下提供更好的性能和更快的收敛速度。

  6. prefixLm 与decoder-only LM的优缺点?
    prefixLM 是Encoder-Decoder模型的一个变型,在标准的encoder-decoder 中,encoder和decoder 各自使用一个独立的transformer。
    而在PrefixLM中,Encoder和Decoder则共享了同一个Transformer结构,在Transformer内部通过Attention Mask机制来实现 。如图在这里插入图片描述
    decoder -only 采用自回归模式,就是根据历史的token来预测下一个token,也是在Attention Mask这里做的手脚。 在这里插入图片描述
    在多轮对话中,PrefixLM 会带来数据膨胀问题,影响模型训练效率。
    在处理多轮对话的过程中,设有3轮对话,Q1A1,Q2A2,Q3A3,PrefixLM需要构建三条样本:
    Q1->A1
    Q1A1Q2->A2
    Q1A1Q2A2Q3->A3
    而这种数据构建方式带来了严重的数据膨胀问题,影响模型训练的效率。
    Decoder-Only模型则可以利用Causal Mask的特性(每一个Token可以看到前面所有Token的真实输入),在一条样本中实现多轮对话:
    样本构建:Q1 A1 Q2 A2 Q3 A3
    Loss计算:只需要计算 A1 A2 和 A3 部分

  7. glm4 与chatglm3 的区别?
    待续

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

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

相关文章

融资融券账户与普通账户有何区别?一文读懂为什么要开通两融账户

01 融资融券账户与普通账户的区别 1、开通条件不同: ①普通账户:开户的门槛低,一般年满18岁以上就能开通。(70岁以上需要临柜开户)。 ②融资融券:融资融券的准入门槛相对较高,需要满足以下几…

SQLite3的使用

14_SQLite3 SQLite3是一个嵌入式数据库系统,它的数据库就是一个文件。SQLite3不需要一个单独的服务器进程或操作系统,不需要配置,这意味着不需要安装或管理,所有的维护都来自于SQLite3软件本身。 安装步骤 在Linux上安装SQLite…

python桌面应用

py文件 import osimport wx import wx.html2class MyFrame(wx.Frame):def __init__(self, parent):wx.Frame.__init__(self, parent, title"启动啦", size(1000, 700))# 创建一个Web视图组件self.browser wx.html2.WebView.New(self)# 加载本地HTML文件# self.brow…

WebFlux 和 Spring Security 会碰出哪些火花?

项目创建成功后,我们添加一个接口,用来获取登录用户信息,如下: RestController public class UserController { GetMapping(“/user”) public Mono getCurrentUser(Mono principal) { return principal; } } 注意我们的返…

【Leetcode每日一题】 01背包 - DP41 【模板】01背包(难度⭐⭐)(80)

1. 题目解析 题目链接:DP41 【模板】01背包 这个问题的理解其实相当简单,只需看一下示例,基本就能明白其含义了。 2.算法原理 第一问:不超过总体积的背包问题 1. 状态表示 dp[i][j] 表示:从前 i 个物品中挑选&…

android adb常用命令集

1、系统调试 #adb shell:进入设备的 shell 命令行界面,可以在此执行各种 Linux 命令和特定的 Android 命令。 #adb shell dumpsys:提供关于系统服务和其状态的详细信息。 #adb logcat:实时查看设备的日志信息。可以使用过滤条件来…

Arduino称重传感器和 HX711 放大器(数字秤)

Arduino称重传感器和 HX711 放大器(数字秤) Arduino with Load Cell and HX711 Amplifier (Digital Scale) In this guide, you’ll learn how to create a digital scale with the Arduino using a load cell and the HX711 amplifier. First, you’l…

二叉树-左叶子之和(easy)

目录 一、问题描述 二、解题思路 三、代码实现 四、刷题链接 一、问题描述 二、解题思路 此题属于树遍历的简单题,用递归深度遍历的方式,当遇到左叶子结点(在递归函数中加上一个判断当前结点是左结点还是右结点的标记位),此时加上当前结点…

ONLYOFFICE 桌面编辑器 8.1:全新升级,助您轻松高效处理办公文档

ONLYOFFICE 桌面编辑器 一、前言二、轻松编辑器 PDF 文件三、用幻灯片版式快速修改幻灯片四、无缝切换文档编辑、审阅和查看模式五、改进从右至左语言的支持 & 新的本地化选项六、版本 8.1:其他新功能七、ONLYOFFICE 官网:https://www.onlyoffice.co…

OnlyOffice8.1新功能测评

一、导语 时隔四个月,OnlyOffice推出了8.1版本。 四个月过去,笔者的项目也接近尾声,在项目过程中还把OnlyOffice插件推荐给了项目组,希望官方多出好用功能,造福我们广大项目O(∩_∩)O 回归正题,与前几个…

【数据结构与算法】之(数据结构绪论篇)(一)溢彩色

总而言之:《数据结构》是介于数学、计算机硬件和计算机软件三者之间的一门核心课程 1-1.抽象数据类型: 一个数学模型及定义在该模型上的一组操作;抽象数据类型体现了程序设计中问题分解,抽象和信息隐藏的特性。 抽象&#xff1a…

最新《pvz植物大战僵尸杂交版》整合安装包,全面支持Android、ios、Windows,附教程!

今天,阿星要聊聊最近全网大火的一款老游戏——《植物大战僵尸》杂交版。 虽然它不是什么3A大作,但在阿星的心里,它永远是那个让人回味无穷的经典。记得十年前,阿星和大多数玩家一样,玩的都是盗版。那时候的《植物大战…

【人机交互 复习】第1章 人机交互概述

人机交互的知识点碎,而且都是文字,过一遍脑子里什么都留不下,但是背时间已经来不及了,最好还是找题要题感吧,加深印象才是做对文科的关键 一、概念 1.人机交互(Human-Computer Interaction,HCI)&#xff1…

路由器ARP和ARP-proxy(华为)

#交换设备 路由器ARP和ARP-proxy(华为) 当一个广播域中的主机想要访问另外一个广播域的主机时,会广播ARP报文,询问目标IP地址所对应的MAC地址,默认情况下,arp记录是设备自动生成的,但是这样会容易受到ARP欺骗攻击&am…

系统架构设计师 - 数据库系统(2)

数据库系统 数据库系统规范化理论 ★ ★ ★ ★ ★函数依赖求候选键Armstrong公理范式判断第一范式 1NF第二范式 2NF第三范式 3NFBC 范式 BCNF 模式分解保持函数依赖分解无损分解 并发控制 ★事务的 ACID 特性并发存在的问题并发解决方案 - 封锁协议 数据库的安全性 ★安全性的分…

C++多线程异步日志实现

使用C11标准&#xff0c;构建了一个方便使用的、轻量化的日志系统。封装线程安全的lockQueue&#xff0c;实现对每条日志添加信息、push到lockQueue中的LogTmp类&#xff0c;实现一个多线程异步的日志系统Logger。 lockqueue.h #pragma once #include <queue> #include…

pdf转图片转换器,pdf转图片的工具

在日常的工作和学习中&#xff0c;我们经常会遇到需要将PDF文件转换为图片格式的情况。那么&#xff0c;如何才能将PDF格式转换为图片格式呢&#xff1f;今天&#xff0c;我将为大家介绍几种简单易用的方法&#xff0c;帮助大家轻松实现PDF转图片。 打开“轻云pdf处理官网网站”…

Linux 动态监控系统

top与ps命令很相似。它们都用来显示正在执行的进程。Top与ps最大的不同之处&#xff0c;在于top在执行一段时间可以更新正在运行的的进程。 一、基本指令 top top -d&#xff1a; 秒数 :每隔设定值秒数更新&#xff0c;未设置下默认为3秒 top -i:使top不显示任何闲置或者僵死进…

行人重识别Reid(可实现人员换装情况下的人员检索)

本项目的行人重识别是出自论文"Beyond Scalar Neuron: Adopting Vector-Neuron Capsules for Long-Term Person Re-Identification",该文章所涉及到的相关理论在我另外一篇文章中有讲解&#xff1a;Reid系列论文学习——换装Reid&#xff0c;不过经过本人测试&#x…