chatglm.cpp可以对ChatGLM系列的模型进行量化,满足在低性能的机器上进行推理,其使用的教程如下。
下载代码
代码语言:javascript复制git clone --recursive https://github.com/li-plus/chatglm.cpp.git && cd chatglm.cpp
量化模型
支持量化的模型包括:ChatGLM-6B、ChatGLM2-6B、CodeGeeX2及这些的量化模型。
-i
参数指定原模型,可以是HuggingFace上的模型,也可以是本地路径的模型。
-t <type>
:
q4_0
: 4-bit integer quantization with fp16 scales.q4_1
: 4-bit integer quantization with fp16 scales and minimum values.q5_0
: 5-bit integer quantization with fp16 scales.q5_1
: 5-bit integer quantization with fp16 scales and minimum values.q8_0
: 8-bit integer quantization with fp16 scales.f16
: half precision floating point weights without quantization.f32
: single precision floating point weights without quantization.
-l <lora_model_name_or_path>
可以合并 LoRA weights 到基础模型。
python3 chatglm_cpp/convert.py -i THUDM/chatglm-6b -t q4_0 -o chatglm-ggml.bin
运行模型
cpp工具运行
编译工具
代码语言:javascript复制cmake -B build
cmake --build build -j --config Release
运行
代码语言:javascript复制./build/bin/main -m chatglm-ggml.bin -p 你好
交互式,这种模式下,聊天记录会被带到下一次对话中。
代码语言:javascript复制./build/bin/main -m chatglm-ggml.bin -i
使用Python库
安装Python库。
注意: 当前目录下有一个目录名为chatglm_cpp,与import的依赖同名,后续使用这个包,都会出现冲突,需要把运行的脚本放到另外一个目录下运行,并注意加载的模型路径。或者在安装后把chatglm_cpp目录重命名,比如改为chatglm_cpp.origin
代码语言:javascript复制pip install -U chatglm-cpp
加载模型,这种回答不是流式的。
代码语言:javascript复制import chatglm_cpp
pipeline = chatglm_cpp.Pipeline("../chatglm-ggml.bin")
pipeline.chat(["你好"])
'你好