chatglm系列知识

一、目录

  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.rhkb.cn/news/359509.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

办理北京公司注册地址异常变更要求和流程

在北京注册公司时选择注册地址是非常重要的一环,注册地址不仅体现在营业执照上,在网上也有公示信息,一般选用的是商用地址和商住两用地址,在公司经营过程中,因为经营需要变更注册地址,也要依法变更&#xf…

详解Spring AOP(一)

目录 1. AOP概述 2.Spring AOP快速入门 2.1引入AOP依赖 2.2编写AOP程序 3.Spring AOP核心概念 3.1切点(PointCut) 3.2连接点(Join Point) 3.3通知(Advice) 3.4切面(Aspect) …

时间?空间?复杂度??

1.什么是时间复杂度和空间复杂度? 1.1算法效率 算法效率分析分为两种:第一种是时间效率,第二种是空间效率。时间效率被称为时间复杂度,而空间效率被称为空间复杂度。 时间复杂度主要衡量的是一个算法的运行速度,而空…

CentOS 8.5 - 配置ssh的免密登录

文章目录 生成ssh密钥公钥内容放入服务器 生成ssh密钥 在本地主机安装 ssh工具,并生成公钥、私钥。 # 命令行输入 ssh-keygen -r rsa# 会在当前用户的家目录下生成一个.ssh目录公钥内容放入服务器 将上一步生成的id_rsa.pub公钥的内容复制到远程服务器 # 编辑文…

Day17--654.最大二叉树+617.合并二叉树+700.二叉搜索树中的搜索+ 98.验证二叉搜索树

一、654.最大二叉树 题目链接:https://leetcode.cn/problems/maximum-binary-tree/ 文章讲解:https://programmercarl.com/0654.%E6%9C%80%E5%A4%A7%E4%BA%8C%E5%8F%89%E6%A0%91.html 视频讲解:https://www.bilibili.com/video/BV1MG411G7ox…

SpringMVC系列四: Rest-优雅的url请求风格

Rest请求 💞Rest基本介绍💞Rest风格的url-完成增删改查需求说明代码实现HiddenHttpMethodFilter机制注意事项和细节 💞课后作业 上一讲, 我们学习的是SpringMVC系列三: Postman(接口测试工具) 现在打开springmvc项目 💞Rest基本介…

Part 5.2 KMP

KMP 算法可以用来解决模式串匹配问题。 【模板】KMP 题目描述 给出两个字符串 s 1 s_1 s1​ 和 s 2 s_2 s2​,若 s 1 s_1 s1​ 的区间 [ l , r ] [l, r] [l,r] 子串与 s 2 s_2 s2​ 完全相同,则称 s 2 s_2 s2​ 在 s 1 s_1 s1​ 中出现了&…

「动态规划」如何求最长递增子序列的长度?

300. 最长递增子序列https://leetcode.cn/problems/longest-increasing-subsequence/description/ 给你一个整数数组nums,找到其中最长严格递增子序列的长度。子序列是由数组派生而来的序列,删除(或不删除)数组中的元素而不改变其…

使用Apache Flink实现实时数据同步与清洗:MySQL和Oracle到目标MySQL的ETL流程

使用Apache Flink实现实时数据同步与清洗:MySQL和Oracle到目标MySQL的ETL流程 实现数据同步的ETL(抽取、转换、加载)过程通常涉及从源系统(如数据库、消息队列或文件)中抽取数据,进行必要的转换&#xff0…

2024最新版Node.js下载安装及环境配置教程(非常详细)

一、进入官网地址下载安装包 官网:Node.js — Run JavaScript Everywhere 其他版本下载:Node.js — Download Node.js (nodejs.org) 选择对应你系统的Node.js版本 二、安装程序 (1)下载完成后,双击安装包&#xf…

Go的GUI Fyne开发环境搭建—Windows 11

安装go 到官网下载安装go安装包 https://go.dev/learn/ 通过如下命令检验安装是否成功,出现版本号则安装成功 go version安装国内go依赖包代理 go env -w GOPROXYhttps://goproxy.cn安装gcc编译器 直接用官网提供的安装建议第二条,到这个地址进行下载…

二刷算法训练营Day41 (Day40休息) | 动态规划(3/17)

目录 详细布置: 1. 背包问题理论基础 1.1 01背包 2. 46. 携带研究材料(第六期模拟笔试) 一维dp数组(滚动数组) 3. 416. 分割等和子集 详细布置: 1. 背包问题理论基础 但说实话,背包九讲…

C#开发-集合使用和技巧(六)特殊转换方法SelectMany的介绍和用法

C#开发-集合使用和技巧(六) 特殊转换方法SelectMany的介绍和用法 介绍使用示例Select与SelectMany对比特殊情况 介绍 SelectMany 方法在C#中用于将集合中的元素转换为其他类型的集合,并将这些集合扁平化为一个单一的序列。它是LINQ的一部分…

Unity URP下通过相机让部分Render不受后处理渲染

我们有时候不想某些对象受到后处理影响,找到了这样一个决绝办法,通过增加一个Overlay相机只照射这个模型来实现,下面看看如何实现。 第一步 首先我们拖一个测试场景,有如下一些元素 一个盒子,以后后处理&#xff0c…

Python武器库开发-武器库篇之ThinkPHP6 多语言本地文件包含漏洞(六十七)

Python武器库开发-武器库篇之ThinkPHP6 多语言本地文件包含漏洞(六十七) 漏洞环境搭建 这里我们使用Kali虚拟机安装docker并搭建vulhub靶场来进行ThinkPHP漏洞环境的安装,我们进入 ThinkPHP漏洞环境,可以 cd ThinkPHP&#xff0…

【Solr 学习笔记】Solr 源码启动教程

Solr 源码启动教程 本教程记录了如何通过 IDEA 启动并调试 Solr 源码,从 Solr9 开始 Solr 项目已由 ant 方式改成了 gradle 构建方式,本教程将以 Solr 9 为例进行演示,IDE 选择使用 IntelliJ IDEA。 Solr github 地址:https://gi…

【机器学习】机器学习重要方法——深度学习:理论、算法与实践

文章目录 引言第一章 深度学习的基本概念1.1 什么是深度学习1.2 深度学习的历史发展1.3 深度学习的关键组成部分 第二章 深度学习的核心算法2.1 反向传播算法2.2 卷积神经网络(CNN)2.3 循环神经网络(RNN) 第三章 深度学习的应用实…

AI交互及爬虫【数据分析】

各位大佬好 ,这里是阿川的博客,祝您变得更强 个人主页:在线OJ的阿川 大佬的支持和鼓励,将是我成长路上最大的动力 阿川水平有限,如有错误,欢迎大佬指正 Python 初阶 Python–语言基础与由来介绍 Python–…

区块链实验室(37) - 交叉编译百度xuperchain for arm64

纠结了很久,终于成功编译xuperchain for arm64。踩到1个坑,说明如下。 1、官方文档是这么说的:go语言版本推荐1.5-1.8 2、但是同一个页面,又是这么说的:不推荐使用1.11之前的版本。 3、问题来了:用什么版本…

2024年特种设备(门式起重机司机)考试真题题库。

181."ZZ"表示钢丝绳为( )。 A.右同向捻 B.左同向捻 C.右交互捻 D.左交互捻 答案:A 182.桥式起重机的金属结构主要由起重机桥架(又称大车桥架)、( )和操纵室(司机室)…