请确保你有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(可选)
下载程序文件
如果没有安装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.py
,web_demo.py
,old_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.py
,web_demo.py
,old_web_demo2.py
等文件中涉及网络部分的代码,一般在文件结尾附近。(你需要哪个文件就改那个文件,不需要全改)
一般类似于demo.queue().launch(share=False, inbrowser=True)
修改为demo.queue().launch(share=False, inbrowser=True, port=7870)
这样端口就变成7870了。