首页 > 其他分享 >聊聊GLM基座模型的理论知识

聊聊GLM基座模型的理论知识

时间:2023-12-16 11:23:26浏览次数:38  
标签:编码 片段 GLM 模型 理论知识 聊聊 掩码 输入

概述

大模型有两个流程:预训练和推理。

  1. 预训练是在某种神经网络模型架构上,导入大规模语料数据,通过一系列的神经网络隐藏层的矩阵计算、微分计算等,输出权重,学习率,模型参数等超参数信息。
  2. 推理是在预训练的成果上,应用超参数文件,基于预训练结果,根据用户的输入信息,推理预测其行为。

GLM模型原理的理解,就是预训练流程的梳理,如下流程所示:

input输入层会预处理输入数据,在预训练过程中,该输入数据,其实就是预先准备好的预料数据集,也就是常说的6B,130B大小的数据集。

掩码处理

GLM统一了自编码模型与自回归模型,主要是在该处理过程实现的。该过程也被成为自回归空格填充。该过程体现了自编码与自回归思想:
1、自编码思想:在输入文本中,随机删除连续的tokens,做成掩码[MASK]。
2、自回归思想:顺序重建连续tokens。在使用自回归方式预测缺失tokens时,模型既可以访问带掩码的文本,又可以访问之前已经被采样的spans。

输入可以被分成两部分:Part A是被损坏的文本,Part B由masked spans组成。
假设原始输入文本是,采样的两个文本片段是以及。那么mask后的文本序列是:,即Part A;即PartB。
再对Part B的片段进行shuffle。每个片段使用填充在开头作为输入,使用填充在末尾作为输出。如论文中的图所示:
image.png
掩码处理时,会随机选择输入序列中的某些词语进行掩码(mask)处理。掩码的目的是让模型学习预测那些被掩码的词语。让模型能够在预训练过程中更好地学习语言规律和上下文信息。
掩码处理的流程如下:

  1. 输入数据采样:首先,从输入文本中随机采样多个片段,这些片段包含了多个需要被预测的词(即[mask]标记)。
  2. 掩码替换:在这些采样片段中,用[mask]标记替换掉部分词语,形成一个被掩码的文本。这样,模型需要根据已给出的上下文信息来预测被掩码的词语。
  3. 自回归预测:GLM模型采用自回归的方式,从已给出的片段中预测被掩码的词语。这意味着在预测[mask]中原来的词的同时,模型可以参考之前片段的信息。
  4. 上下文信息利用:为了让模型能够更好地理解上下文信息,GLM模型将被掩码的片段的顺序打乱。这样,模型在预测时需要参考更广泛的上下文信息,从而提高其语言理解能力。
  5. 预训练任务:通过这种方式,GLM模型实现了自监督训练,让模型能够在不同的任务(如NLU、NLG和条件NLG)中表现更好。

从结构化来思考,剖析下这个过程所涉及到的一些开发知识点。

  1. 随机抽样:在掩码处理中,需要从输入数据中随机选择一部分数据进行掩码。遵循泊松分布,重复采样,直到原始tokens中有15%被mask。
  2. 掩码策略:在GLM模型中,采用了自回归空白填充(Autoregressive Blank Infilling)的自监督训练方式。这需要根据掩码策略来生成掩码,如根据预先设定的规则来选择掩码的长度和位置。这个过程涉及到组合数学和离散数学的知识。
  3. 掩码填充:在生成掩码后,需要对掩码进行填充。在GLM模型中,采用了特殊的填充方式,如span shuffling和2D positional encoding。这个过程涉及到线性代数和矩阵运算的知识。
  4. 损失函数:在掩码处理过程中,需要根据损失函数来计算掩码处理的效果。在GLM模型中,采用了交叉熵损失函数来衡量模型在掩码处理任务上的表现。这个过程涉及到优化理论和数值分析的知识。

位置编码

在基于Transformer网络架构的模型中,位置编码是必不可少的一个处理,其作用简单来说就是在没有显式顺序信息的情况下,为模型提供关于词的相对位置的信息,以便让模型理解输入序列中的序列信息以及上下文信息。
位置编码在GLM中,通过采用一种称为"旋转位置编码"(RoPE)的方法来处理的。RoPE是一种相对位置编码技术,它能够有效地捕捉输入序列中不同token之间的相对位置信息。相较于传统的绝对位置编码,RoPE具有更好的外推性和远程衰减特性,能够更好地处理长文本。
在GLM中,使用二维位置编码,第一个位置id用来标记Part A中的位置,第二个位置id用来表示跨度内部的相对位置。这两个位置id会通过embedding表被投影为两个向量,最终都会被加入到输入token的embedding表达中。如论文中的图所示:
image.png

自注意力计算

自注意力机制中的矩阵计算如图所示:
image.png

这里面的道道暂时还没有摸清,不过计算的逻辑还是基于Tranformer网络中的自注意力计算,只是这框出来的蓝黄绿,其表征有点道道。

其它

GLM在原始single Transformer的基础上进行了一些修改:
1)重组了LN和残差连接的顺序;
2)使用单个线性层对输出token进行预测;
3)激活函数从ReLU换成了GeLUS。
这些修改是比较常见的,简单了解下即可。

参考

清华ChatGLM底层原理详解
GLM(General Language Model)论文阅读笔记

标签:编码,片段,GLM,模型,理论知识,聊聊,掩码,输入
From: https://www.cnblogs.com/zhiyong-ITNote/p/17904607.html

相关文章

  • ChatGLM2-6B模型的微调
    概述GLM、ChatGLM的相关基础知识说明:GLM模型底层还是基于Transformer,因此其设计、优化都是围绕Transformer的各个组件的。从注意力层的掩码、位置编码等方面优化与设计。ChatGLM3/ChatGLM2的源码中,比如finetune、trainer等代码,其实是copy自HuggingFace,而且其使用流程与调用机......
  • 模型理论知识
    人工智能:机器学习、对环境的感知、实现动作机器学习学习:2.机器学习三要素:数据、算法、模型机器学习研究的是从数据中通过选取合适的算法,自动的归纳逻辑或规则,并根据这个归纳的结果(模型)与新数据来进行预测。3.深度学习是在机器学习的基础上实现的,得益于机器性能的提升。神经......
  • 从浏览器原理出发聊聊 Chrome 插件
    浏览器架构演进单进程浏览器时代单进程浏览器是指浏览器的所有功能模块都是运行在同一个进程里,这些模块包含了网络、插件、JavaScript运行环境、渲染引擎和页面等。在2007年之前,市面上浏览器都是单进程的。单进程浏览器的架构很多功能模块运行在一个进程里,是导致单进程浏......
  • 聊聊数据库连接池 Druid
    在SpringBoot项目中,数据库连接池已经成为标配,然而,我曾经遇到过不少连接池异常导致业务错误的事故。很多经验丰富的工程师也可能不小心在这方面出现问题。在这篇文章中,我们将探讨数据库连接池,深入解析其实现机制,以便更好地理解和规避潜在的风险。1为什么需要连接池假如没有......
  • 聊聊如何为python程序 debug
    开始调试之前摆正心态一、调理论的简单介绍1、调试理论“软件”的两层含义·人类需求在信息世界的投影    理解错需求→bug·计算过程的精确(数学)描述     实现错误→bug2、调试困难的根本原因因为bug的触发经历了漫长的过程·需求→设计→代码(状态机)→F......
  • ChatGLM 模型部署
    ChatGLM模型部署模型地址:huggingface:https://huggingface.co/THUDM/chatglm3-6bmodelscope:https://modelscope.cn/models/ZhipuAI/chatglm3-6b/summary搭建环境#下载代码$gitclonehttps://github.com/THUDM/ChatGLM3$cdChatGLM3#创建环境$condacreate-npy......
  • 聊聊大数据框架的数据更新策略: COW,MOR,MOW
    大数据框架下,常用的数据更新策略有三种:COW:copy-on-write,写时复制;MOR:merge-on-read,读时合并;MOW:merge-on-write,写时合并;hudi等数据湖仓框架,常用的是前两种实现数据更新。而Doris则主要用后两种更新数据。COW在数据写入的时候,复制一份原来的拷贝,在其基础上添加......
  • 聊聊神经网络模型流程与卷积神经网络的实现
    神经网络模型流程神经网络模型的搭建流程,整理下自己的思路,这个过程不会细分出来,而是主流程。在这里我主要是把整个流程分为两个主流程,即预训练与推理。预训练过程主要是生成超参数文件与搭设神经网络结构;而推理过程就是在应用超参数与神经网络。卷积神经网络的实现在聊聊卷......
  • 聊聊部署在不同K8S集群上的服务如何利用nginx-ingress进行灰度发布
    前言之前有篇文章聊聊如何利用springcloudgateway实现简易版灰度路由,里面的主人公又有一个需求,他们有个服务是没经过网关的,而是直接通过nginx-ingress暴露出去,现在这个服务也想做灰度,他知道在同个集群如何利用nginx-ingress进行灰度发布,但是现在这个服务是部署在新的集群,他查了......
  • 聊聊 神经网络模型 预训练生成超参数实现
    概述在上一篇博客中,已经阐述了预训练过程中,神经网络中超参数的计算逻辑,本文,从程序实现的角度,将数学计算转换为程序代码,最终生成超参数文件;并将替换聊聊神经网络模型示例程序——数字的推理预测中已训练好的超参数文件,推理预测数字,最终比对下两者的精确度。神经网络层实现首......