赞
踩
前面两章分别有讲到基于MacBook Pro M1芯片运行chatglm2-6b大模型和如何在本地部署chatGLM3,但是如果你的Mac的配置比较低,也没有足够的内存,然后还想运行大模型的话,那么接下来就给大家带来 基于ChatGLM.cpp实现低成本对ChatGLM3-6B的量化加速。
ChatGLM-6B、ChatGLM2-6B、ChatGLM3-6B 和更多 LLM 的 C++ 实现,可在 MacBook 上进行实时聊天,是通过基于c++来实现的可以跑在Mac甚至windows环境下,特点如下:
同时支持的如下硬件平台和模型:
详细介绍参考官方README介绍。
cd /Users/joseph.wang/llm
git clone --recursive https://github.com/li-plus/chatglm.cpp.git
cd chatglm.cpp
安装加载和量化拥模型所需的软件包
conda create -n ChatGLM3 python=3.11
conda activate chatglm2vi m
python3 -m pip install -U pip
python3 -m pip install torch tabulate tqdm transformers accelerate sentencepiece
使用convert.py
转化ChatGLM3为量化的GGML格式,如将fp16原始模型转换为q4_0(量化int4) GGML模型,运行命令如下:
python3 chatglm_cpp/convert.py -i ../chatglm3-6b/ -t q8_0 -o chatglm3-ggml-q8.bin
关于转换的具体参数:
cd /Users/joseph.wang/llm/chatglm.cpp
cmake -B build
cmake --build build -j --config Release
#单句提问
./build/bin/main -m chatglm3-ggml-q8.bin -p 你好
#交互提问
./build/bin/main -m chatglm3-ggml-q8.bin -i
Function调用
Code 解释器
Python 绑定提供了类似于原始 Hugging Face ChatGLM(2)-6B 的高级聊天和stream_chat 接口。
#苹果芯片
CMAKE_ARGS="-DGGML_METAL=ON" pip install -U chatglm-cpp
或者
# install from the latest source hosted on GitHub
pip install git+https://github.com/li-plus/chatglm.cpp.git@main
# or install from your local source after git cloning the repo
pip install .
cd ~/llm/chatglm.cpp/examples
命令行键入python3
进入python环境,输入如下命令
import chatglm_cpp
pipeline = chatglm_cpp.Pipeline("../chatglm3-ggml-q8.bin")
pipeline.chat([chatglm_cpp.ChatMessage(role="user", content="hi,nici to meet you")])
在stream中聊天,请运行以下 Python 示例
cd ~/llm/chatglm.cpp/examples
python3 cli_demo.py -m ../chatglm3-ggml-q8.bin -i
启动一个web端在浏览器中展示
更高级的web展示
pip3 install streamlit jupyter_client ipython ipykernel
ipython kernel install --name chatglm3-demo --user
修改chatglm3_demo.py
脚本中的model path
...
...
MODEL_PATH = Path(__file__).resolve().parent.parent / "chatglm3-ggml-q8.bin"
...
...
streamlit run chatglm3_demo.py
聊天模式
工具调用
画爱心
整体用下来,感觉和如何在本地部署chatGLM3的效果是一样的,速度上感觉还会更快一些,更重要的是资源使用很划算的,机器的内存也不会爆。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。