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

【LLM】GLM系列模型要点

note

文章目录

  • note
  • GLM
  • 一、数据层面
    • 1. 预训练数据
  • 二、GLM4模型层面
  • 三、GLM-4 All Tools
  • 四、GLM的其他技术
  • Reference

GLM

Paper:https://arxiv.org/abs/2406.12793
GitHub:https://github.com/THUDM
HF:https://huggingface.co/THUDM
在这里插入图片描述

经过进一步优化的GLM-4 All Tools模型能够理解用户的意图,并自主决定何时以及如何使用包括网络浏览器、Python解释器、文本到图像模型以及用户自定义函数在内的工具来高效完成复杂任务。在实际应用中,GLM-4 All Tools在访问在线信息和使用Python解释器解决数学问题等任务中的表现超过了GPT-4 All Tools。

一、数据层面

1. 预训练数据

ChatGLM系列模型的预训练语料库由多种语言的文档构成,主要为英文和中文,涵盖了网页、维基百科、书籍、代码和论文等多种来源。数据处理流程精心设计,分为三个主要阶段:去重、过滤和分词。

  • 在去重阶段,我们通过精确匹配和模糊匹配技术剔除重复或相似的文档,确保数据集的多样性。
  • 在过滤阶段,我们移除了包含攻击性内容、占位符文本和源代码等噪声文档,以提升数据质量。最后,在分词阶段,文本被转换成token序列,为后续处理打下基础。
  • 预训练数据中的token数量对模型训练速度有直接影响。为了提高效率,我们采用了字节级字节对编码(BPE)算法,分别对中文和多语种文本进行学习,并将学到的token与tiktoken中的cl100k_base tokenizer的token合并,形成了一个包含15万词汇的统一token集。在最终训练集中,我们对不同来源的数据进行了重新加权,增加了高质量和教育性来源(如书籍和维基百科)的数据比例,使得预训练语料库包含了约十万亿个tokens。

二、GLM4模型层面

No Bias Except QKV:为了提升训练速度,我们去除了所有偏差项,除了注意力层中的查询(Query)、键(Key)和值(Value)偏差。这一变化略微改善了长度外推法的性能。

RMSNorm 和 SwiGLU:我们用RMSNorm替换了LayerNorm,并用SwiGLU替换了ReLU。这两种策略能够提升模型性能。

旋转位置嵌入(RoPE):我们将RoPE扩展到二维形式,以适应GLM中的二维位置编码。

分组查询注意力(GQA):我们用GQA替换了传统的多头注意力(MHA),以减少推理过程中的KV缓存大小。由于GQA使用的参数比MHA少,我们相应增加了FFN的参数数量,以保持模型大小的一致性。

ChatGLM系列模型的上下文长度经历了多次扩展,从ChatGLM的2K增长到ChatGLM2和ChatGLM3的32K,再进一步增长到GLM-4的128K和1M。这种扩展不仅仅是通过上下文长度的增加(位置编码的扩展和对长文本的持续训练)实现的,而且还通过对长上下文的优化对齐,使得GLM-4能够有效地处理长文本。

三、GLM-4 All Tools

GLM-4 All Tools 是专门为支持智能体和相关任务而进一步优化的模型版本。它能够自主理解用户的意图,规划复杂的指令,并能够调用一个或多个工具(例如网络浏览器、Python解释器和文本到图像模型)以完成复杂的任务。

下图展示了 GLM-4 All Tools系统的整体工作流程。当用户提出复杂请求时,模型会对任务进行分析,并逐步规划解决问题的过程。如果模型确定无法独立完成任务,它将依次调用一个或多个外部工具,利用它们的中间反馈和结果来协助解决任务。

在这里插入图片描述

四、GLM的其他技术

LLM 的涌现能力:我们深入研究了 LLM 的涌现能力,探讨了预训练损失与模型在下游任务上的性能之间的关系。我们发现,在不同模型大小和训练token数量下,当预训练损失相同时,LLMs在下游任务上展现出相似的性能。此外,我们还观察到,在某些任务(如MMLU和GSM8K)上,只有当预训练损失降至特定阈值以下时,模型性能才会显著超越随机概率。基于这些发现,我们将涌现能力重新定义为模型在较低预训练损失下所展现出的特殊能力。(arXiv:2403.15796)

LongAlign:为了扩展LLMs处理长上下文的能力,我们提出了LongAlign,这是一套全面的长上下文对齐方法。它使得GLM-4能够处理长达128K token的长文本,并且在性能上与Claude 2和GPT-4 Turbo (1106)持平。(arXiv:2401.18058)

ChatGLM-Math:我们还专注于提升LLMs在数学问题解决方面的能力,推出了ChatGLM-Math。这一方法通过自我批评机制来选择数据,而不是依赖于外部模型或手动标注。(arXiv:2404.02893)

ChatGLM-RLHF:为了使LLMs更好地与人类反馈对齐,我们提出了ChatGLM-RLHF,这是将PPO和DPO应用于LLMs的一种方法。(arXiv:2404.00934)

Self-Contrast:为了避免依赖昂贵的人类偏好反馈数据,我们开发了Self-Contrast,一种无需反馈的对齐策略。它利用目标LLM自身来生成大量负样本,以此进行RLHF对齐。(arXiv:2404.00604)

AgentTuning:为了提高 LLM 的智能体能力,我们开发了 AgentTurning 框架,该框架包括 AgentInstruct 指令微调数据集,其中包含智能体与环境之间的高质量交互轨迹。(arXiv:2310.12823)

APAR:为了提高LLMs对具有分层结构响应的推理速度,我们提出了自并行自回归(APAR)生成方法。它通过指令微调来训练LLM规划其并行生成过程,并执行APAR生成。(arXiv:2401.06761)

基准测试:我们还开发了一系列开放的LLM基准测试,包括用于评估LLMs作为智能体能力的AgentBench(arXiv:2308.03688),用于评估长上下文处理性能的LongBench(arXiv:2308.14508),用于测量ChatGLM与中文内容对齐质量的AlignBench(arXiv:2311.18743),用于评估非Python编程语言中HumanEval问题的HumanEval-X(arXiv:2303.17568),以及用于测量模型解决实际编程任务能力的NaturalCodeBench (NCB)(arXiv:2405.04520)。

Reference

[1] ChatGLM 技术报告:从 GLM-130B 到 GLM-4 All Tools

相关文章:

【LLM】GLM系列模型要点

note 文章目录 noteGLM一、数据层面1. 预训练数据 二、GLM4模型层面三、GLM-4 All Tools四、GLM的其他技术Reference GLM Paper:https://arxiv.org/abs/2406.12793 GitHub:https://github.com/THUDM HF:https://huggingface.co/THUDM 经过…...

安卓开发,获取本机手机号

用免费云服务器,三丰云记录安卓开发过程 以下是使用 Android 开发获取本机手机号的示例代码(需要相关权限): java 复制 import android.content.Context; import android.content.pm.PackageManager; import android.os.Build; i…...

linux学习week1

linux学习 一.介绍 1.概述 linux的读法不下10种 linux是一个开源的操作系统,操作系统包括mac、windows、安卓等 linux的开发版:Ubuntu(乌班图)、RedHat(红帽)、CentOS linux的应用:linux在服…...

【React篇】父组件渲染时避免重复渲染子组件的3种处理方法

在 React 中,父组件渲染时要避免重复渲染子组件,可以使用以下方法: 使用 React.memo(仅适用于函数式组件)或 PureComponent(适用于类组件): 这些方法可以帮助你创建在接收到新的 pr…...

深度神经网络——决策树的实现与剪枝

概述 决策树 是一种有用的机器学习算法,用于回归和分类任务。 “决策树”这个名字来源于这样一个事实:算法不断地将数据集划分为越来越小的部分,直到数据被划分为单个实例,然后对实例进行分类。如果您要可视化算法的结果&#xf…...

IOPaint前后端框架

IOPaint 前后端框架 IOPaint 是一个图像修复工具,使用了先进的AI模型进行图像编辑。以下是其前后端所使用的框架: 前端框架 IOPaint 的前端使用了 Node.js 和 npm 进行依赖管理和构建。具体步骤如下: 克隆仓库并进入 web_app 目录&#x…...

【Linux】进程间通信_2

文章目录 七、进程间通信1. 进程间通信分类管道 未完待续 七、进程间通信 1. 进程间通信分类 管道 管道的四种情况: ①管道内部没有数据,并且具有写端的进程没有关闭写端,读端就要阻塞等待,知道管道pipe内部有数据。 ②管道内部…...

Linux基础 - 常用命令

目录 零. 简介 一 . 常见 Ubuntu 命令 二. apt-get 下载 三. 网络命令 四. 常用命令的总结 零. 简介 在 Ubuntu 中,命令是用于与操作系统进行交互和执行各种操作的指令。通过在终端中输入命令,可以完成文件管理、系统配置、软件安装、进程管理等各种…...

轻松两步,借助向量数据库 VectorDB 与千帆 Appbuilder 构建个性化本地问答知识库

在我们日常的工作和生活中,经常会遇到需要快速获取和管理大量信息的情况。无论是解答客户的问题,还是整理公司内部的资料,一个高效的知识库系统都能帮我们省下大量时间和精力。 为了帮助大家快速构建 RAG 应用,我们之前发布了一个…...

ONLYOFFICE 桌面编辑器 8.1

ONLYOFFICE 桌面编辑器 8.1 ONLYOFFICE 简介一、轻松编辑器 PDF 文件二、用幻灯片版式快速修改幻灯片三、无缝切换文档编辑、审阅和查看模式四、**改进从右至左语言的支持 & 新的本地化选项**五、隐藏“连接到云”板块六、在演示文稿中播放视频和音频文件七、版本 8.1&…...

idea中的git在clone文件提示 filename too long

一 解决版本 1.1 问题描述以及解决办法 当在Windows系统下使用Git时出现“filename too long”错误: git config --system core.longpaths true...

C++ 数组介绍

1. 数组是什么? 在C中,数组是一种基本的数据结构,它允许我们存储固定大小的相同类型元素的集合。每个元素在数组中都有一个唯一的索引,从0开始。 2. 数组的声明与初始化 2.1 声明数组 声明数组时,需要指定数组的类…...

思维导图MindManager2024最新版,让你的思维飞起来!

亲爱的朋友们,今天我要跟大家分享一款我近期深度使用并彻底被种草的神器——MindManager2024最新版本的思维导图软件。作为一位对效率和创意有着极高追求的内容创作者,我几乎尝试过市面上所有的思维导图工具,而MindManager2024无疑是其中的佼…...

Spring容器启动流程——refresh()单个方法分析

文章目录 Spring启动过程this()方法refresh()prepareRefresh()obtainFreshBeanFactory()prepareBeanFactory()postProcessBeanFactory()invokeBeanFactoryPostProcessorsregisterBeanPostProcessorsinitMessageSource()initApplicationEventMulticaster()onRefresh()registerLi…...

Redis--注册中心集群 Cluster 集群

准备工作: 首先pull用到的镜像 docker pull redis:6.0.8 端口准备 node01 192.168.248.189.6381-6382 node02 192.168.248.190 6383-6384 node03 192.168.248.191 6385-6386 创建路径: mkdir -p /soft/docker/redis-cluster cd /soft/docker/re…...

秋招突击——6/20——复习{(单调队列优化)——最大子序列和,背包问题——宠物小精灵收服问题}——新作{两两交换链表中的节点}

文章目录 引言复习单调队列优化——最大子序列和思路分析实现代码参考实现 背包问题——宠物小精灵的收服问题个人实现参考实现 新作两两交换链表中的节点个人实现参考实现 删除有序数组中的重复项个人实现知识补全迭代器的访问和控制vector删除特定的元素erasevector底层删除元…...

使用 MongoDB 剖析开放银行:技术挑战和解决方案

开放银行(或开放金融)在银行业掀起了一股颠覆性浪潮,它迫使金融机构(银行、保险公司、金融科技公司、企业甚至政府机构)迎接一个透明、协作和创新的新时代。这种模式转变要求银行与第三方提供商(TPP&#x…...

鸿蒙 HarmonyOS NEXT星河版APP应用开发-阶段二

一、鸿蒙应用界面开发 弹性布局-Flex 语法 /* 弹性容器组件 Flex() 位置: Flex默认主轴水平往右,交叉轴垂直向下(类似Row) 语法: Flex(参数对象){子组件1,子组件2,子组件3 } 属性方法: direction&#xf…...

26.4 Django 视图层

1. 视图函数 视图函数是Django框架中用于处理Web请求并返回Web响应的重要组件. 以下是对Django视图函数的详细解释: * 1. 视图函数与URL的映射.为了让Django能够知道哪个URL对应哪个视图函数, 需要在应用的urls.py文件中定义URL模式.使用path或re_path函数来定义URL模式, 并将…...

Hbase介绍

Hbase介绍 HBase 是一个开源的、分布式的、面向列的 NoSQL 数据库系统,它建立在 Apache Hadoop 之上,提供了高可靠性、高性能、可伸缩性和高可用性的存储解决方案。让我来简单介绍一下 HBase 的架构。 1. 架构概述: HBase 的架构设计基于 Go…...

利用ngx_stream_return_module构建简易 TCP/UDP 响应网关

一、模块概述 ngx_stream_return_module 提供了一个极简的指令&#xff1a; return <value>;在收到客户端连接后&#xff0c;立即将 <value> 写回并关闭连接。<value> 支持内嵌文本和内置变量&#xff08;如 $time_iso8601、$remote_addr 等&#xff09;&a…...

简易版抽奖活动的设计技术方案

1.前言 本技术方案旨在设计一套完整且可靠的抽奖活动逻辑,确保抽奖活动能够公平、公正、公开地进行,同时满足高并发访问、数据安全存储与高效处理等需求,为用户提供流畅的抽奖体验,助力业务顺利开展。本方案将涵盖抽奖活动的整体架构设计、核心流程逻辑、关键功能实现以及…...

MySQL 隔离级别:脏读、幻读及不可重复读的原理与示例

一、MySQL 隔离级别 MySQL 提供了四种隔离级别,用于控制事务之间的并发访问以及数据的可见性,不同隔离级别对脏读、幻读、不可重复读这几种并发数据问题有着不同的处理方式,具体如下: 隔离级别脏读不可重复读幻读性能特点及锁机制读未提交(READ UNCOMMITTED)允许出现允许…...

ServerTrust 并非唯一

NSURLAuthenticationMethodServerTrust 只是 authenticationMethod 的冰山一角 要理解 NSURLAuthenticationMethodServerTrust, 首先要明白它只是 authenticationMethod 的选项之一, 并非唯一 1 先厘清概念 点说明authenticationMethodURLAuthenticationChallenge.protectionS…...

Axios请求超时重发机制

Axios 超时重新请求实现方案 在 Axios 中实现超时重新请求可以通过以下几种方式&#xff1a; 1. 使用拦截器实现自动重试 import axios from axios;// 创建axios实例 const instance axios.create();// 设置超时时间 instance.defaults.timeout 5000;// 最大重试次数 cons…...

C语言中提供的第三方库之哈希表实现

一. 简介 前面一篇文章简单学习了C语言中第三方库&#xff08;uthash库&#xff09;提供对哈希表的操作&#xff0c;文章如下&#xff1a; C语言中提供的第三方库uthash常用接口-CSDN博客 本文简单学习一下第三方库 uthash库对哈希表的操作。 二. uthash库哈希表操作示例 u…...

Kafka主题运维全指南:从基础配置到故障处理

#作者&#xff1a;张桐瑞 文章目录 主题日常管理1. 修改主题分区。2. 修改主题级别参数。3. 变更副本数。4. 修改主题限速。5.主题分区迁移。6. 常见主题错误处理常见错误1&#xff1a;主题删除失败。常见错误2&#xff1a;__consumer_offsets占用太多的磁盘。 主题日常管理 …...

《信号与系统》第 6 章 信号与系统的时域和频域特性

目录 6.0 引言 6.1 傅里叶变换的模和相位表示 6.2 线性时不变系统频率响应的模和相位表示 6.2.1 线性与非线性相位 6.2.2 群时延 6.2.3 对数模和相位图 6.3 理想频率选择性滤波器的时域特性 6.4 非理想滤波器的时域和频域特性讨论 6.5 一阶与二阶连续时间系统 6.5.1 …...

表单设计器拖拽对象时添加属性

背景&#xff1a;因为项目需要。自写设计器。遇到的坑在此记录 使用的拖拽组件时vuedraggable。下面放上局部示例截图。 坑1。draggable标签在拖拽时可以获取到被拖拽的对象属性定义 要使用 :clone, 而不是clone。我想应该是因为draggable标签比较特。另外在使用**:clone时要将…...

RKNN开发环境搭建2-RKNN Model Zoo 环境搭建

目录 1.简介2.环境搭建2.1 启动 docker 环境2.2 安装依赖工具2.3 下载 RKNN Model Zoo2.4 RKNN模型转化2.5编译C++1.简介 RKNN Model Zoo基于 RKNPU SDK 工具链开发, 提供了目前主流算法的部署例程. 例程包含导出RKNN模型, 使用 Python API, CAPI 推理 RKNN 模型的流程.   本…...