Mac M2之ChatGLM3-6B大模型私有化部署
环境与背景
在特定的情况下,要保证信息安全的同时还能享受到AIGC大模型带来的乐趣和功能,那么,私有化部署就能帮助到你,最起码,它是一个真正可用的方案。私有化部署指的是将AI应用部署在企业内部的服务器上,而非云端。这种部署方式可以在保证数据安全的同时,提高企业对于自身数据资产的控制权。
简单描述下本地电脑的配置:
- 处理器:Apple M2 Pro
- 内存:32 GB
- 系统:14.3.1 (23D60)
本次只是初步评估ChatGLM3-6B的效果,尽可能在已有本地设备的情况下进行低成本本地模型部署,如果要更好的效果,还是上专业的硬件设备。
MAC部署
ChatGLM3 下载
1 | git clone https://github.com/THUDM/ChatGLM3 |
但是,默认里面是没有模型的,只有自带的简单的聊天项目以及相关的接口示例项目,还得继续下载模型。
ChatGLM3-6B 模型下载
当然,如果你自己不下载这些模型,这些模型就会在运行的时候自动下载(网络不好的话会影响使用体验,所以,建议提前下载)
1 | git lfs install |
项目配置和部署
把下载的服务直接放到需要运行的地方,然后执行python环境管理
1 | conda create --name chatglm3 python=3.10 |
然后,进入到主项目中,开始配置一些环境
1 | cd ChatGLM3 |
可以看到,实际上我们可以运行7种案例。
- 基础例子(cli_demo , web_demo_streamlit )
- 综合例子(聊天,工具,代码解释)
- 模型微调
- 类似于langchain的案例
- openai接口的案例
- TensorRT-LLM推理部署
- 工具调用
目前,只有第二个的综合例子,是比较有趣的,就以它为案例进行配置修改。
composite_demo例子
看到,这个demo下还有requirements.txt
文件,我们把他给安装了
1 | pip install -r requirements.txt -i https://mirror.sjtu.edu.cn/pypi/web/simple |
演示中使用 Code Interpreter
还需要安装 Jupyter
内核:
1 | pip install ipykernel -i https://mirror.sjtu.edu.cn/pypi/web/simple |
接着修改client.py里面的配置信息
1 | // 修改 MODEL_PATH , chatglm3-6b 绝对路径 |
对于搭载了Apple Silicon
或者AMD GPU
的 Mac,可以使用MPS后端来在GPU上运行ChatGLM3-6B
。需要参考Apple的官方说明 安装 PyTorch-Nightly
(正确的版本号应该是2.x.x.dev2023xxxx,而不是 2.x.x)。
1 | pip uninstall torch torchvision torchaudio |
使用命令
1 | pip list | grep torch |
看到类似这样的带dev的就可以下一步了
1 | torch 2.3.0.dev20231224 |
将client.py
中device_map = "auto"
改为device_map = "mps"
136-140行
1 | self.model = AutoModel.from_pretrained( |
150行
1 | self.model = AutoModel.from_pretrained(MODEL_PATH, trust_remote_code=True, device_map="mps").eval() |
然后,执行以下命令启动服务
1 | streamlit run main.py |
效果展示
这回答速度真绝,非常的快。
对话模式
输入你是谁,它就输自动的输出信息,速度还挺快。而控制台也会显示你输入的信息以及返回的信息。
工具模式
工具模式,需要自己先定义工具,我这边没有定义,有兴趣的可以整一下。
以下是自带的工具进行的演示:我调用了一个查询天气的工具(tool_registry.py) 文件可以看到 get_weather的代码
代码解释器模式
总结
一开始的时候,没有按照Apple的官方说明安装PyTorch-Nightly
,并配置MPS
,结果效果喜人,一直在推理。后来配置后,感觉速度不亚于chatgpt3.5,答复效果也非常好。下一步开始使用chatGLM搭建私有知识库。