搭建单cpu设备可用的ChatGLM3-6b量化模型本地的AI大语言模型api(OpenaiAPI)

zsanjin 发布于 2024-01-21 162 次阅读


AI 摘要

这个项目是为了搭建单CPU设备可用的ChatGLM3-6B量化模型本地的AI大语言模型API(OpenAI API)。它可以在不需要高端N卡的情况下运行语言模型API,适用范围广泛。虽然仅使用CPU会有点慢,例如Intel 12100f每秒大约能处理3个tokens。该项目使用的是API,并与OpenAI API的格式兼容。运行设备需要使用Linux或者Win10以上的系统,以及Python环境3.8。使用时,需要先建立Python 3.8的虚拟环境,并安装所需的运行库。然后可以测试运行设置模型,启动API并在指定端口上运行。

本项目不需要高端N卡,仅运行语言模型api,适用性广泛,只不过纯cpu跑有点慢,Intel 12100f每秒大概3 tokens。用的方式是api,与openai api的格式兼容。还需要准确前端能够支持openai的项目,可用从这里看相关适用项目:

oneapi.zsanjin.de的使用方法以及使用场景介绍(sanjin-api说明文档)

运行设备用Linux或者win10以上的系统,以及python环境3.8

可以先从python.org上下载你使用的系统可用最新的python。

下载ChatGLM-6B量化模型:https://www.modelscope.cn/models/tiansz/chatglm3-6b-ggml/files下载:chatglm3-ggml.bin

下载chatglm_cpp离线包,https://github.com/li-plus/chatglm.cpp/releases/tag/v0.3.0选择你的系统,并且选择python环境38的,比如Windows的python38适用的chatglm_cpp:chatglm_cpp-0.3.0-cp38-cp38-win_amd64.whl

1、建立python38虚拟环境

按你习惯的路径下运行终端命令建立python38虚拟环境:

pip install virtualenv virtualenv chat6b

现在生成了一个文件夹,即chat6b目录就是你的工作环境,将之前下载好的chatglm3-ggml.bin文件放到这个目录下面

另外退出环境:

deactivate

如果你用的是Anaconda建立虚拟环境,每次进入终端都会带(base)默认环境,可以使用以下命令关闭自动激活base环境:

conda config --set auto_activate_base false

2、激活进入虚拟环境

cmd命令:

cd chat6b
Scripts\activate.bat

Linux命令:

cd chat6b
source chat6b/bin/activate

命令行窗口的提示符前面出现了一个括号,括号内显示(chat6b)。这意味着你已经激活了虚拟环境。虚拟环境对于系统操作没有任何影响,而且能避免各个项目环境冲突问题。它只针对Python的运行环境有效。当你激活了虚拟环境后,无论你在任何目录下进行Python相关的操作,你调用的都是虚拟环境内的Python和pip运行库管理工具。

3、安装所需要的运行库

把之前下的chatglm_cpp-0.3.0-cp38-cp38-win_amd64.whl放进chat6b目录下,在chat6b目录下的已激活的虚拟环境中使用python命令:

pip install chatglm_cpp-0.3.0-cp38-cp38-win_amd64.whl
pip install 'chatglm-cpp[api]'

4、测试运行

设置模型,启动api并在指定端口上运行,我这里用8101端口,在激活的虚拟环境下:

set MODEL=chatglm3-ggml.bin
uvicorn chatglm_cpp.openai_api:app --host 0.0.0.0 --port 8101

显示类似“INFO: Uvicorn running on http://0.0.0.0:8101 (Press CTRL+C to quit)”即说明正常启动了

你可以在前端运用这个api,后端窗口查看响应

5、windows上使用批处理文件快速启动:

名为chatapi.bat,放在chat6b文件目录下,内容:

set MODEL=%~dp0chatglm3-ggml.bin
call %~dp0/Scripts/activate.bat
cd %~dp0
uvicorn chatglm_cpp.openai_api:app --host 0.0.0.0 --port 8101

Linux配置systemd服务,用户user那里我用www用户,测试中你可以用root用户:

nano /etc/systemd/system/chatapi.service

修改下面配置然后复制进去:

[Unit]
Description=Chat API service
After=network.target

[Service]
Type=simple
User=www#改为你的用户名,比如root
WorkingDirectory=/path/to/chat6b#改为你的工作目录
Environment=MODEL=/path/to/chat6b/chatglm3-ggml.bin#改为你的工作目录
ExecStart=/path/to/chat6b/bin/uvicorn chatglm_cpp.openai_api:app --host 0.0.0.0 --port 8101#改为你的工作目录
Restart=on-failure

[Install]
WantedBy=multi-user.target

重载服务文件、开机启动和启动这个服务

sudo systemctl daemon-reload
sudo systemctl enable chatapi
sudo systemctl start chatapi

你可以使用以下命令来检查服务的状态和日志:

sudo systemctl status chatapi
sudo journalctl -u chatapi

 

 

现在就可以在本地电脑使用api服务👍,建议搭配oneapi使用,但是此模型也只能娱乐,本站提供openai官方的api中转,支持gpt4🎉欢迎合作🤝:oneapi.zsanjin.de的使用方法以及使用场景介绍(sanjin-api说明文档)

感谢请我吃辣条
感谢请我吃泡面
感谢请我喝奶茶