chatglm.cpp是使用cpu驱动,在加上量化以后降低参数精度,可以让cpu配置不够好的情况下也能使用ChatGLM3-6B。由于本人对于C++和Python并不熟悉,可能在文章会有一些错误理解,请读者谅解。
ChatCLM3的GitHub官方链接:
GitHub - THUDM/ChatGLM3: ChatGLM3 series: Open Bilingual Chat LLMs | 开源双语对话语言模型
chatglm.cpp量化模型的GitHub官方链接:
GitHub - li-plus/chatglm.cpp:ChatGLM-6B & ChatGLM2-6B & ChatGLM3 & GLM4 的C++实现
首先git环境和python环境肯定是要提前准备好的,然后进入到Windows的命令行模式,cd到我们要保存该项目的目录下,后文所指的chatglm安装所在的绝对路径皆是该路径。
1.将ChatGLM.cpp存储库克隆到本地计算机中:
git clone --recursive https://github.com/li-plus/chatglm.cpp.git && cd chatglm.cpp
2.量化模型
过程略长且麻烦,想要逃课可以直接看下一个标题
安装用于加载和量化 Hugging Face 模型的必要软件包:
python -m pip install -U pip
在执行这个命令的时候可能会报错:
Cannot uninstall TBB 0.2 It is a distutils installed project and thus we cannot accurately det
这个问题是使用无法卸载TBB,具体缘由应该是原先安装python环境使用的是conda,现在使用pip安装对于TBB有冲突,无法卸载。
解决方式:
1.手动删除Python路径下\Lib\site-packages包下的llvmlite文件
2.在执行命令 conda uninstall TBB
安装用于加载和量化 Hugging Face 模型的必要软件包:
python -m pip install torch tabulate tqdm transformers accelerate sentencepiece
在执行这个命令的时候可能会报错:
AttributeError: ‘ChatGLMTokenizer‘ object has no attribute ‘sp_tokenizer‘
导致该问题的主要原因是transformers版本的问题,原python环境下的transformers版本过高,满足需求的transformers<4.34
解决方式:
pip uninstall transformers
pip install transformers==4.33.1 -i https://pypi.tuna.tsinghua.edu.cn/simple/ --trusted-host pypi.douban.com
用于将 ChatGLM-6B 转换为量化的 GGML 格式。例如,要将 fp16 原始模型转换为q4_0(量化 int4)GGML 模型,请运行:chatglm_cpp/convert.py
python chatglm_cpp/convert.py -i THUDM/chatglm-6b -t q4_0 -o models/chatglm-ggml.bin
可以通过指定以下内容自由尝试以下任何量化类型:-t <type>
这里需要科学上网才能连接到Hugging Face的官网才可以完成量化模型的转换和下载,且该过程可能会有些长。
量化模型逃课
如果不想完成第二步量化模型的过程或者无法科学上网,我将量化后的模型上传到了百度网盘分享出来,下载后存放到models目录下,可以直接拿来使用。
链接:https://pan.baidu.com/s/17fH053Q-tfFK4nPDyYW0nw?pwd=n6yx
提取码:n6yx
3. 构建和运行
使用 CMake 编译项目:
cmake -B build
cmake --build build -j --config Release
现在,您可以通过运行以下命令与量化的ChatGLM-6B模型聊天:
.\build\bin\Release\main -m models\chatglm-ggml.bin -p 想要提问的问题
若要在交互模式下运行模型,请添加标志-i
.\build\bin\Release\main -m models\chatglm-ggml.bin -i
在交互模式下,聊天记录将作为下一轮对话的背景。
4.使用streamlit来通过可视化的网站启动ChatGLM
首先需要下载streamlit
pip install streamlit
下载运行chatglm_cpp的所需环境
pip install .
修改examples目录下的chatglm3_demo.py第20行模型文件位置
修改前:
MODEL_PATH = Path(__file__).resolve().parent.parent / "models/chatglm3-ggml.bin"
修改后:
MODEL_PATH = Path(__file__).resolve().parent.parent / "chatglm安装所在的绝对路径\models\chatglm-ggml.bin"
不修改的话,在后续启动的时候会报错
huggingface_hub.errors.HFValidationError: Repo id must use alphanumeric chars or '-', '_', '.', '--' and '..' are forbidden, '-' and '.' cannot start or end the name, max length is 96: 'C:\AI\chatglm.cpp\models\chatglm3-ggml.bin'
最后需要chatglm.cpp的安装目录下原有的chatglm_cpp文件夹的名称修改成chatglmcpp或者其他的,不然会报错: ModuleNotFoundError: No module named 'chatglm_cpp'
启动项目
python -m streamlit run examples\chatglm3_demo.py
启动后的就可以得到一个可视化的网站了
5.快速启动
桌面新建文本文件写入:
conda env list && activate glm3cpp && python -m streamlit run 安装的绝对路径\chatglm.cpp\examples\chatglm3_demo.py
另存为将保存类型的文本文档修改为所有文件,文件名改为run.bat
以后想要运行这个网页版chatglm可以直接双击这个文件