Categories: 编程

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.py

python cli_demo.py

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

网页版例子

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

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

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

嘻嘻IT: 笔者是一个工作七八年的程序猿老鸟,从事涉及的技术栈主要包括PHP、Linux、Devops等,喜欢研究新技术,尝试新技术,提升技术自动化和开发效率,致力于write less,do more! 技术每年都会层出不穷,领域划分的越来越细,不可能学习所有的东西,保持对技术的好奇心,理解技术中核心思想,做一个有深度,有思想的开发!

Recent Posts

如何在Linux中根据修改日期和时间查找和排序文件

习惯于使用图形用户界面的人可以…

15小时 ago

Golang中如何实现PHP中array_fill函数?

PHP中的array_fill…

16小时 ago

Dify是一个开源的LLM应用程序开发平台(25.8k stars)

Dify是一个开源的LLM应用…

19小时 ago

MyIP一款开源好用IP工具箱(4.6k stars)

MyIP一款开源好用IP工具箱…

2天 ago

asciinema一款优秀终端会话录制工具(13.2k stars)

asciinema是一个优秀的…

3天 ago