zai-org/ChatGLM2-6B
Python
Captured source
source ↗zai-org/ChatGLM2-6B
Description: ChatGLM2-6B: An Open Bilingual Chat LLM | 开源双语对话语言模型
Language: Python
License: NOASSERTION
Stars: 15568
Forks: 1804
Open issues: 452
Created: 2023-06-24T06:21:34Z
Pushed: 2024-06-27T04:05:08Z
Default branch: main
Fork: no
Archived: no
README:
ChatGLM2-6B
🤗 HF Repo • 🐦 Twitter • 📃 [GLM@ACL 22] [GitHub] • 📃 [GLM-130B@ICLR 23] [GitHub]
👋 加入我们的 Discord 和 WeChat
📍在 chatglm.cn 体验更大规模的 ChatGLM 模型。
*Read this in [English](README_EN.md)*
GLM-4 开源模型和API
我们已经发布最新的 GLM-4 模型,该模型在多个指标上有了新的突破,您可以在以下两个渠道体验我们的最新模型。
+ GLM-4 开源模型 我们已经开源了 GLM-4-9B 系列模型,在各项指标的ce是上有明显提升,欢迎尝试。 + 智谱清言 体验最新版 GLM-4,包括 GLMs,All tools等功能。 + API平台 新一代 API 平台已经上线,您可以直接在 API 平台上体验 GLM-4-0520、GLM-4-air、GLM-4-airx、GLM-4-flash、GLM-4、GLM-3-Turbo、CharacterGLM-3,CogView-3 等新模型。 其中GLM-4、GLM-3-Turbo两个模型支持了 System Prompt、Function Call、 Retrieval、Web_Search等新功能,欢迎体验。
+ GLM-4 API 开源教程 GLM-4 API教程和基础应用,欢迎尝试。 API相关问题可以在本开源教程疑问,或者使用 GLM-4 API AI助手 来获得常见问题的帮助。
-----
介绍
ChatGLM2-6B 是开源中英双语对话模型 ChatGLM-6B 的第二代版本,在保留了初代模型对话流畅、部署门槛较低等众多优秀特性的基础之上,ChatGLM2-6B 引入了如下新特性:
1. 更强大的性能:基于 ChatGLM 初代模型的开发经验,我们全面升级了 ChatGLM2-6B 的基座模型。ChatGLM2-6B 使用了 GLM 的混合目标函数,经过了 1.4T 中英标识符的预训练与人类偏好对齐训练,[评测结果](#评测结果)显示,相比于初代模型,ChatGLM2-6B 在 MMLU(+23%)、CEval(+33%)、GSM8K(+571%) 、BBH(+60%)等数据集上的性能取得了大幅度的提升,在同尺寸开源模型中具有较强的竞争力。 2. 更长的上下文:基于 FlashAttention 技术,我们将基座模型的上下文长度(Context Length)由 ChatGLM-6B 的 2K 扩展到了 32K,并在对话阶段使用 8K 的上下文长度训练。对于更长的上下文,我们发布了 ChatGLM2-6B-32K 模型。LongBench 的测评结果表明,在等量级的开源模型中,ChatGLM2-6B-32K 有着较为明显的竞争优势。 3. 更高效的推理:基于 Multi-Query Attention 技术,ChatGLM2-6B 有更高效的推理速度和更低的显存占用:在官方的模型实现下,推理速度相比初代提升了 42%,INT4 量化下,6G 显存支持的对话长度由 1K 提升到了 8K。 4. 更开放的协议:ChatGLM2-6B 权重对学术研究完全开放,在填写问卷进行登记后亦允许免费商业使用。
-----
ChatGLM2-6B 开源模型旨在与开源社区一起推动大模型技术发展,恳请开发者和大家遵守[开源协议](MODEL_LICENSE),勿将开源模型和代码及基于开源项目产生的衍生物用于任何可能给国家和社会带来危害的用途以及用于任何未经过安全评估和备案的服务。目前,本项目团队未基于 ChatGLM2-6B 开发任何应用,包括网页端、安卓、苹果 iOS 及 Windows App 等应用。
尽管模型在训练的各个阶段都尽力确保数据的合规性和准确性,但由于 ChatGLM2-6B 模型规模较小,且模型受概率随机性因素影响,无法保证输出内容的准确性,且模型易被误导。本项目不承担开源模型和代码导致的数据安全、舆情风险或发生任何模型被误导、滥用、传播、不当利用而产生的风险和责任。
更新信息
[2023/07/31] 发布 ChatGLM2-6B-32K 模型,提升对于长文本的理解能力。
[2023/07/25] 发布 CodeGeeX2 模型,基于 ChatGLM2-6B 加入代码预训练实现,代码能力全面提升。
[2023/07/04] 发布 P-Tuning v2 与 全参数微调脚本,参见 [P-Tuning](./ptuning)。
友情链接
对 ChatGLM2 进行加速的开源项目:
- fastllm: 全平台加速推理方案,单GPU批量推理每秒可达10000+token,手机端最低3G内存实时运行(骁龙865上约4~5 token/s)
- chatglm.cpp: 类似 llama.cpp 的 CPU 量化加速推理方案,实现 Mac 笔记本上实时对话
- ChatGLM2-TPU: 采用TPU加速推理方案,在算能端侧芯片BM1684X(16T@FP16,内存16G)上实时运行约5 token/s
基于或使用了 ChatGLM2-6B 的开源项目:
- Chuanhu Chat: 为各个大语言模型和在线模型API提供美观易用、功能丰富、快速部署的用户界面,支持ChatGLM2-6B。
支持 ChatGLM-6B 和相关应用在线训练的示例项目:
评测结果
我们选取了部分中英文典型数据集进行了评测,以下为 ChatGLM2-6B 模型在 MMLU (英文)、C-Eval(中文)、GSM8K(数学)、BBH(英文) 上的测评结果。在 [evaluation](./evaluation/README.md) 中提供了在 C-Eval 上进行测评的脚本。
MMLU
| Model | Average | STEM | Social Sciences | Humanities | Others | | ----- |------| ---- |------|-------| ----- | | ChatGLM-6B | 40.63 | 33.89 | 44.84 | 39.02 | 45.71 | | ChatGLM2-6B (base) | 47.86 | 41.20 | 54.44 | 43.66 | 54.46 | | ChatGLM2-6B | 45.46 | 40.06 | 51.61 | 41.23 | 51.24 | | ChatGLM2-12B (base) | 56.18 | 48.18 | 65.13 | 52.58 | 60.93 | | ChatGLM2-12B | 52.13 | 47.00 | 61.00 | 46.10 | 56.05 |
> Chat 模型使用 zero-shot CoT (Chain-of-Thought) 的方法测试,Base 模型使用 few-shot answer-only 的方法测试
C-Eval
| Model | Average | STEM | Social Sciences | Humanities | Others | | ----- |---------|-------| ----- |------------|--------| | ChatGLM-6B | 38.9 | 33.3 | 48.3 | 41.3 | 38.0 | | ChatGLM2-6B (base) | 51.7 | 48.6 | 60.5 | 51.3 | 49.8 | | ChatGLM2-6B | 50.1 | 46.4 | 60.4 | 50.6 | 46.9 | | ChatGLM2-12B (base) | 61.6 | 55.4 | 73.7 | 64.2 | 59.4 | | ChatGLM2-12B | 57.0 | 52.1 | 69.3 | 58.5 | 53.2 |
> Chat 模型使用 zero-shot CoT 的方法测试,Base 模型使用 few-shot answer only 的方法测试
GSM8K
| Model | Accuracy | Accuracy (Chinese)* | |--------------|----------| - | | ChatGLM-6B | 4.82 | 5.85 | | ChatGLM2-6B (base) | 32.37 | 28.95 | | ChatGLM2-6B | 28.05 | 20.45 | | ChatGLM2-12B (base) | 40.94 | 42.71 | | ChatGLM2-12B | 38.13 | 23.43 |
> 所有模型均使用 few-shot CoT 的方法测试,CoT prompt 来自 http://arxiv.org/abs/2201.11903 > > \* 我们使用翻译 API 翻译了 GSM8K 中的 500 道题目和 CoT prompt 并进行了人工校对
BBH
| Model | Accuracy | |--------------|-------| | ChatGLM-6B | 18.73 | | ChatGLM2-6B (base) | 33.68 | | ChatGLM2-6B | 30.00 | | ChatGLM2-12B (base) | 36.02 | | ChatGLM2-12B | 39.98 |
> 所有模型均使用 few-shot CoT 的方法测试,CoT prompt 来自 https://github.com/suzgunmirac/BIG-Bench-Hard/tree/main/cot-prompts
推理性能
ChatGLM2-6B 使用了 Multi-Query Attention,提高了生成速度。生成 2000 个字符的平均速度对比如下
| Model | 推理速度 (字符/秒) | | ---- | ----- | | ChatGLM-6B | 31.49 | | ChatGLM2-6B | 44.62 |
> 使用官方实现,batch size = 1,max length = 2048,bf16 精度,测试硬件为 A100-SXM4-80G,软件环境为 PyTorch 2.0.1
Multi-Query Attention 同时也降低了生成过程中 KV Cache 的显存占用,此外,ChatGLM2-6B 采用 Causal Mask 进行对话训练,连续对话时可复用前面轮次的 KV Cache,进一步优化了显存占用。因此,使用 6GB 显存的显卡进行 INT4 量化的推理时,初代的 ChatGLM-6B 模型最多能够生成 1119 个字符就会提示显存耗尽,而 ChatGLM2-6B 能够生成至少 8192 个字符。
| 量化等级 | 编码 2048 长度的最小显存 | 生成 8192 长度的最小显存 | | -------------- |---------------------|---------------------| | FP16 / BF16 | 13.1 GB | 12.8 GB | | INT8 | 8.2 GB | 8.1 GB | | INT4 | 5.5 GB | 5.1 GB |
> ChatGLM2-6B 利用了 PyTorch 2.0 引入的…
Excerpt shown — open the source for the full document.