中英双语大模型ChatGLM论文阅读笔记
论文传送门:
[1] GLM: General Language Model Pretraining with Autoregressive Blank Infilling
[2] Glm-130b: An open bilingual pre-trained model
Github链接:
THUDM/ChatGLM-6B
目录
- 笔记
- Abstract
- Introduction
- The design choices of GLM-130B
- The training stability of GLM-130B
- 框架总结
- 1. 模型架构
- 2. 预训练设置
- 3. 训练稳定性
- 4. 并行策略和模型配置
- 5. 量化和推理优化
- 6. 结果分析
- 7. 相关工作
- 8. 结论和经验教训
- 9. 伦理评估
- 10. 可复现性
笔记
Abstract
GLM-130B和GPT-3 175B(davinci)相比,参数量减少,但性能提升了。INT4 quantization without post training
INT4量化是一种将模型的权重和激活从使用较高位宽(如32位或16位浮点数)的表示减少到使用4位整数(INT4)的表示的过程。量化可以显著减少模型的内存需求和计算量,因此可以在资源有限的硬件上运行更大的模型,或者加快模型的推理速度。
不进行后续训练(post-training)的情况下进行INT4量化是一个挑战,因为通常量化会引入噪声和损失精度,影响模型的性能。后续训练(也称为量化感知训练)通常被用来微调量化后的模型,以恢复一些由于量化造成的性能损失。因此,如果没有进行这种微调就能实现几乎没有性能损失的INT4量化,就意味着模型具有非常好的量化鲁棒性。
这样的成果表明,GLM-130B模型可以有效地进行低位宽量化,同时保持其预测性能,这在实际应用中非常重要,因为它使得模型能够在普通消费级硬件上运行,而不是仅限于高性能服务器。这样不仅可以降低使用成本,而且可以使得更广泛的用户群体和开发者能够访问和使用这种大规模的模型。
Introduction
- 和
10B-scale model相比,训练100B-scale model需要解决的挑战:pre-training efficiency,stability,convergence。 - 预训练使用了GPU集群,包含
96个节点,每个节点配置8张 40G NVIDIA DGX-A100 GPU。训练时间为2022/5/6~2022/7/3。 - 架构:使用了[2]中的
General Language Model (GLM) algorithm。 - Pre-LN(预层归一化)
AND训练vs.推理的GPU资源使用情况
- 在Transformer模型中,Pre-LN是指在每个子层(如自注意力层和前馈网络层)的输入之前进行层归一化。这种方式通常可以提高模型的训练稳定性,尤其是在训练非常深的网络时。Pre-LN有助于解决深度Transformer模型中的梯度消失问题,因为它能够使梯度直接流向较深的层。
大模型训练和推理(inference)阶段使用的GPU数量通常有很大的区别,这主要基于以下几个方面:1. 资源需求:- 训练:训练阶段需要处理大量的数据并进行重复的前向传播和反向传播计算,这需要大量的计算资源。因此,通常会使用更多的GPU,甚至是成百上千的GPU,以加快训练速度和处理大规模数据集。- 推理:推理阶段通常只需要进行单次的前向传播,计算量相对较小,因此通常需要较少的GPU。在许多应用中,一个或几个GPU就足够用于推理。2. 并行策略:- 数据并行:在训练时,经常使用数据并行策略,将大型数据集分割成小批量,分配到多个GPU上并行处理。- 模型并行:对于极大的模型,可能需要使用模型并行策略,将模型的不同部分放在不同的GPU上。- 推理时并行:在推理时,通常不需要模型并行,因为一次只处理一个或几个请求。3. 效率和成本:- 训练大模型通常是一项耗时且昂贵的任务,使用更多的GPU可以提高训练效率,但也大大增加了成本。- 推理需要尽可能高效和经济,特别是在生产环境中,因此通常会尽量减少所需的GPU数量,以降低成本。4. 可扩展性和灵活性:- 训练阶段的模型通常被设计为能够在大规模分布式系统上扩展。- 推理模型通常需要在各种环境中灵活部署,包括边缘设备,因此可能更注重模型的压缩和优化。总的来说,训练大模型时使用的GPU数量远多于推理阶段,主要是因为训练阶段的资源和计算需求远大于推理。然而,随着量化技术和模型优化的发展,推理阶段所需的资源正在逐渐减少,允许即使是大模型也能在资源受限的环境中运行。

- 为什么选择
130B:单服务器支持。130亿参数的模型规模支持在单个含有A100 (8×40G) GPU的服务器上进行推理计算。
The design choices of GLM-130B
- Inductive bias:归纳偏置
在机器学习中,"inductive bias"指的是一个学习算法在学习过程中对某些模式假设的偏好,这些偏好影响了模型对数据的泛化能力。换句话说,就是当面对有限的数据时,算法如何推广到未见过的数据。它是算法的一种内在属性,决定了算法在学习时对解决问题的途径和方向的偏好。不同的机器学习模型有不同的归纳偏置。例如:决策树倾向于寻找数据中的分层逻辑规则。
支持向量机(SVM)通过最大化边界来寻找分类决策边界。
神经网络根据其层次结构寻找可以通过逐层变换来逼近的复杂模式。
在大型语言模型(LLM)如GLM-130B的背景下,模型架构(如Transformer架构)定义了它对语言数据中哪些特征和模式的偏好。例如,Transformer模型通过自注意力机制捕捉长距离依赖,这是它的归纳偏置之一。然而,由于大型模型的参数量极大,探索不同架构设计的计算成本是非常高的,因此通常需要在设计阶段就做出合理的选择,以确定如何构建模型才能最好地捕捉和泛化数据中的模式。这段文字表明,GLM-130B的设计者意识到了这一点,并且在模型设计中做出了一些独特的选择,以平衡归纳偏置和计算成本。
- GLM-130B没有采用传统的GPT架构,而是使用
bidirectional GLM作为backbone。
The training stability of GLM-130B
- gradient norm的定义

梯度范数的具体变化情况也可能受到多种因素的影响,包括模型的复杂性、数据的多样性、优化算法的选择等。在某些情况下,梯度范数可能会因为模型陷入局部最小值或鞍点而暂时增大。此外,对于一些更复杂的模型或非凸优化问题,梯度范数的变化可能会更加复杂,不一定遵循单调下降的趋势。因此,梯度范数的监控通常被用作训练过程中健康状态的一个指标,帮助研究人员和工程师判断训练是否在进行得当。
框架总结
1. 模型架构
理解模型的基础架构以及与其他模型(如GPT-3等)的差异。
2. 预训练设置
了解模型预训练的具体过程,包括所使用的数据集、预训练目标、以及如何处理模型输入。
3. 训练稳定性
模型训练的稳定性对模型的性能至关重要。需关注文中提到的稳定性问题及解决方案。
4. 并行策略和模型配置
理解如何利用并行计算策略有效地训练这样大规模的模型。
5. 量化和推理优化
模型如何通过量化技术减少资源消耗,并优化推理过程。
6. 结果分析
模型在各种任务上的性能如何,特别是与其他大型模型相比。
7. 相关工作
熟悉本文中提到的相关工作,以便对整个领域有更好的理解。
8. 结论和经验教训
关注作者从训练过程中学到的经验教训。
9. 伦理评估
了解作者如何处理与大型语言模型相关的伦理风险。
10. 可复现性
文中如何确保实验结果的可复现性,以及如何使研究成果对社区开放。
未完待续…
相关文章:
中英双语大模型ChatGLM论文阅读笔记
论文传送门: [1] GLM: General Language Model Pretraining with Autoregressive Blank Infilling [2] Glm-130b: An open bilingual pre-trained model Github链接: THUDM/ChatGLM-6B 目录 笔记AbstractIntroductionThe design choices of GLM-130BThe …...
力扣题:字符串的反转-11.24
力扣题-11.24 [力扣刷题攻略] Re:从零开始的力扣刷题生活 力扣题1:151. 翻转字符串里的单词 解题思想:保存字符串中的单词即可 class Solution(object):def reverseWords(self, s):""":type s: str:rtype: str"&quo…...
NIO--07--Java lO模型详解
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 何为 IO?先从计算机结构的角度来解读一下I/o.再从应用程序的角度来解读一下I/O 阻塞/非阻塞/同步/异步IO阻塞IO非阻塞IO异步IO举例 Java中3种常见的IO模型BIO (Blo…...
OpenSSH 漏洞修复升级最新版本
Centos7系统ssh默认版本一般是OpenSSH7.4左右,低版本是有漏洞的而且是高危漏洞,在软件交付和安全扫描上是过不了关的,一般情况需要升级OpenSSH的最新版本 今天详细说下升级最新版本的处理过程(认真看会发现操作很简单,…...
【数据结构和算法】无限集中的最小数字
其他系列文章导航 Java基础合集 设计模式合集 多线程合集 分布式合集 ES合集 文章目录 其他系列文章导航 文章目录 前言 一、题目描述 二、题解 三、代码 四、总结 前言 这是力扣的2336题,难度为中等,解题方案有很多种,本文讲解我认为…...
SimpleDataFormat 非线程安全
目录 前言 正文 1.出现异常 2.解决方法1 3.解决方法2 总结 前言 SimpleDateFormat 类是 Java 中处理日期和时间格式化和解析的类,但它并不是线程安全的。这意味着多个线程不能安全地共享一个 SimpleDateFormat 实例进行日期和时间的解析和格式化。当多个…...
SpringBoot : ch12 多模块配置YAML文件
前言 当您使用SpringBoot框架进行项目开发时,通常需要配置一些参数和属性。在实际开发中,可能需要将这些配置参数分成多个不同的YAML文件,并将它们组织到不同的模块中。这样可以方便管理和维护配置文件,并且可以避免配置文件的冲…...
TensorRT之LeNet5部署(onnx方式)
文章目录 前言LeNet-5部署1.ONNX文件导出2.TensorRT构建阶段(TensorRT模型文件)🧁创建Builder🍧创建Network🍭使用onnxparser构建网络🍬优化网络🍡序列化模型🍩释放资源 3.TensorRT运行时阶段(推理)&#x…...
Xilinx FPGA平台DDR3设计详解(二):DDR SDRAM组成与工作过程
本文主要介绍一下DDR SDRAM的基本组成以及工作过程,方便大家更好的理解和掌握DDR的控制与读写。 一、DDR SDRAM的基本组成 1、SDRAM的基本单元 SDRAM的基本单元是一个CMOS晶体管和一个电容组成的电路。 晶体管最上面的一端,称作栅极,通过…...
ios(swiftui) 属性包装器详解
目录 1. State 2. Binding 3. ObservedObject 和Published 4. StateObject 5. EnvironmentObject和Environment 6. AppStorage 在 SwiftUI 中,属性包装器用于增强和管理视图的状态,以及处理视图与数据模型之间的绑定和交互。下面是一些常见…...
【智能家居】面向对象编程OOP和设计模式(工厂模式)
面向对象编程 类和对象 面向对象编程和面向过程编程区别 设计模式 软件设计模式按类型分 工厂模式 面向对象编程 面向对象编程(Object-Oriented Programming,OOP)是一种程序设计范式,其中程序被组织成对象的集合,每…...
Docker安装Memcached+Python调用
简介:Memcached是一个通用的分布式内存缓存系统。它通常用于通过在RAM中缓存数据和对象来加速动态数据库驱动的网站,以减少必须读取外部数据源(如数据库或API)的次数。Memcached的API提供了一个分布在多台机器上的非常大的哈希表。…...
网页开发 HTML
目录 HTML概述 HTML结构 HTML标签语法 基本标签 标题标签 换行标签 段落标签 文本格式化标签 特殊符号 div和span标签 超链接标签 锚点 img标签 列表标签 表格标签 表单标签 HTML概述 HTML,即超文本标记语言(HyperText Markup Language …...
SHAP(五):使用 XGBoost 进行人口普查收入分类
SHAP(五):使用 XGBoost 进行人口普查收入分类 本笔记本演示了如何使用 XGBoost 预测个人年收入超过 5 万美元的概率。 它使用标准 UCI 成人收入数据集。 要下载此笔记本的副本,请访问 github。 XGBoost 等梯度增强机方法对于具有…...
LeetCode 8 字符串转整数
题目描述 字符串转换整数 (atoi) 请你来实现一个 myAtoi(string s) 函数,使其能将字符串转换成一个 32 位有符号整数(类似 C/C 中的 atoi 函数)。 函数 myAtoi(string s) 的算法如下: 读入字符串并丢弃无用的前导空格检查下一…...
前缀和 LeetCode1423. 可获得的最大点数
几张卡牌 排成一行,每张卡牌都有一个对应的点数。点数由整数数组 cardPoints 给出。 每次行动,你可以从行的开头或者末尾拿一张卡牌,最终你必须正好拿 k 张卡牌。 你的点数就是你拿到手中的所有卡牌的点数之和。 给你一个整数数组 cardPoi…...
探索意义的深度:自然语言处理中的语义相似性
一、说明 语义相似度,反应出计算机对相同内容,不同表达的识别能力。因而识别范围至少是个句子,最大范围就是文章,其研究方法有所区别。本文将按照目前高手的研究成绩,作为谈资介绍给诸位。 二、语义相似度简介 自然语言…...
WT2605-24SS高品质录音语音芯片:实时输出、不保存本地,引领音频技术新潮流
随着科技的快速发展,高品质音频技术成为了现代社会不可或缺的一部分。在这个追求高品质、高效率的时代,唯创知音推出的WT2605-24SS高品质录音芯片,以其独特的功能和卓越的性能,引领着音频技术的新潮流。 首先,WT2605-…...
Git 合并冲突解决步骤
Git 合并冲突解决步骤 1. 找到并打开冲突文件 定位到发生冲突的文件。可以通过 Git 的命令行输出找到这些文件。例如: pom.xmlsrc/main/java/com/zzm/config/SecurityConfig.javasrc/main/java/com/zzm/service/chat/UserConversationsServiceImpl.javasrc/main/…...
Windows核心编程 注册表
目录 注册表概述 打开关闭注册表 创建删除子健 查询写入删除键值 子健和键值的枚举 常用注册表操作 注册表概述 注册表是Windows操作系统、硬件设备以及客户应用程序得以正常运行和保存设置的核心"数据库",也可以说是一个非常巨大的树状分层结构的…...
使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式
一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明:假设每台服务器已…...
深入剖析AI大模型:大模型时代的 Prompt 工程全解析
今天聊的内容,我认为是AI开发里面非常重要的内容。它在AI开发里无处不在,当你对 AI 助手说 "用李白的风格写一首关于人工智能的诗",或者让翻译模型 "将这段合同翻译成商务日语" 时,输入的这句话就是 Prompt。…...
React Native 导航系统实战(React Navigation)
导航系统实战(React Navigation) React Navigation 是 React Native 应用中最常用的导航库之一,它提供了多种导航模式,如堆栈导航(Stack Navigator)、标签导航(Tab Navigator)和抽屉…...
多模态商品数据接口:融合图像、语音与文字的下一代商品详情体验
一、多模态商品数据接口的技术架构 (一)多模态数据融合引擎 跨模态语义对齐 通过Transformer架构实现图像、语音、文字的语义关联。例如,当用户上传一张“蓝色连衣裙”的图片时,接口可自动提取图像中的颜色(RGB值&…...
从零开始打造 OpenSTLinux 6.6 Yocto 系统(基于STM32CubeMX)(九)
设备树移植 和uboot设备树修改的内容同步到kernel将设备树stm32mp157d-stm32mp157daa1-mx.dts复制到内核源码目录下 源码修改及编译 修改arch/arm/boot/dts/st/Makefile,新增设备树编译 stm32mp157f-ev1-m4-examples.dtb \stm32mp157d-stm32mp157daa1-mx.dtb修改…...
Vite中定义@软链接
在webpack中可以直接通过符号表示src路径,但是vite中默认不可以。 如何实现: vite中提供了resolve.alias:通过别名在指向一个具体的路径 在vite.config.js中 import { join } from pathexport default defineConfig({plugins: [vue()],//…...
关于easyexcel动态下拉选问题处理
前些日子突然碰到一个问题,说是客户的导入文件模版想支持部分导入内容的下拉选,于是我就找了easyexcel官网寻找解决方案,并没有找到合适的方案,没办法只能自己动手并分享出来,针对Java生成Excel下拉菜单时因选项过多导…...
Ubuntu Cursor升级成v1.0
0. 当前版本低 使用当前 Cursor v0.50时 GitHub Copilot Chat 打不开,快捷键也不好用,当看到 Cursor 升级后,还是蛮高兴的 1. 下载 Cursor 下载地址:https://www.cursor.com/cn/downloads 点击下载 Linux (x64) ,…...
Vue 模板语句的数据来源
🧩 Vue 模板语句的数据来源:全方位解析 Vue 模板(<template> 部分)中的表达式、指令绑定(如 v-bind, v-on)和插值({{ }})都在一个特定的作用域内求值。这个作用域由当前 组件…...
验证redis数据结构
一、功能验证 1.验证redis的数据结构(如字符串、列表、哈希、集合、有序集合等)是否按照预期工作。 2、常见的数据结构验证方法: ①字符串(string) 测试基本操作 set、get、incr、decr 验证字符串的长度和内容是否正…...
