离线部署 ChatGLM3 大模型实现本地 AI 聊天
本文介绍如何在本地离线部署清华 ChatGLM3 大模型。需准备高性能显卡(显存 13G+)和内存(32G+)。通过 Git 克隆项目并下载模型文件,配置 Conda 虚拟环境及 Python 依赖。修改客户端配置文件指向本地模型路径后,使用 Streamlit 启动 Web 服务。支持对话、工具调用及代码解释器模式,确保数据隐私安全的同时享受 AIGC 功能。

本文介绍如何在本地离线部署清华 ChatGLM3 大模型。需准备高性能显卡(显存 13G+)和内存(32G+)。通过 Git 克隆项目并下载模型文件,配置 Conda 虚拟环境及 Python 依赖。修改客户端配置文件指向本地模型路径后,使用 Streamlit 启动 Web 服务。支持对话、工具调用及代码解释器模式,确保数据隐私安全的同时享受 AIGC 功能。

在特定的情况下,为了保证信息安全的同时还能享受到 AIGC 大模型带来的乐趣和功能,离线部署是一个真正可用的方案。本文将详细介绍如何在本地搭建清华大学的 ChatGLM3 大模型。
大模型对计算资源有较高要求。建议配置如下:
ChatGLM3 系列包含三种主要版本:
一般推荐使用 ChatGLM3-6B 普通模型进行日常使用,如果配置较高可尝试 32K 版本。
在开始之前,请确保系统已安装以下基础环境。如果未布置好,请参考相关 Ubuntu 22.04 驱动及 CUDA 安装指南。
由于模型文件较大,需要使用 Git LFS 进行下载管理。
git lfs install
建议使用 Python 3.10 版本。
conda create --name chatglm3 python=3.10
conda activate chatglm3
从官方 GitHub 仓库克隆代码。
git clone https://github.com/THUDM/ChatGLM3
cd ChatGLM3
默认项目中不包含模型权重,仅包含示例代码和接口。
模型文件约 11.6GB,建议提前下载以避免运行时网络波动影响体验。提供两个下载源:
方式一:HuggingFace
git clone https://huggingface.co/THUDM/chatglm3-6b
方式二:ModelScope (国内访问更稳定)
git clone https://www.modelscope.cn/ZhipuAI/chatglm3-6b.git
下载完成后,将模型文件夹移动到项目根目录或指定路径。
进入项目主目录,安装基础依赖包。建议使用国内镜像加速。
pip install -r requirements.txt -i https://mirror.sjtu.edu.cn/pypi/web/simple
如需验证安装情况,可使用:
pip list
pip show openai
为了运行包含工具调用和代码解释器的综合案例 (composite_demo),需额外安装依赖。
pip install -r composite_demo/requirements.txt -i https://mirror.sjtu.edu.cn/pypi/web/simple
演示中使用 Code Interpreter 还需要安装 Jupyter 内核:
pip install ipykernel -i https://mirror.sjtu.edu.cn/pypi/web/simple
ipython kernel install --name chatglm3 --user
找到 composite_demo/client.py 文件,修改模型加载路径为本地实际路径。
# 示例配置
model_path = "/path/to/local/chatglm3-6b"
确保路径指向正确的模型权重目录。
执行 Streamlit 命令启动 Web 服务。
streamlit run main.py
正常情况下,控制台会输出服务地址信息,浏览器打开该地址即可进入交互界面。
启动后,左侧可调整参数细节,右侧可选择不同的使用模式。
输入自然语言问题,模型会自动回复。ChatGLM3 对中文支持度很高,响应速度较快。
支持自定义工具调用。例如查询天气,需在 tool_registry.py 中定义工具函数。
@register_tool
def get_weather(city_name: Annotated[str, 'The name of the city to be queried', True]) -> str:
"""
Get the current weather for `city_name`
"""
if not isinstance(city_name, str):
raise TypeError("City name must be a string")
# ... 具体实现逻辑 ...
return str(ret)
允许模型生成并执行代码片段。若遇到执行异常,请检查 Jupyter 内核是否正确注册以及权限设置。
如果未修改 client.py 中的模型路径,程序可能无法加载模型。此外,如果网络环境较差,自动下载依赖可能会失败,建议手动安装所有 pip 依赖。
如果运行时报错 OOM (Out Of Memory),可以尝试开启量化推理(如 INT4),或在配置文件中减少并发请求数。
首次运行可能需要拉取部分动态库,建议保持网络通畅或使用内网镜像源。
通过上述步骤,即可完成 ChatGLM3-6B 的本地离线部署。该方案数据完全私有化,适合对隐私敏感的场景。相比在线 API,本地部署虽然初期配置稍繁琐,但长期来看成本可控且灵活度高。后续可通过 Web API 方式自行开发前端界面,进一步扩展应用场景。

微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 zeeklog
使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online
生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online
基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online
解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online
将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online