ChatGLM(国内版的chatGPT)

article/2024/9/7 19:10:37

Git链接:

GitHub - THUDM/ChatGLM-6B: ChatGLM-6B:开源双语对话语言模型 | An Open Bilingual Dialogue Language Model

介绍

ChatGLM-6B 是一个开源的、支持中英双语的对话语言模型,基于 General Language Model (GLM) 架构,具有 62 亿参数。结合模型量化技术,用户可以在消费级的显卡上进行本地部署(INT4 量化级别下最低只需 6GB 显存)。 ChatGLM-6B 使用了和 ChatGPT 相似的技术,针对中文问答和对话进行了优化。经过约 1T 标识符的中英双语训练,辅以监督微调、反馈自助、人类反馈强化学习等技术的加持,62 亿参数的 ChatGLM-6B 已经能生成相当符合人类偏好的回答,更多信息请参考我们的博客。

为了方便下游开发者针对自己的应用场景定制模型,我们同时实现了基于 P-Tuning v2 的高效参数微调方法 (使用指南) ,INT4 量化级别下最低只需 7GB 显存即可启动微调。

不过,由于 ChatGLM-6B 的规模较小,目前已知其具有相当多的局限性,如事实性/数学逻辑错误,可能生成有害/有偏见内容,较弱的上下文能力,自我认知混乱,以及对英文指示生成与中文指示完全矛盾的内容。请大家在使用前了解这些问题,以免产生误解。更大的基于 1300 亿参数 GLM-130B 的 ChatGLM 正在内测开发中。

Read this in English.

更新信息

[2023/03/31] 增加基于 P-Tuning-v2 的高效参数微调实现,INT4 量化级别下最低只需 7GB 显存即可进行模型微调。详见高效参数微调方法。

[2023/03/23] 增加 API 部署(感谢 @LemonQu-GIT)。增加 Embedding 量化模型 ChatGLM-6B-INT4-QE。增加配备 Apple Silicon 芯片的 Mac 上 GPU 加速的支持。

[2023/03/19] 增加流式输出接口 stream_chat,已更新到网页版和命令行 Demo。修复输出中的中文标点。增加量化后的模型 ChatGLM-6B-INT4

友情链接

以下是部分基于本仓库开发的开源项目:

  • ChatGLM-MNN: 一个基于 MNN 的 ChatGLM-6B C++ 推理实现,支持根据显存大小自动分配计算任务给 GPU 和 CPU
  • ChatGLM-Tuning: 基于 LoRA 对 ChatGLM-6B 进行微调。类似的项目还包括 Humanable ChatGLM/GPT Fine-tuning | ChatGLM 微调
  • langchain-ChatGLM:基于本地知识的 ChatGLM 应用,基于LangChain
  • 闻达:大型语言模型调用平台,基于 ChatGLM-6B 实现了类 ChatPDF 功能

以下是部分针对本项目的教程/文档:

  • Windows部署文档

如果你有其他好的项目/教程的话,欢迎参照上述格式添加到 README 中并提出 Pull Request。

使用方式

硬件需求

量化等级最低 GPU 显存(推理)最低 GPU 显存(高效参数微调)
FP16(无量化)13 GB14 GB
INT88 GB9 GB
INT46 GB7 GB

环境安装

使用 pip 安装依赖:pip install -r requirements.txt,其中 transformers 库版本推荐为 4.27.1,但理论上不低于 4.23.1 即可。

代码调用

可以通过如下代码调用 ChatGLM-6B 模型来生成对话:

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

完整的模型实现可以在 Hugging Face Hub 上查看。如果你从 Hugging Face Hub 上下载 checkpoint 的速度较慢,也可以从这里手动下载。

Demo

我们提供了一个基于 Gradio 的网页版 Demo 和一个命令行 Demo。使用时首先需要下载本仓库:

git clone https://github.com/THUDM/ChatGLM-6B
cd ChatGLM-6B

网页版 Demo

首先安装 Gradio:pip install gradio,然后运行仓库中的 web_demo.py:

python web_demo.py

程序会运行一个 Web Server,并输出地址。在浏览器中打开输出的地址即可使用。最新版 Demo 实现了打字机效果,速度体验大大提升。注意,由于国内 Gradio 的网络访问较为缓慢,启用 demo.queue().launch(share=True, inbrowser=True) 时所有网络会经过 Gradio 服务器转发,导致打字机体验大幅下降,现在默认启动方式已经改为 share=False,如有需要公网访问的需求,可以重新修改为 share=True 启动。

感谢 @AdamBear 实现了基于 Streamlit 的网页版 Demo,运行方式见#117.

命令行 Demo

运行仓库中 cli_demo.py:

python cli_demo.py

程序会在命令行中进行交互式的对话,在命令行中输入指示并回车即可生成回复,输入 clear 可以清空对话历史,输入 stop 终止程序。

API部署

首先需要安装额外的依赖 pip install fastapi uvicorn,然后运行仓库中的 api.py:

python api.py

默认部署在本地的 8000 端口,通过 POST 方法进行调用

curl -X POST "http://127.0.0.1:8000" \-H 'Content-Type: application/json' \-d '{"prompt": "你好", "history": []}'

得到的返回值为

{"response":"你好👋!我是人工智能助手 ChatGLM-6B,很高兴见到你,欢迎问我任何问题。","history":[["你好","你好👋!我是人工智能助手 ChatGLM-6B,很高兴见到你,欢迎问我任何问题。"]],"status":200,"time":"2023-03-23 21:38:40"
}

低成本部署

模型量化

默认情况下,模型以 FP16 精度加载,运行上述代码需要大概 13GB 显存。如果你的 GPU 显存有限,可以尝试以量化方式加载模型,使用方法如下:

# 按需修改,目前只支持 4/8 bit 量化
model = AutoModel.from_pretrained("THUDM/chatglm-6b", trust_remote_code=True).quantize(4).half().cuda()

进行 2 至 3 轮对话后,8-bit 量化下 GPU 显存占用约为 10GB,4-bit 量化下仅需 6GB 占用。随着对话轮数的增多,对应消耗显存也随之增长,由于采用了相对位置编码,理论上 ChatGLM-6B 支持无限长的 context-length,但总长度超过 2048(训练长度)后性能会逐渐下降。

模型量化会带来一定的性能损失,经过测试,ChatGLM-6B 在 4-bit 量化下仍然能够进行自然流畅的生成。使用 GPT-Q 等量化方案可以进一步压缩量化精度/提升相同量化精度下的模型性能,欢迎大家提出对应的 Pull Request。

[2023/03/19] 量化过程需要在内存中首先加载 FP16 格式的模型,消耗大概 13GB 的内存。如果你的内存不足的话,可以直接加载量化后的模型,仅需大概 5.2GB 的内存:

model = AutoModel.from_pretrained("THUDM/chatglm-6b-int4", trust_remote_code=True).half().cuda()

[2023/03/24] 我们进一步提供了对Embedding量化后的模型,模型参数仅占用4.3 GB显存:

model = AutoModel.from_pretrained("THUDM/chatglm-6b-int4-qe", trust_remote_code=True).half().cuda()

CPU 部署

如果你没有 GPU 硬件的话,也可以在 CPU 上进行推理,但是推理速度会更慢。使用方法如下(需要大概 32GB 内存)

model = AutoModel.from_pretrained("THUDM/chatglm-6b", trust_remote_code=True).float()

[2023/03/19] 如果你的内存不足,可以直接加载量化后的模型:

model = AutoModel.from_pretrained("THUDM/chatglm-6b-int4",trust_remote_code=True).float()

如果遇到了报错 Could not find module 'nvcuda.dll' 或者 RuntimeError: Unknown platform: darwin (MacOS) 的话请参考这个Issue.

Mac 上的 GPU 加速

对于搭载了Apple Silicon的Mac(以及MacBook),可以使用 MPS 后端来在 GPU 上运行 ChatGLM-6B。首先需要参考 Apple 的 官方说明 安装 PyTorch-Nightly。然后将模型仓库 clone 到本地(需要先安装Git LFS)

git lfs install
git clone https://huggingface.co/THUDM/chatglm-6b

将代码中的模型加载改为从本地加载,并使用 mps 后端

model = AutoModel.from_pretrained("your local path", trust_remote_code=True).half().to('mps')

即可使用在 Mac 上使用 GPU 加速模型推理。

高效参数微调

基于 P-tuning v2 的高效参数微调。具体使用方法详见 ptuning/README.md。

ChatGLM-6B 示例

以下是一些使用 web_demo.py 得到的示例截图。更多 ChatGLM-6B 的可能,等待你来探索发现!

自我认知

提纲写作

文案写作

邮件写作助手

信息抽取

角色扮演

评论比较

旅游向导

局限性

由于 ChatGLM-6B 的小规模,其能力仍然有许多局限性。以下是我们目前发现的一些问题:

  • 模型容量较小:6B 的小容量,决定了其相对较弱的模型记忆和语言能力。在面对许多事实性知识任务时,ChatGLM-6B 可能会生成不正确的信息;它也不擅长逻辑类问题(如数学、编程)的解答。

    点击查看例子

  • 产生有害说明或有偏见的内容:ChatGLM-6B 只是一个初步与人类意图对齐的语言模型,可能会生成有害、有偏见的内容。(内容可能具有冒犯性,此处不展示)

  • 英文能力不足:ChatGLM-6B 训练时使用的指示/回答大部分都是中文的,仅有极小一部分英文内容。因此,如果输入英文指示,回复的质量远不如中文,甚至与中文指示下的内容矛盾,并且出现中英夹杂的情况。

  • 易被误导,对话能力较弱:ChatGLM-6B 对话能力还比较弱,而且 “自我认知” 存在问题,并很容易被误导并产生错误的言论。例如当前版本的模型在被误导的情况下,会在自我认知上发生偏差。

    点击查看例子

协议

本仓库的代码依照 Apache-2.0 协议开源,ChatGLM-6B 模型的权重的使用则需要遵循 Model License。

引用

如果你觉得我们的工作有帮助的话,请考虑引用下列论文

@inproceedings{zeng2023glm-130b,title={{GLM}-130B: An Open Bilingual Pre-trained Model},author={Aohan Zeng and Xiao Liu and Zhengxiao Du and Zihan Wang and Hanyu Lai and Ming Ding and Zhuoyi Yang and Yifan Xu and Wendi Zheng and Xiao Xia and Weng Lam Tam and Zixuan Ma and Yufei Xue and Jidong Zhai and Wenguang Chen and Zhiyuan Liu and Peng Zhang and Yuxiao Dong and Jie Tang},booktitle={The Eleventh International Conference on Learning Representations (ICLR)},year={2023},url={https://openreview.net/forum?id=-Aw0rrrPUF}
}

http://chatgpt.dhexx.cn/article/ndbr6FBN.shtml

相关文章

如何更好的利用chatgpd 国内

文章目录 前言好用的网站更好的使用AI 前言 当您需要一位聪明、快速、准确地回答问题并提供帮助的伙伴时,您可以考虑ChatGPT。ChatGPT是OpenAI开发的大型语言模型,它可以理解人类语言并以自然的方式回答问题。但由于某些因素,国内无法正常访…

在国内,如何优雅的使用ChatGPT??

ChatGPT 是一个在线的语言模型,可以通过 Web 端访问。 由于中国大陆地区的网络环境和政策原因,访问 Web 端可能会遇到一些困难。 以下是一些可能可行的方法: 1、使用 VPN 通过使用 VPN 可以切换到国外的网络环境,从而访问 Cha…

国内也能畅玩gptchat,游玩攻略分享

看到很多人都不知道怎么玩gptchat,小编就不能忍了,其实要玩chatgpt是非常的简单的,完全是能免费体验chatgpt的强大的。下面我们一起来了解一下国内也能畅玩gptchat,游玩攻略分享。 一.Chatgpt国内为啥能玩 其实现在很多的程序都接…

chatgpt是什么东西?chatgpt在国内能用吗

chatgpt是什么意思? ChatGPT 是一种“以对话方式进行交互”的聊天机器人模型,是一种由 AI 技术驱动的自然语言处理工具,可让您与聊天机器人进行类似人类的对话等等。语言模型可以回答问题并帮助您完成撰写电子邮件、论文和代码等任务。这种类型的生成式…

ChatGPT扩展系列之ChatGPT for Google

ChatGPT扩展系列之ChatGPT for Google Google搜索只是关键词检索,在回答问题方面,没有ChatGPT这样的文本理解能力和生成能力,而安装上了ChatGPT for Google,则可以在使用Google搜索的同时开启ChatGPT,关键词检索、文本生成都不耽误。 下面我们介绍一下如何在谷歌浏览器中…

Pycharm中导入chatgpt插件

最近chatgpt的问世,不知道各位小伙伴们试了没有,我试完了感觉可以说是非常好用啊,完全可以作为我们学习的一个非常好用的工具。 但由于chatgpt不对国内开放,所以想访问的话不得不采用一些技术手段,今天就给小伙伴们分…

pycharm中使用chatgpt

前言 ChatGPT是目前最强大的AI,不仅能够聊天、写小说,甚至码代码也不在话下。 但是在国内要使用chatgpt很麻烦,国内一家团队开发了一款idea插件NexChatGPT,用数据代理的方式,让我们在国内也能轻松的使用chatgpt。 没…

ChatGPT 应用合集

最近用了一些 ChatGPT 的周边产品,挑几个感觉不错的分享下。 1、Poe 地址:https://poe.com Poe 内置了 Sage、Claude、Dragonfly、和 ChatGPT 。其中,Sage 是基于 ChatGPT 简化版本的 AI 机器人。目前 Poe 移动端只支持 iOS,而且是…

openai 的chatgpt无法登录,显示Access denied登录拒绝

一登陆就显示错误 Access denied You do not have access to chat.openai.com. The site owner may have set restrictions that prevent you from accessing the site. 明明是刚刚买的id,一登陆就错误 解决方案如下 1.换线路,线路不通,…

ChatGPT 网页源码部署

纯前端,放入网站根目录即可使用。 体验网址:https://wwsla.com/ai/(体验网站暂取消不输入apikey后提示,可正常与机器人互动) 功能: 1.接口有GPT- V1、GPT- V2、GPT- V3 2.支持自动绘图、编程 3.后台可…

chatgpt谷歌插件

1、试了下 Monica,一个非常炫酷的AI 助手,有免费的GPT-4额度,推荐给你~ https://monica.im/?cVG9RGKV8 2、https://sider.ai/invited?ce1c91317257863b4297e4ab98d89260c 点击上述邀请链接,可以体验GPT-4查询

GPT4及ChatGPT相关应用梳理 附下载

3月15日 OpenAI发布多模态大模型GPT-4,其不仅在语言处理能力上提高,还具备对图像的理解和分析能力。GPT-4商业化进程加快,开放API的同时还发布了在6个不同商业场景的应用落地。随后微软发布了震撼的微软365 Copilot,极大提升offic…

ChatGPT app安装指南

当前只支持ios安装,现在大部分app store里的app都不是官方的,要下载官方app参照如下步骤: 1.切换appStore账号到国外注册appStore账号,注意不是icloud账号。 给大家提供个账号,下载使用完了退出下! 另外特…

【NLP】陈根:70页PPT读懂ChatGPT

作者:陈根 来源:转载根新未来 从2022年末到了2023年初,ChatGPT火遍了全网。ChatGPT的成功,证明了大模型技术路线的正确性。这意味着,人工智能终于能从之前的大数据统计分类阶段,走向了今天具备类人逻辑沟通…

ChatGPT研究框架(80页PPT,附下载)

研究框架系列 来源:计算机文艺复兴 往期推荐 GPT-4写代码能力提升21%!MIT新方法让LLM学会反思,网友:和人类的思考方式一样 今天,聊聊ChatGPT 阿里立秋:AI千人千面,淘宝如何做智能化UI测试&#…

量子位智库报告:三分钟看懂ChatGPT | 附下载

量子位智库量子位 | 公众号 QbitAI 你被ChatGPT包围了吗? 最近这项技术创新项目火得一塌糊涂,你或许听过、见过甚至还慕名试玩体验过了。 但是不是完全灯下黑状态了?不知道ChatGPT从何而来,原理是什么样的,又存在哪些利…

6天,50万!ChatGPT App 下载量远超美国 iOS 新应用的 99.99%

整理 | 朱珂欣 出品 | CSDN程序人生(ID:coder_life) ChatGPT 继去年推出之后,5 天用户破百万,2个月月活破亿,成为史上用户增长速度最快的消费级应用程序。 5 月 19 日,ChatGPT 正式迎来「iPh…

使用ChatGPT可以下载全景图

现在有很多的地方使用全景图,这些全景图是动态展示的720图片,无法通过浏览器点击下载到本地。更可惜的,截止到目前open.ai4.0版本也依然不支持生成图片。那还有什么办法呢? 步骤一 打开全景管家,把全景项目地址&#…

使用 ChatGPT 构建 YouTube 下载器的分步指南

让我们使用 ChatGPT 的代码生成功能在 Python 中生成功能齐全的 YouTube 下载器应用程序,而无需自己编写一行代码!不相信这是可能的?只需按照本教程中的步骤操作...... ChatGPT 是 OpenAI 训练的大型语言模型,可以根据自然语言输入…

零代码量化投资:用ChatGPT下载沪深京 A 股历史行情数据

历史行情数据是做量化投资的基础必用数据。怎么借助ChatGPT来零代码实现批量下载沪深京 A 股历史行情数据呢? 在ChatGPT里面输入提示词如下: 写一段Python代码,用akshare库下载沪深京所有 A 股历史行情数据,具体步骤&#xff1a…