跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客我的书AI学习GitHub 精选镜像AI 生图工具UI配色美学关于
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
PythonAI算法

国产大语言模型 ChatGLM3 本地部署与功能扩展指南

国产大语言模型 ChatGLM3 的本地部署流程。内容涵盖环境配置、源码与模型下载、依赖安装及显存优化方案。重点讲解了如何通过量化技术降低显存占用,以及 Gradio 和 Streamlit 两种 Web 演示模式的启动方法。此外,文章还说明了如何搭建 OpenAI 兼容 API 服务,实现第三方应用集成,并介绍了通过自定义 Tool 扩展模型功能的方法。最后提供了常见 GPU 识别问题排查及 API 参数调优指南,帮助开发者快速构建本地大模型应用。

咸鱼开飞机发布于 2025/2/6更新于 2026/10/1885 浏览
国产大语言模型 ChatGLM3 本地部署与功能扩展指南

国产大语言模型 ChatGLM3 本地部署与功能扩展指南

1. 概述

ChatGLM3 是由智谱 AI 推出的一系列开源大语言模型。本文详细介绍如何在本地环境中搭建 ChatGLM3-6B 模型,配置运行环境,并通过 Web 界面、API 接口及自定义工具进行功能扩展。

2. 环境准备

2.1 硬件要求

  • 显存:建议 8GB 以上。若显存小于 8GB,建议使用量化版本(4-bit)。
  • CUDA:需安装对应版本的 NVIDIA CUDA Toolkit。
  • Python:推荐 Python 3.10 或更高版本。

2.2 软件依赖

使用 Anaconda 管理虚拟环境,确保依赖隔离。

# 创建名为 chatglm3-demo 的 conda 环境
conda create -n chatglm3-demo python=3.11
conda activate chatglm3-demo

3. 源码与模型下载

3.1 获取源码

从 GitHub 或 ModelScope 克隆项目代码。

git clone https://github.com/THUDM/ChatGLM3.git
cd ChatGLM3-main

3.2 下载模型权重

推荐使用国内镜像源 ModelScope 加速下载。

# 进入模型目录
mkdir -p THUDM/chatglm3-6b
# 使用 git lfs 拉取模型文件

注意:如果显卡显存有限(如 8GB 以下),建议下载 chatglm3-6b 基础版并配合量化使用。

4. 安装依赖

修改 requirements.txt 以指定明确的 PyTorch 版本,避免 CUDA 版本不匹配。

# requirements.txt 示例
torch>=2.0
torchvision==0.15.0
torchaudio==2.0.0
transformers==4.30.0

执行安装命令:

pip install -r requirements.txt

若遇到 mdtex2html 缺失错误,可单独安装:

pip install mdtex2html

5. 内存优化与量化

默认情况下,模型以 FP16 精度加载,约需 13GB 显存。若显存不足,可使用 4-bit 量化加载。

5.1 检查显存

使用 nvidia-smi 查看 GPU 状态。

5.2 量化加载代码

在启动脚本中修改模型加载方式:

from transformers import AutoModel, AutoTokenizer

model = AutoModel.from_pretrained("THUDM/chatglm3-6b", trust_remote_code=True).quantize(4).cuda()

量化会轻微影响生成质量,但能显著降低显存占用,且经测试 ChatGLM3-6B 在 4-bit 下仍能保持流畅对话。

6. 运行演示程序

项目提供了多种 Demo 模式,可根据需求选择。

6.1 Gradio Web Demo

基于 Gradio 的网页聊天界面。

cd basic_demo
python web_demo.py

启动后浏览器会自动打开或显示访问地址。若出现 JS 错误,建议尝试 Streamlit 版本。

6.2 Streamlit Web Demo

通常更流畅,支持更好的交互体验。

streamlit run web_demo2.py

6.3 OpenAI API 兼容服务

提供标准 OpenAI 格式的流式 API,便于集成第三方应用。

cd openai_api_demo
python openai_api.py

服务默认监听 localhost:8000。

7. 常见问题排查

7.1 GPU 未被识别

若启动后发现仅使用 CPU,请检查 PyTorch 是否安装了 CUDA 版本。

import torch
print(torch.cuda.is_available())
print(torch.version.cuda)

若返回 False,需卸载当前 torch 并重新安装带 cu 后缀的版本:

pip uninstall torch torchvision torchaudio
pip install torch==2.0.0+cu118 torchvision==0.15.0+cu118 torchaudio==2.0.0 --extra-index-url https://download.pytorch.org/whl/cu118

7.2 路径配置错误

确保模型文件位于 THUDM/chatglm3-6b 目录下,并在代码中正确设置 MODEL_PATH,避免重复下载。

8. 参数调优

在调用模型时,可通过以下参数控制生成效果:

  • temperature:控制生成的随机性。值越高越多样,值越低越确定。
  • top_p:核采样阈值,限制候选词范围。
  • repetition_penalty:重复惩罚,防止模型陷入循环。

9. 功能扩展:自定义 Tool

ChatGLM3 支持 Function Calling,允许模型调用外部工具查询实时信息(如天气、数据库等)。

9.1 注册工具

在 tool_registry.py 中定义函数,并注册到模型上下文。

# tool_registry.py 示例
def get_weather(city):
    # 实现查询逻辑
    return f"{city} 的天气晴朗"

register_tool(get_weather)

重启服务后,模型即可在对话中自动调用该工具。

10. API 接口说明

OpenAI 兼容接口支持 POST 请求至 /v1/chat/completions。

10.1 请求示例

{
  "model": "chatglm3-6b",
  "messages": [
    {"role": "user", "content": "你好"}
  ],
  "stream": false,
  "max_tokens": 100
}

10.2 响应结构

返回包含 choices 字段,其中 message.content 为模型生成的文本。若开启 stream=true,则通过 SSE 流式返回数据块,直到 finish_reason 为 stop。

11. 总结

本文涵盖了 ChatGLM3 从环境搭建、显存优化、Demo 运行到 API 集成的完整流程。通过量化技术可在消费级显卡上运行大模型,结合 Function Calling 能力可进一步拓展其在垂直场景的应用。开发者可根据实际需求调整参数量化级别与推理策略。

目录

  1. 国产大语言模型 ChatGLM3 本地部署与功能扩展指南
  2. 1. 概述
  3. 2. 环境准备
  4. 2.1 硬件要求
  5. 2.2 软件依赖
  6. 创建名为 chatglm3-demo 的 conda 环境
  7. 3. 源码与模型下载
  8. 3.1 获取源码
  9. 3.2 下载模型权重
  10. 进入模型目录
  11. 使用 git lfs 拉取模型文件
  12. 4. 安装依赖
  13. requirements.txt 示例
  14. 5. 内存优化与量化
  15. 5.1 检查显存
  16. 5.2 量化加载代码
  17. 6. 运行演示程序
  18. 6.1 Gradio Web Demo
  19. 6.2 Streamlit Web Demo
  20. 6.3 OpenAI API 兼容服务
  21. 7. 常见问题排查
  22. 7.1 GPU 未被识别
  23. 7.2 路径配置错误
  24. 8. 参数调优
  25. 9. 功能扩展:自定义 Tool
  26. 9.1 注册工具
  27. tool_registry.py 示例
  28. 10. API 接口说明
  29. 10.1 请求示例
  30. 10.2 响应结构
  31. 11. 总结

更多推荐文章

查看全部
  • Web 前端基础:HTML 核心语法与常用标签
  • C++ STL 关联容器 set 与 map 使用详解
  • C++ 基础实战:从循环控制到算法入门
  • 2026 国内 AI 编程套餐横评:选型指南与额度机制解析
  • Mac mini M4 部署 OpenClaw + Ollama 本地大模型接入飞书机器人
  • 前端无障碍性实践:确保网站对所有人可用
  • OpenClaw 在 Windows 与 Ubuntu 下的安装配置指南
  • 2025 大模型行业现状与方向调研:LLM、MLLM 及 AIGC 赛道分析
  • Microi 吾码与 JavaScript 技术整合及应用实践
  • 企业大模型集成私有数据构建知识库实战指南
  • Codex 快速入门指南:工程级 AI 编程代理
  • Python 字符串方法详解(上)
  • MySQL 数据库 Windows 免安装版配置与使用教程
  • 电力行业智能客服案例:知识图谱与大模型驱动方案解析
  • Spring Web 模块核心解析与 RESTful API 实战
  • Stable Diffusion 底模 VAE 推荐及生成质量优化
  • 利用 AIGC 与 Photoshop 快速生成 Spine 2D 骨骼动画拆件 PSD
  • Java 基础入门 (1): Spring Web MVC 核心解析
  • MATLAB A*路径规划算法仿真与改进实现
  • CISP 注册信息安全专业人员认证:体系、价值与备考指南

相关免费在线工具

  • 加密/解密文本

    使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online

  • RSA密钥对生成器

    生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online

  • Mermaid 预览与可视化编辑

    基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online

  • 随机西班牙地址生成器

    随机生成西班牙地址(支持马德里、加泰罗尼亚、安达卢西亚、瓦伦西亚筛选),支持数量快捷选择、显示全部与下载。 在线工具,随机西班牙地址生成器在线工具,online

  • Gemini 图片去水印

    基于开源反向 Alpha 混合算法去除 Gemini/Nano Banana 图片水印,支持批量处理与下载。 在线工具,Gemini 图片去水印在线工具,online

  • curl 转代码

    解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online