概述
本文使用chatglm.cpp对中文大语言模型(LLM)进行量化与推理,支持ChatGLM2-6B、Baichuan2-13B-Chat等模型在CPU环境16G内存的个人电脑上部署,实现类似ChatGPT的聊天功能。支持的操作系统包括Windows、Mac OS、Linux等。
其中,量化过程需要临时使用一台内存较大的服务器。4bit量化后的模型较小(Baichuan2-13B量化后约8G),可在16G内存的个人电脑上部署。过程中还需要从github下载代码,从huggingface下载模型。
本文使用的chatglm.cpp版本为0.2.6,后续版本的命令可能有变化,请以readme为准。
接下来先介绍相关背景,而后以Baichuan2-13B-Chat为例介绍部署过程。
背景
大语言模型(LLM)是计算机领域今年的一大研究热点。一些AI公司相继推出了开源的中文LLM,使广大用户得以自由体验LLM的强大功能。
然而,LLM的部署对硬件资源有较高要求。对于不愿花钱租用服务器的用户而言,如何在个人电脑上进行本地化部署,成为了一大难题。
以16G内存、英伟达显卡4G显存的家用电脑为例。目前效果较好的中文LLM,参数量至少为6B或7B规模,例如ChatGLM2-6B与Baichuan2-7B-Chat。这样规模的模型无法完整放入16G内存进行推理,只能offload到硬盘,速度极慢,且对硬盘有损伤。若使用4bit量化的模型,则无法完整放入4G显存运行,目前也没有现成的代码能将其offload到内存。因此,只能考虑完全在CPU内存环境运行4bit量化模型。
对于ChatGLM2,其量化方式支持用CPU版PyTorch运行int4版本的模型,但速度较慢。对于Baichuan2,其提供的int4版本采用bitsandbytes库进行量化,目前没有找到在CPU环境运行的方法。对于一般用户而言,自行编写相关代码有很大难度。
所幸,基于C语言的GGML张量库提供了在CPU环境高速运行量化版模型的机会,而基于GGML的开源代码库chatglm.cpp提供了对ChatGLM2-6B、Baichuan2-13B-Chat等模型的4bit量化支持。对于Baichuan2模型,虽然暂不支持7B版本,但13B量化后也只有约8G,对于16G内存的个人电脑而言完全可以接受。
利用chatglm.cpp,用户可在16G内存的个人电脑上部署ChatGLM2-6B、Baichuan2-13B-Chat等中文LLM推理,实现类似ChatGPT的聊天功能。下文将以Baichuan2-13B-Chat模型为例,介绍如何用chatglm.cpp进行本地部署。ChatGLM2-6B的部署方式也是基本相同的,因此不再赘述。
步骤1-量化
首先,需要对Baichuan2-13B-Chat模型进行4bit量化。不能直接使用百川提供的int4版本。如果没有现成的GGML版4bit量化模型,就只能自己做量化。
即使不想采用量化,为了兼容chatglm.cpp,也需要将原模型转为GGML版本。
量化前的模型约28G,量化后约8G,因此需要临时使用一台内存较大的服务器。
环境与文件准备
在服务器上安装Python环境,例如使用Anaconda,安装过程请参考其他文章。本文使用的Python版本为3.9。
从Github上克隆chatglm.cpp,方法参考readme,即运行以下命令:
git clone --recursive https://github.com/li-plus/chatglm.cpp.git
如果服务器能连接huggingface,就不需要自己下载模型。否则,就需要自行从huggingface下载Baichuan2-13B-Chat模型,只能是以下版本:
https://huggingface.co/baichuan-inc/Baichuan2-13B-Chat/tree/main
下载以上链接的所有文件即可。
执行量化
将前述文件全部放至大内存服务器,然后就可以生成4bit量化的GGML版模型了。
进入 chatglm.cpp
目录,参考readme执行以下命令:
python chatglm_cpp/convert.py -i baichuan-inc/Baichuan2-13B-Chat -t q4_0 -o baichuan2-13b-chat-ggml-int4.bin
如果是自行下载的模型,就将 baichuan-inc/Baichuan2-13B-Chat
替换为模型所在的目录。
提示有缺的库就安装一下。其中pytorch要参考官网的安装方式。
最终得到的 baichuan2-13b-chat-ggml-int4.bin
就是本地化部署所需的模型文件,文件名称可以任意修改。
步骤2-本地部署
本地部署需要至少16G内存,不需要使用GPU。可以在配置较好的个人电脑上进行部署。
环境与文件准备
将上一步得到的模型文件保存到本地。
安装Python环境,建议使用Anaconda。本文使用的Python版本为3.9。
chatglm.cpp是基于GGML的,不需要安装PyTorch。
安装chatglm-cpp库,过程中需要用到 cmake
和 g++
。MAC电脑需要先自行配置安装这些软件,然后运行以下命令:
pip install -U chatglm-cpp
Windows和Linux可以用相同的方法,但在Windows上容易报错。一种替代的方法是直接下载whl安装包:
https://github.com/cczhong11/chatglm.cpp/actions/runs/6161193495
在已登录Github的状态下,单击下方 linux-wheels
或 windows-wheels
即可下载对应操作系统的whl安装包。解压后可以看到多个whl文件,要选择对应的Python版本,例如 cp39
对应的是Python 3.9。
之后执行以下命令安装(Windows系统):
pip install chatglm_cpp-0.2.6-cp39-cp39-win_amd64.whl
这样就不需要安装 cmake
和 g++
了。
chatglm.cpp提供的web demo可以实现类似ChatGPT的聊天功能,为此还需安装gradio:
pip install gradio
如果网速过慢,可以使用镜像
pip install pytest -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com
web demo的代码在chatglm.cpp的 examples/web_demo.py
,将这个代码单独拿出来使用即可。
运行web demo
将 web_demo.py
和模型文件放在同一目录下,执行:
python web_demo.py -m baichuan2-13b-chat-ggml-int4.bin --top_k 5 --top_p 0.85 --temp 0.3 --repeat_penalty 1.05
在弹出的网页中可以进行聊天对话。该过程不需要连接互联网。
如果希望局域网的其他设备访问该网页,则需要修改 web_demo.py
。
先在开头添加以下代码:
import os
os.environ['no_proxy']='localhost,127.0.0.1,::1'
再修改最后一行为:
demo.queue().launch(server_name='0.0.0.0', server_port=7860)
这样启动后,即可在其他设备上用浏览器进行访问。端口号可以自行定义。
以上就是用16G内存+CPU本地部署ChatGLM2/Baichuan2推理的方法介绍,希望能帮助到有相关需求的人。
标签:Windows,ChatGLM2,16G,内存,chatglm,cpp,量化,Baichuan2,模型 From: https://www.cnblogs.com/hjhhsy120/p/17714893.html