目录
转载:清华 ChatGLM-6B 中文对话模型部署简易教程_---Olive---的博客-CSDN博客
一、前言
近期,清华开源了其中文对话大模型的小参数量版本 ChatGLM-6B(GitHub地址:https://github.com/THUDM/ChatGLM-6B)。其不仅可以单卡部署在个人电脑上,甚至 INT4 量化还可以最低部署到 6G 显存的电脑上,当然 CPU 也可以。
随着大语言模型的通用对话热潮展开,庞大的参数量也使得这些模型只能在大公司自己平台上在线部署或者提供 api 接口。所以 ChatGLM-6B 的开源和部署在个人电脑上,都具有重要的意义。
博主测试后发现,对比 huggingface上其他同参数量的模型来说,ChatGLM-6B 的效果已经是很好的了,更何况它还有 130B 的版本,官网说明(官方博客:https://chatglm.cn/blog)是优于 GPT-3.5 效果的(130B 版本正在内测,博主没有拿到测试资格,所以无法确认)。所以把 ChatGLM-6B 部署在个人电脑或者服务器上还是很好玩的,这个参数量还要什么自行车。
最新更新】ChatGLM-6B 在 2023/03/19 更新增加了量化后的 INT4 模型,官方直接针对性的量化模型后提供下载。对比原版自己设置量化效果好一些,而且模型大小只有 4G,极大地加快了下载速度。 对于只有 CPU 或者只有 6G 显存的同学,可以直接选择量化后的模型下载和部署,本文单独更新了 ChatGLM-6B-int4 版本的部署教程,在第四章,需要部署的可以直接跳转到第四章,忽略前面的内容。huggingface 地址:https://huggingface.co/THUDM/chatglm-6b-int4
二、下载(建议直接跑python程序下载,最新的最稳定)
1.模型文件需要在 huggingface 上进行下载:marksc/chatglm-6b-int4 at main
点击【Files and versions】即可下载文件。建议下载到一个新建文件夹中,如大文件夹是 ChatGLM,把模型文件放到 model 文件夹里,整体结构就是 … /ChatGLM/model。
2.如果模型文件(大于 1G 的)下载速度慢,可以在国内源中单独下载这几个模型文件(其他这个源没有的文件还是需要在 huggingface 上下载):清华大学云盘
3.下载完成之后确保下图这些文件都在模型文件夹下(例如存放在 … /ChatGLM/model 下):
4.到 GitHub 中下载其他环境配置文件和 demo 程序代码。GitHub 地址:GitHub - THUDM/ChatGLM-6B: ChatGLM-6B:开源双语对话语言模型 | An Open Bilingual Dialogue Language Model。下载到 …/ChatGLM/ 这个目录下即可。
三、部署
把模型部署在本地,需要在 Python 环境下安装影响的库,此外还需要针对 GPU 安装相应版本的 cuda 和对应的 Pytorch。之后修改 demo 文件就可以启动运行了。
3.1 配置环境
1.安装自己 GPU 对应的 cuda,这个网上教程很多,不再赘述。(如果只有 cpu,则跳过该步骤)
2.根据上一步安装的 cuda 版本,下载安装对应版本的 pytorch,网上也有很多教程。(如果只有 cpu,也需要安装 cpu 版的 pytorch)
3/上述两步完成后,在 …/ChatGLM/ 目录下打开命令行终端,输入:
pip install -r requirements.txt
按回车后,pip 就自动下载和安装相关依赖库了。
3.2 启动 demo 程序
在 …/ChatGLM/ 目录下有两个 demo 代码:(1)cli_demo.py,直接在命令行中输入进行问答;(2)web_demo.py,利用 gradio 库生成问答网页。还有一个是 web_demo2.py
第一个 demo 方便,还可以清除历史记录,但是在命令行(尤其是 Linux 命令行)中容易输入一些奇怪的字符,这会使得程序意外停止;
第二个 demo 界面简单,但是不能清除记录,而且如果在没有图形界面的 Linux 系统服务器中使用,需要端口映射到本地电脑,再打开浏览器访问。个人建议,如果有能力,可以自己综合二者的有点自己编写,比如使用 jupyter 就可以很好结合二者,还可以以 markdown 渲染输出,使得代码或者公式更好看。
3.2.1 启动 cli_demo.py
- 修改模型路径。编辑 cli_demo.py 代码,修改 5、6 行的模型文件夹路径,将原始的 “THUDM/ChatGLM-6B” 替换为 “model” 即可。(这个model就model文件夹)
- 修改量化版本。如果你的显存大于 14G,则无需量化可以跳过此步骤。如果你的显存只有 6G 或 10G,则需要在第 6 行代码上添加 quantize(4) 或 quantize(8) ,如下:
# 6G 显存可以 4 bit 量化 model = AutoModel.from_pretrained("model", trust_remote_code=True).half().quantize(4).cuda() # 10G 显存可以 8 bit 量化 model = AutoModel.from_pretrained("model", trust_remote_code=True).half().quantize(8).cuda()
- 执行 python 文件即可,可以在命令行终端输入:
python cli_demo.py
即可启动 demo,开始使用了!
3.2.2 启动 web_demo.py
- 安装 gradio 库,在 ChatGLM 目录下打开命令行终端,输入:
pip install gradio
即可安装 demo 所需要的库。 - 修改模型路径。编辑 web_demo.py 代码,修改 4、5 行的模型文件夹路径,将原始的 “THUDM/ChatGLM-6B” 替换为 “model” 即可。
- 修改量化版本。如果你的显存大于 14G,则无需量化可以跳过此步骤。如果你的显存只有 6G 或 10G,则需要在第 5 行代码上添加 quantize(4) 或 quantize(8) ,如下:
# 6G 显存可以 4 bit 量化 model = AutoModel.from_pretrained("model", trust_remote_code=True).half().quantize(4).cuda() # 10G 显存可以 8 bit 量化 model = AutoModel.from_pretrained("model", trust_remote_code=True).half().quantize(8).cuda()
- 执行 python 文件即可,可以在命令行终端输入:
python web_demo.py
即可启动 demo,开始使用了!
3.2.3 启动 web_demo2.py
#Add a steamlit based demo web_demo2.py for better UI.
#Need to install streamlit and streamlit-chat component fisrt:
pip install streamlit
pip install streamlit-chat
#then run with the following command:
streamlit run web_demo2.py --server.port 6006
其他也一样
四、【最新】ChatGLM-6B-int4 版本教程
ChatGLM-6B-INT4 是 ChatGLM-6B 量化后的模型权重。具体的,ChatGLM-6B-INT4 对 ChatGLM-6B 中的 28 个 GLM Block 进行了 INT4 量化,没有对 Embedding 和 LM Head 进行量化。量化后的模型理论上 6G 显存(使用 CPU 即内存) 即可推理,具有在 嵌入式设备(如树莓派)上运行的可能。
4.1 下载
- 打开 ChatGLM-6B 的 GitHub 页面(GitHub - THUDM/ChatGLM-6B: ChatGLM-6B:开源双语对话语言模型 | An Open Bilingual Dialogue Language Model),下载所有文件到文件夹 …/ChatGLM/ 下。
- 在 …/ChatGLM/ 下新建文件夹 …/ChatGLM/model 。打开 huggingface 页面(THUDM/chatglm-6b-int4 at main),下载 ChatGLM-6B-int4 的 int4 量化过的模型,把所有模型文件下载到 …/model 目录下。
注意:要点击这些向下的箭头才能下载,如下: - 至此所有文件下载完毕,大文件夹 …/ChatGLM/ 下有 demo 和配置环境的相关代码,且包含小文件夹 …/ChatGLM/model,model 文件夹内存放模型相关文件。
4.2 配置环境,Windows下NVIDIA 显卡可用
- 如果没有 6G 显存,需要使用 CPU 运行,模型会根据硬件自动编译 CPU Kernel ,请确保已安装 GCC 和 OpenMP (Linux一般已安装,对于Windows则需手动安装),以获得最佳并行计算能力。可以试试下面两种方法安装GCC和OpenMP(推荐第二种比较快):
Windows下GCC安装和使用_windows gcc_丸子爱学习!的博客-CSDN博客
OpenMP Windows/macOS 配置指南_windows安装openmp_Dreamer_bLue的博客-CSDN博客 - 如果有 6G 显存,则需要安装与显卡版本对应的 cuda,之后再安装与 cuda 版本对应的 pytorch。网上有很多安装 cuda 和 pytorch 的教程,这里不在赘述。(使用 CPU 运行的同学跳过步骤 2)
- 安装相关依赖,在 …/ChatGLM/ 目录下打开命令行终端,输入
按回车后,pip 就自动下载和安装相关依赖库了。pip install -r requirements.txt
- 计算机使用的是 Intel 显卡而不是 NVIDIA 显卡 可以使用CUDA吗?
不可以。CUDA(Compute Unified Device Architecture)是 NVIDIA 开发的一种并行计算平台和编程模型,它基于 NVIDIA 的 GPU 架构,并且只能在 NVIDIA 的显卡上运行。因此,如果您的计算机使用的是 Intel 显卡而不是 NVIDIA 显卡,就无法使用 CUDA。
不过,如果需要在使用 Intel 显卡的计算机上进行并行计算,可以考虑使用其他并行计算平台和编程模型,例如 OpenCL、OpenACC、OpenMP 等。这些平台和编程模型可以在支持 Intel 显卡的计算机上运行,并且也可以用来进行并行计算和加速各种应用程序。
NVIDIA显卡的下载驱动:https://www.nvidia.com/Download/index.aspx
NVIDIA显卡的下载CDUA:CUDA Toolkit 12.1 Downloads | NVIDIA Developer
4.3 启动 demo 程序
本节内容与 3.2 节内容基本相同,参考 3.2 节的部分内容即可,这里不再赘述。请注意:↓↓↓
与 3.2 节不同的是,3.2.1 的步骤 2 和 3.2.2 的步骤 3 直接忽略即可,因为模型已经量化过,不需要重复量化。
五、小结
经过一段时间对 ChatGLM-6B、文心一言和 ChatGPT 的使用后,前二者在文字对话上与 ChatGPT 差距已经不大了,在代码生成能力上还有一定差距,但是都好过 GPT-3.5。
文心一言在大部分情况下比 ChatGLM-6B 好一些,不过要注意 ChatGLM-6B 只有 60 亿参数,而且可以单卡部署,这已经是很大的进步了,所以我对 ChatGLM 的发展还是非常看好的,官方也说过除了 int4 量化,还会进一步压缩模型。
总的来说,ChatGLM-6B 在同参数量下可以碾压其他对话模型,而且可以部署到个人电脑上,或者用华为的免费 GPU。通过几天的体验,ChatGLM-6B 是对话模型里非常让人惊喜的了,所以推荐大家可以部署玩玩。甚至可以考虑给嵌入式设备部署一波,也期待官方的进一步极致压缩!
最后也祝 ChatGLM 和 文心一言可以进一步加油,最近的体验也感受到官方每天的更新和进步了,说明态度还是非常积极的。
这是官方安装说明:https://modelnet.ai/modeldoc/dc8a8c79965d4fa1b7323aa07b10d370
这是官方推荐AI:大模型社区