ChatGPT平替之ChatGLM-6B

最近国内和国外很多企业都开始对大量使用ChatGPT使用产生担忧,表示有可能会泄露用户隐私或者数据被大模型公司使用,所以很多公司都开始训练自己的小模型,其中在国内比较有名的就是清华大学的ChatGLM-6B,这模型可以在用户级的设备部署,这里我们也部署了一个, 体验一下。

ChatGLM-6B是谁?

[ChatGLM-6B是开源 GLM-130B 千亿基座模型基础上,清华大学正式开源最新的中英双语对话 GLM 模型,结合模型量化技术,用户可以在消费级的显卡上进行本地部署(INT4 量化级别下最低只需 6GB 显存)。经过约 1T 标识符的中英双语训练,辅以监督微调、 反馈自助、人类反馈强化学习等技术的加持,62 亿参数的 ChatGLM-6B 虽然规模不及千亿模型,但大大降低了用户部署的门槛,并且已经能生成相当符合人类偏好的回答。

硬件环境

阿里云服务器,8核, 30G 1 GPU:NVIDIA A10 24G

环境安装

参考:https://github.com/THUDM/ChatGLM-6B

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

此外,如果需要在 cpu 上运行量化后的模型,还需要安装 gccopenmp。多数 Linux 发行版默认已安装。对于 Windows ,可在安装 TDM-GCC 时勾选 openmp。 Windows 测试环境 gcc 版本为 TDM-GCC 10.3.0Linuxgcc 11.3.0

代码执行之后会由 transformers 自动下载模型实现和参数。完整的模型实现可以在 Hugging Face Hub。如果你的网络环境较差,下载模型参数可能会花费较长时间甚至失败

运行方式

Demo & API

我们提供了一个基于 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 启动。

基于 Streamlit 的网页版 Demo,运行方式见#117.

pip install streamlit
pip install streamlit-chat
streamlit run web_demo2.py --server.port 6006

命令行 Demo

cli-demo

运行仓库中 cli_demo.py

python cli_demo.py

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

网页版例子

  1. 推荐几个上海地标性建筑
    file
  2. 上海有多少条地铁
    file
  3. 我在上海野生动物园,要去虹桥火车站,该怎么坐车
    file

在我的这台服务器上响应速度还挺快的,3s左右能答复,但是回复的正确度还是有点差,比ChatGPT还有一段距离。

Stable Diffusion公司开源大语言模型StableLM来了!
如何在Ubuntu 22.04上安装Python?

发表我的评论

电子邮件地址不会被公开。 必填项已用*标注

61 + 93 =

ajax-loader