当前位置: 首页 > news >正文

10.GLM

智谱AI GLM 大模型家族

最强基座模型 GLM-130B

请添加图片描述

GLM (General Language Model Pretraining with Autoregressive Blank Infilling)

基于自回归空白填充的通用语言模型(GLM)。GLM通过增加二维位置编码并允许以任意顺序预测跨度来改进空白填充预训练,这在NLU任务中实现了超越BERT和T5的性能提升。与此同时,GLM可以通过变化空白的数量和长度来预训练不同类型的任务。在跨NLU、有条件和无条件生成的广泛任务中,GLM在相同模型大小和数据条件下优于BERT、T5和GPT。

请添加图片描述

GLM 预训练原理解读 – 1

(a) 原始文本为[x1, x2, x3, x4, x5, x6]。随机采样了两个跨度(spans)[x3]和[x5, x6]。

(b) 在Part A中,用[MASK]标记[M]替换采样的跨度,并在Part B中对跨度进行洗牌(shuffle)。

© GLM 自回归地生成 Part B。每个跨度前添加[START]标记作为输入,并在后面附加[END]标记作为输出。二维位置编码表示跨度间和跨度内的位置。

(d) 自注意力掩码:灰色区域被遮蔽。Part A标记 (蓝色) 可以内部互相关注,有助于模型捕捉文本内部的上下文信息,但不能关注B。Part B标记(黄色和绿色)可以关注A和B中前文,这种设置允许模型以自回归的方式生成文本,同时考虑到已经生成的上下文。

请添加图片描述

上图分为三部分,分别为:1. 输入的文本构成; 2. 模型的输入和模型输出; 3.模型的注意力mask掩码矩阵。

  1. 我们首先看第一部分,从上图可以看到,输入 � 被分为两部分:PartA是文本 x_corrupt,而PartB是被mask掩码片段原本的token。掩码片段的长度服从泊松分布。
  2. 接下来,我们再来看第二部分.在第二部分中PartA和PartB拼接在一起,并且PartB中的Mask片段使用[s] token 来与其他片段和PartA进行分开。然后,glm的位置编码为二维位置编码。在postion 1中,PartA的位置编码为从0递增,PartB的位置编码为掩码 s_i 在 x_corrupt 中原本的位置编码。在Postion 2中, x_corrupt 的位置全为0,PartB中的每个 s_i 片段内位置自增。假设 x=[x_1,x_2,x_3,x_4,x_5,x_6],其中 和x_3和x_5,x_6 为掩码片段,记为 和s_n和s_m 。因为 s_n 来自片段3, s_m 来自片段5,所以它们的potion 1的位置编码分别为3和5.而 s_n 的potion 2位置编码为[1], s_m的位置编码为[1,2].
  3. glm通过改变它的注意力掩码,从而实现encoder-decoder架构。在glm注意力掩码里, x_corrupt为全注意力掩码,既当前tokn既可以关注之前token,能关注到之后的token。所以, x_corrupt 之间是双向注意力,换个角度想, x_corrupt是输入到一个encoder里。而在掩码片段中,它们之间的注意力掩码为对角线,既掩码片段之间是单向注意力机制,所以掩码片段的部分输入到decoder里。总的来说,PartA中的词彼此可见;PartB中的词单向可见;PartB可见PartA;PartA不可见PartB.在预训练的时候,每个token生成的输入都是在它之前的文本。

假设 x=[x_1,x_2,x_3,x_4,x_5,x_6] ,其中 和x_3和x_5,x_6 为掩码片段。在预测 x_5 的时候,输入到模型中的是[x_1,x_2,S],其中 和x_1和x_2 是全注意力掩码,S为单向注意力掩码。接下来,要预测 x_6 的时候,即使模型上一个预测出来的token的不是 x_5 ,但是输入到模型中的还是 [x_1,x_2,S,x_5] ,实现了一种教师机制,从而保证预训练的时候,输入到模型的文本是正确的。

GLM 预训练原理解读 - 2

GLM 使用的短跨度(λ = 3)掩码的训练,适用于自然语言理解(NLU)任务。

为了在一个模型中同时支持文本生成,作者提出了一个多任务预训练方法(以第二目标共同优化文本生成任务):

  1. 文档级:从均匀分布中采样,其长度为原始标记的50%到100%。该目标针对长文本生成。
  2. 句子级:采样严格保证必须是完整的句子,总采样覆盖原始标记的15%。该目标针对seq2seq任务
  3. 这两个新目标与原始目标定义相同,唯一的区别是跨度的数量和长度。
    请添加图片描述

GLM 预训练超参数设置

请添加图片描述

GLM-130B**:开源双语大语言模型(ICLR 2023)**

请添加图片描述

实验结果
请添加图片描述

GLM-130B 预训练过程的挑战

训练崩溃和不稳定性包括以下几个方面:

  1. 损失尖峰:训练过程中可能出现损失函数突然大幅上升的情况,这可能是由于梯度爆炸、不恰当的学习率设置或模型架构问题导致的。
  2. 梯度不稳定:大型模型可能会遇到梯度不稳定的问题,导致训练过程波动性大,难以敛。
  3. 内存溢出:由于模型规模巨大,可能会出现内存溢出或其他资源限制问题,这会导致训练过程中断。
  4. 硬件限制:大型模型训练可能受到硬件资源的限制,如GPU内存不足,需要采用复杂的并行化策略。

请添加图片描述

GLM-130B 量化后精度损失较少

请添加图片描述

GLM-130B 部署硬件资源需求

  • 建议使用A100(40G * 8)服务器
  • 所有GLM-130B评估结果(约30个任务)可以在大约半天的时间内轻松地使用单个A100服务器进行复现。
  • 通过INT8 / INT4量化,在具有4 * RTX3090(24G)的单个服务器上可以进行高效推理,详见GLM-130B的量化说明。
  • 结合量化和权重卸载技术,甚至可以在GPU内存更小的服务器上进行GLM-130B推理,请参阅低资源推理以获取详细信息。

联网检索能力 WebGLM

WebGLM: An Efficient Web-enhanced Question Answering System (KDD 2023)

WebGLM旨在利用100亿参数的通用语言模型(GLM)提供高效且具有成本效益的网络增强问答系统。它旨在通过将网络搜索和检索功能整合到预训练的语言模型中,改善实际应用部署。

  • LLM增强型检索器:提高相关网络内容的检索能力,以更准确地回答问题。
  • 引导式生成器:利用GLM的能力生成类似人类的问题回答,提供精炼的答案。
  • 人类偏好感知评分器:通过优先考虑人类偏好来评估生成回答的质量,确保系统产生有用吸引人的内容

请添加图片描述

初探多模态 VisualGLM-6B

请添加图片描述

多模态预训练模型 CogVLM

请添加图片描述

请添加图片描述

请添加图片描述

请添加图片描述

请添加图片描述

代码生成模型 CodeGeex2

请添加图片描述

请添加图片描述

请添加图片描述

增强对话能力 ChatGLM

请添加图片描述

请添加图片描述

请添加图片描述

请添加图片描述

请添加图片描述

请添加图片描述

请添加图片描述

请添加图片描述

GLM4

在这里插入图片描述

相关文章:

  • SpringMVC-基础架构
  • 基于软件在环的飞控机建模仿真
  • 国外有哪些知名的CG网站?CG平台及云渲染平台
  • Kettle根据分类实现Excel文件拆分——kettle开发31
  • 视频格式转换avi格式怎么弄?分享视频转换方法
  • sqlcoder:7b sqlcoder:15b sqlcoder:70b 有什么区别呢?
  • 直接使用Three.js的 Shape和ExtrudeGeometry创建带孔几何体实现挖孔效果
  • Go模板页面浏览器显示HTML源码问题
  • 百度OCR初探-python
  • 怎么提升机器人外呼的转化效率
  • linux网络编程poll笔记
  • 实验12 路由重分布
  • STL-常用容器
  • Elastic 索引结构-倒排索引
  • 【AI绘画】Stable Diffusion 3开源
  • 【译】JS基础算法脚本:字符串结尾
  • Android 控件背景颜色处理
  • C++类的相互关联
  • co模块的前端实现
  • css选择器
  • Docker 笔记(2):Dockerfile
  • ES10 特性的完整指南
  • Js基础——数据类型之Null和Undefined
  • Js基础知识(一) - 变量
  • PHP 小技巧
  • SpringBoot几种定时任务的实现方式
  • Spring技术内幕笔记(2):Spring MVC 与 Web
  • ViewService——一种保证客户端与服务端同步的方法
  • 初识MongoDB分片
  • 对象管理器(defineProperty)学习笔记
  • 视频flv转mp4最快的几种方法(就是不用格式工厂)
  • 腾讯视频格式如何转换成mp4 将下载的qlv文件转换成mp4的方法
  • 智能合约Solidity教程-事件和日志(一)
  • 国内唯一,阿里云入选全球区块链云服务报告,领先AWS、Google ...
  • ​第20课 在Android Native开发中加入新的C++类
  • ​如何使用ArcGIS Pro制作渐变河流效果
  • ​云纳万物 · 数皆有言|2021 七牛云战略发布会启幕,邀您赴约
  • # Apache SeaTunnel 究竟是什么?
  • #调用传感器数据_Flink使用函数之监控传感器温度上升提醒
  • $Django python中使用redis, django中使用(封装了),redis开启事务(管道)
  • (2)Java 简介
  • (2009.11版)《网络管理员考试 考前冲刺预测卷及考点解析》复习重点
  • (3)(3.5) 遥测无线电区域条例
  • (CVPRW,2024)可学习的提示:遥感领域小样本语义分割
  • (react踩过的坑)antd 如何同时获取一个select 的value和 label值
  • (vue)el-checkbox 实现展示区分 label 和 value(展示值与选中获取值需不同)
  • (附源码)apringboot计算机专业大学生就业指南 毕业设计061355
  • (附源码)spring boot儿童教育管理系统 毕业设计 281442
  • (转) Face-Resources
  • (转)负载均衡,回话保持,cookie
  • ./configure,make,make install的作用(转)
  • .describe() python_Python-Win32com-Excel
  • .net core 调用c dll_用C++生成一个简单的DLL文件VS2008
  • .Net Core缓存组件(MemoryCache)源码解析
  • .NET I/O 学习笔记:对文件和目录进行解压缩操作