快速上手chatglm.cpp模型量化工具

2024-03-13 12:30:52 浏览数 (2)

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 到基础模型。

代码语言:javascript复制
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(["你好"])
'你好


	

0 人点赞