ChatGLM
ChatGLM: A Family of Large Language Models from GLM-130B to GLM-4 All Tools(2024.7.16)
Code:https://github.com/THUDM and https://huggingface.co/THUDM
以下是模型架构的主要改进点:
无偏置(No Bias Except QKV):为了提高训练速度,除了Query、Key、Value(QKV)的偏置外,模型中去除了所有其他偏置项。这样做在长度外推方面观察到了轻微的性能提升。
RMSNorm和SwiGLU:模型采用了RMSNorm替代LayerNorm,以及SwiGLU替代ReLU。这些替代策略被观察到可以提升模型性能。
RMSNorm:
[ \text{RMSNorm}(x) = \frac{x}{\text{RMS}(x)} \otimes g ]
[ \text{RMS}(x) = \sqrt{\frac{1}{d} \sum_{i=1}^{d} x_i^2} ]
- ( \otimes ) denotes element-wise multiplication.
- ( g ) is a learned scaling parameter.
- ( d ) is the dimension of the input vector ( x ).
SwiGLU:
[ \text{SwiGLU}(x) = \sigma(xW_1 + b_1) \otimes (xW_2 + b_2) ]
where:
- ( \sigma ) is a sigmoid activation function (or another non-linear activation function for the gating part).
- ( W_1 ) and ( W_2 ) are weight matrices.
- ( b_1 ) and ( b_2 ) are bias vectors.
- ( \otimes ) represents element-wise multiplication.
二维旋转位置嵌入(Rotary Positional Embeddings, RoPE):为了适应GLM中的二维位置编码,将RoPE扩展为二维形式。
组查询注意力(Group Query Attention, GQA):为了在推理过程中减少KV缓存大小,用GQA替代了多头注意力(MHA)。由于GQA使用的参数少于MHA,因此增加了前馈网络(FFN)的参数数量,将dffn设置为隐藏大小的10/3,以保持模型大小不变。
上下文长度扩展:模型的上下文长度从最初的2K(ChatGLM),扩展到32K(ChatGLM2和ChatGLM3),再到128K和1M(GLM-4)。这种扩展不仅通过位置编码扩展和对长文本的持续训练实现,还通过长上下文对齐,使GLM-4能够有效处理长文本。
对齐技术:预训练为LLMs建立了基础,而后训练进一步细化这些模型以符合人类偏好。对于GLM-4,对齐主要通过监督式微调(SFT)和从人类反馈中学习的强化学习(RLHF)实现。SFT中使用真实的人类提示和交互,而不是基于模板或模型生成的响应,这对对齐质量至关重要。RLHF则可以进一步帮助解决响应拒绝、安全性、双语标记生成混合和多轮连贯性等问题。
智能工具集成:GLM-4 All Tools模型特别对齐,以更好地理解用户意图,并自主选择最合适的工具来完成任务。例如,它可以通过Web浏览器访问在线信息,使用Python解释器解决数学问题,利用文本到图像模型生成图像,并调用用户定义的函数。
finding and Tech:
- 数据预处理包含了去重,过滤和编码三个过程,最终有10T的数据。去重简单在全部数据中去除重复元素,过滤了具有攻击性语言、占位符文本、源代码的数据,采用了byte pair encoding(BPE)编码。
- 在SFT训练中发现,真实人类prompt的交互会比设计template进行模型交互更有利于提升对齐质量(Alignment Quality)。
- Pretrain Loss能够一定程度预见在下游人物的指标,并且loss的下降只有当超过一定阈值才对于模型能力有较大提升。
ChatGLM的更多相关文章
- Hugging News #0317: ChatGLM 会成为 HF 趋势榜的第一名吗?
每一周,我们的同事都会向社区的成员们发布一些关于 Hugging Face 相关的更新,包括我们的产品和平台更新.社区活动.学习资源和内容更新.开源库和模型更新等,我们将其称之为「Hugging Ne ...
- GLM:通用语言模型
ChatGPT已经火了一段时间了,国内也出现了一些平替,其中比较容易使用的是ChatGLM-6B:https://github.com/THUDM/ChatGLM-6B ,主要是能够让我们基于单卡自己 ...
- 【小白晋级大师】如何设计一个支持10万人用的ChatGPT对接系统
不停地书写,方能不失在人海茫茫. 1.前言 之前给大家写了ChatGPT对接企业微信的教程,具体可看知乎链接: [奶奶看了都会]ChatGPT3.5接入企业微信,可连续对话 文章结尾说了教程只能适用于 ...
- ChatCLM部署随笔
ChatCLM 博客 ChatGLM Github ChatGLM-webui 介绍 ChatGLM-6B 是一个开源的.支持中英双语的对话语言模型,基于 General Language Model ...
- 官宣 | Hugging Face 中文博客正式发布!
作者:Tiezhen.Adina.Luke Hugging Face 的中国社区成立已经有五个月之久,我们也非常高兴的看到 Hugging Face 相关的中文内容在各个平台广受好评,我们也注意到,H ...
- pytorch在有限的资源下部署大语言模型(以ChatGLM-6B为例)
pytorch在有限的资源下部署大语言模型(以ChatGLM-6B为例) Part1知识准备 在PyTorch中加载预训练的模型时,通常的工作流程是这样的: my_model = ModelClass ...
- 保姆级教程:用GPU云主机搭建AI大语言模型并用Flask封装成API,实现用户与模型对话
导读 在当今的人工智能时代,大型AI模型已成为获得人工智能应用程序的关键.但是,这些巨大的模型需要庞大的计算资源和存储空间,因此搭建这些模型并对它们进行交互需要强大的计算能力,这通常需要使用云计算服务 ...
- 解密Prompt系列6. lora指令微调扣细节-请冷静,1个小时真不够~
上一章介绍了如何基于APE+SELF自动化构建指令微调样本.这一章咱就把微调跑起来,主要介绍以Lora为首的低参数微调原理,环境配置,微调代码,以及大模型训练中显存和耗时优化的相关技术细节 标题这样写 ...
随机推荐
- 11-CSS定位
01 CSS定位概念理解 01 标准流布局概念的理解 02 position属性 02 相对定位 依然在标准流中 应用场景: 在不影响其它元素的情况下,对当前元素进行微调 <!DOCTYPE h ...
- .NET个人博客-使用Back进行消息推送
使用Back推送消息到你的iPhone 前言 我的好友看了我的博客,给我提了个需求,让我搞个网站通知,我开始以为就是评论回复然后发送邮件通知.不过他告诉我网站通知是,当有人评论或者留言后,会通知到我这 ...
- HCIA基本命令
ACLDHCPNATSTP-RSTP-MSTPVLANVLAN间路由VRRP链路聚合路由
- 【论文阅读】Trajectory-guided Control Prediction for End-to-end Autonomous Driving: A Simple yet Strong Baseline
参考与前言 Summary: leaderboard 现存第一名 TCP,非常simple的设置 取得了很好的效果 论文链接:Trajectory-guided Control Prediction ...
- 解决python命令行报错问题
解决Python报错Failed calling sys.__interactivehook__ 报错截图 可以看到主要的报错信息 File "D:\Python\Anaconda3\lib ...
- 2024年,AI驱动测试管理工具会有哪些发展前景呢?
随着人工智能技术的日新月异,2024年的测试管理工具将迎来全新的发展机遇.AI赋能将助力测试管理工具实现前所未有的智能化升级,为软件研发团队带来革命性的变革. 一.什么是AI? 人工智能(AI)是一种 ...
- Notepad++ 搭建简单Java编译运行环境
简介 有时候使用Eclips进行Java相关方法的测试和验证太繁琐,经过查询实践,使用了Notepad++和JDK搭建了一个简单的编译运行环境. 搭建过程 在电脑上安装Java环境(网上教程很多,此过 ...
- JavaSE 常见时间日期
java.util包提供了Date类来封装当前的⽇期和时间 构造函数 //当前时间 Date() //从1970年1⽉1⽇起的毫秒数作为参数 Date(long millisec) 常见方法 //返回 ...
- Unity无法安装Entities 1.2.0 Package的解决方法
会出现如下的错误提示: 本质原因是国内版的Unity使用了自己的Package加速CDN:packages.unity.cn,而不是官方的packages.unity.com.而这个CDN更新了Ent ...
- var 和 let 在 jQuery中的区别
下面通过代码案例来进一步解释 var 和 let 在 jQuery link 函数中的区别: (function ($) { $.fn.link = function () { // Example ...