请确保你有6GB以及以上显存的英伟达显卡或者CPU+32G以及以上的内存(不推荐CPU方式运行)
笔者使用的是魔改的矿卡RTX2080TI22G,有较大的显存方便跑


安装python

这里我使用的是 Python 3.9.13 版本。你可以选择Windows installer (64-bit)下载,并且它会自动配置环境变量。你可以在Python Release Python 3.9.13 | Python.org找到更多关于该版本的信息。
可以参考:
小白怎样给Windows电脑安装Python软件_哔哩哔哩_bilibili

安装git(可选)

Windows下Git安装_哔哩哔哩_bilibili

下载程序文件

如果没有安装git
你可以从以下链接下载程序文件:https://github.com/THUDM/ChatGLM2-6B/archive/refs/heads/main.zip。下载完成后,请将其解压到一个文件夹中。

如果已安装git

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

进入该文件夹,在 Windows 上右键点击打开命令行窗口,并使用以下命令使用 pip 安装依赖项:
(如果右键菜单中没有打开命令行窗口选项,你可以按下 Win+R 键,然后输入 cmd 并按回车键,接着使用命令 cd 当前文件夹目录 进入该文件夹)

pip install -r requirements.txt

下载模型文件

从本地加载模型

以上代码会由 transformers 自动下载模型实现和参数。完整的模型实现可以在 Hugging Face Hub 上找到。如果你的网络环境较差,下载模型参数可能会花费较长时间甚至失败。在这种情况下,你可以先将模型下载到本地,然后从本地加载。

从 Hugging Face Hub 下载模型需要先安装 Git LFS,然后运行以下命令:

git clone https://huggingface.co/THUDM/chatglm2-6b

如果你从 Hugging Face Hub 上下载 checkpoint 的速度较慢,你可以只下载模型实现:

GIT_LFS_SKIP_SMUDGE=1 git clone https://huggingface.co/THUDM/chatglm2-6b

然后从这里手动下载模型参数文件,并将下载的文件替换到本地的 chatglm2-6b 目录下。

修改 Python 脚本内部的加载方式

打开 web_demo.py 文件,在第 5-6 行修改为你自己的模型路径:

tokenizer = AutoTokenizer.from_pretrained("D:\ChatGlm\ChatGLM2-6B\model\chatglm2-6b-int4", trust_remote_code=True)
model = AutoModel.from_pretrained("D:\ChatGlm\ChatGLM2-6B\model\chatglm2-6b-int4", trust_remote_code=True).cuda()

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

tokenizer = AutoTokenizer.from_pretrained("D:\ChatGlm\ChatGLM2-6B\model\chatglm2-6b-int4", trust_remote_code=True)
model = AutoModel.from_pretrained("D:\ChatGlm\ChatGLM2-6B\model\chatglm2-6b-int4", trust_remote_code=True).float()

启动网页

打开命令行窗口,输入以下命令启动网页:

python web_demo.py

然后在浏览器中打开http://127.0.0.1:7860/即可使用。

ChatGLM-6B 开启局域网访问/开启公网访问

如果你的机器本身有公网,或者想在局域网内其他设备访问

你需要修改web_demo.pyweb_demo.pyold_web_demo2.py等文件中涉及网络部分的代码,一般在文件结尾附近。(你需要哪个文件就改那个文件,不需要全改)

一般类似于demo.queue().launch(share=False, inbrowser=True)
修改为demo.queue().launch(share=False, inbrowser=True, server_name='0.0.0.0', server_port=8070)
这将在所有可用的网络端口开放8070端口号,并且不启用Gradio 服务器转发。

ChatGLM-6B 修改本地网页端口号

因为默认是127.0.0.1:7860嘛,可能会和其他本地程序冲突

你需要修改web_demo.pyweb_demo.pyold_web_demo2.py等文件中涉及网络部分的代码,一般在文件结尾附近。(你需要哪个文件就改那个文件,不需要全改)

一般类似于demo.queue().launch(share=False, inbrowser=True)
修改为demo.queue().launch(share=False, inbrowser=True, port=7870)
这样端口就变成7870了。

Last modification:August 4, 2023
如果觉得我的文章对你有用,请随意赞赏