重磅!第二代ChatGLM发布!清华大学THUDM发布ChatGLM2-6B:更快更准,更低成本更长输入!

标签:#ChatGLM-6B##ChatGLM2-6B# 时间:2023/06/25 22:45:14 作者:小木

ChatGLM-6B是国产开源大模型领域最强大的的大语言模型。因其优秀的效果和较低的资源占用在国内引起了很多的关注。2023年6月25日,清华大学KEG和数据挖掘小组(THUDM)发布了第二代ChatGLM2-6B。


ChatGLM2-6B的升级部分

第一代的ChatGLM2-6B是一个非常优秀的聊天大语言模型。它的部署成本很低,完全版本仅需13GB显存即可进行推理,微调需要14GB显存,在消费级显卡即可使用。而其INT4量化版本则最低仅需6GB即可推理。

量化等级 最低GPU显存
FP16(无量化) 13GB
INT8 10GB
INT4 6GB

相比较第一代,第二大的ChatGLM2-6B模型主要有四点升级:

ChatGLM2-6B升级1:基座模型升级,性能更加强大

第二代的ChatGLM2-6B的基座模型使用了GLM模型的混合目标函数,在1.4万亿中英文tokens数据集上训练,并做了模型对齐。而测试显示,第二代的ChatGLM2-6B比第一代模型有了很大提升,在各项任务中的提升幅度如下:

评测任务 任务类型 ChatGLM-6B得分 ChatGLM2-6B得分 提升幅度
MMLU 英文语言理解 40.63 47.86 ↑ 23%
CEval 中文大语言模型评估 38.9 51.7 ↑ 33%
GSM8K 数学(英文版) 4.82 32.37 ↑ 571%
BBH 大语言模型的BIG-Bench Hard任务 18.73 33.68 ↑ 60%

可以看到,第二代模型的性能提升很高。由于第一代的ChatGLM-6B效果已经十分让人惊叹,因此第二代更加值得期待。可以看到,在数学任务上,ChatGLM2-6B性能提升571%

ChatGLM2-6B升级2:更长的上下文

在第一代ChatGLM-6B上,模型的最高上下文长度是2K。而第二代的ChatGLM2-6B的基座模型使用了FlashAttention技术,升级到32K。而据此微调的对话模型ChatGLM2-6B则可以在8K长度上下文条件下自由流畅进行对话。因此,支持更多轮次的对话,并且官方表示将在后续继续优化上下文长度限制。

ChatGLM2-6B升级3:更高效的推理,更快更便宜!

ChatGLM2-6B使用了Multi-Query Attention技术,可以在更低地显存资源下以更快的速度进行推理,官方宣称,推理速度相比第一代提升42%!同时,在INT4量化模型中,6G显存的对话长度由1K提升到了8K!
这意味着,我们可以用更低的资源来支持更长的对话。甚至是读取更长的文档进行相关的提取和问答。

ChatGLM2-6B升级4:更加开放的协议

在第一代ChatGLM-6B模型中,有一个比较遗憾的是它的模型开源协议限制较大,完全禁止商用。而第二代的ChatGLM2-6B则宣布对学术研究完全开放,而且允许申请商用授权,不过需要书面申请,并且没有说明是否收费。

按照这个描述,可能是免费,或者费用不高。

ChatGLM2-6B的资源要求

根据官方的说明,ChatGLM2-6B的资源占用更低,速度更快。官方公布的主要指标如下。

首先是推理速度,2000个字符的平均速度提升约41.7%

Model 推理速度 (字符/秒)
ChatGLM-6B 31.49
ChatGLM2-6B 44.62

其次是资源占用降低,在不同的量化水平下,相同显存支持的对话长度提升约8倍!

使用 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

可以看到,如果你有13GB的显存,在FP16精度下,可以支持最高8192长度的生成结果。这意味着可以生成更长的文档。而使用INT4量化模型,你只需要5.1GB显存就能生成8K长度内容了。

而且,官方测试量化版本对精度的损失并不大,基本都在6%以内,但是这资源占用下降了可不止一半哦~:

任务 BF16 INT4 精度下降百分比
Accuracy (MMLU) 45.47 43.13 ↓ 5.15%
Accuracy (C-Eval dev) 53.57 50.30 ↓ 6.1%

ChatGLM2-6B的使用方法

依然是十分简单,首先从官方下载库之后安装依赖:

  1. git clone https://github.com/THUDM/ChatGLM2-6B
  2. cd ChatGLM2-6B
  3. pip install -r requirements.txt

上述命令需要你本地已经安装好git,这里不细说,可以参考之前第一代的详细教程:https://www.datalearner.com/blog/1051680925189690

代码调用方法:

  1. >>> from transformers import AutoTokenizer, AutoModel
  2. >>> tokenizer = AutoTokenizer.from_pretrained("THUDM/chatglm2-6b", trust_remote_code=True)
  3. >>> model = AutoModel.from_pretrained("THUDM/chatglm2-6b", trust_remote_code=True, device='cuda')
  4. >>> model = model.eval()
  5. >>> response, history = model.chat(tokenizer, "你好", history=[])
  6. >>> print(response)
  7. 你好👋!我是人工智能助手 ChatGLM2-6B,很高兴见到你,欢迎问我任何问题。
  8. >>> response, history = model.chat(tokenizer, "晚上睡不着应该怎么办", history=history)
  9. >>> print(response)
  10. 晚上睡不着可能会让你感到焦虑或不舒服,但以下是一些可以帮助你入睡的方法:
  11. 1. 制定规律的睡眠时间表:保持规律的睡眠时间表可以帮助你建立健康的睡眠习惯,使你更容易入睡。尽量在每天的相同时间上床,并在同一时间起床。
  12. 2. 创造一个舒适的睡眠环境:确保睡眠环境舒适,安静,黑暗且温度适宜。可以使用舒适的床上用品,并保持房间通风。
  13. 3. 放松身心:在睡前做些放松的活动,例如泡个热水澡,听些轻柔的音乐,阅读一些有趣的书籍等,有助于缓解紧张和焦虑,使你更容易入睡。
  14. 4. 避免饮用含有咖啡因的饮料:咖啡因是一种刺激性物质,会影响你的睡眠质量。尽量避免在睡前饮用含有咖啡因的饮料,例如咖啡,茶和可乐。
  15. 5. 避免在床上做与睡眠无关的事情:在床上做些与睡眠无关的事情,例如看电影,玩游戏或工作等,可能会干扰你的睡眠。
  16. 6. 尝试呼吸技巧:深呼吸是一种放松技巧,可以帮助你缓解紧张和焦虑,使你更容易入睡。试着慢慢吸气,保持几秒钟,然后缓慢呼气。
  17. 如果这些方法无法帮助你入睡,你可以考虑咨询医生或睡眠专家,寻求进一步的建议。

大家也可以从HuggingFace上先下载模型,然后加载到本地使用,下载地址:https://huggingface.co/THUDM/chatglm2-6b

ChatGLM2-6B模型已经上架DataLearner模型卡列表:https://www.datalearner.com/ai-models/pretrained-models/ChatGLM2-6B

ChatGLM-6B第一代模型信息卡地址:https://www.datalearner.com/ai-models/pretrained-models/ChatGLM-6B

大家可以在模型信息卡中看到更加规整的ChatGLM2-6B的内容。

欢迎大家关注DataLearner官方微信,接受最新的AI技术推送
Back to Top