本地私有化部署 ChatGLM-6B 大模型指南
ChatGLM-6B 是一款开源的中英双语对话语言模型,基于 Transformer 架构,具有 62 亿参数。如何在本地私有化部署该模型,涵盖硬件环境要求、CUDA 及 Conda 环境配置、PyTorch 安装、模型代码获取与运行脚本编写。内容还包括针对显存溢出的解决方案及推理速度优化技巧,旨在帮助用户在消费级显卡上实现大模型的本地化应用,无需依赖云端 API,保障数据隐私并降低使用成本。

ChatGLM-6B 是一款开源的中英双语对话语言模型,基于 Transformer 架构,具有 62 亿参数。如何在本地私有化部署该模型,涵盖硬件环境要求、CUDA 及 Conda 环境配置、PyTorch 安装、模型代码获取与运行脚本编写。内容还包括针对显存溢出的解决方案及推理速度优化技巧,旨在帮助用户在消费级显卡上实现大模型的本地化应用,无需依赖云端 API,保障数据隐私并降低使用成本。

大语言模型(Large Language Model, LLM)是一种人工智能模型,旨在理解和生成人类语言。它们在海量文本数据上进行训练,可以执行广泛的任务,包括文本总结、翻译、情感分析等。LLM 的特点是规模庞大,包含数十亿参数,帮助它们学习语言数据中的复杂模式。这些模型通常基于深度学习架构,如 Transformer,这有助于它们在各种自然语言处理(NLP)任务上取得令人印象深刻的表现。
从 2017 年 Google 提出 Transformer 后,各种基于 Transformer 的变形结构被提出和使用。主要分类两类:一种是基于 Encoder,最具代表的 BERT 模型;一种是基于 Decoder,最具代表的 OpenAI 提出的 GPT 系列。目前 GPT 在 LLM 领域处于领先地位,ChatGPT 的问世更是推动了这一趋势。
CPU(中央处理器)是计算机的主要处理器,负责执行指令和控制操作,适合通用计算任务。GPU(图形处理器)专门设计用于处理图形和图像,拥有数百甚至数千个小型处理单元,可同时处理多个任务,适合加速图形、视频编辑和机器学习等大规模并行计算任务。
GPU 对 AI 深度学习模型加速的原因包括:
对于大模型部署,推荐使用 NVIDIA GPU,因为 CUDA 生态最完善。
大模型的一个显著特点是参数量大,需要高规格显存配置。例如,ChatGLM-6B 在 INT4 量化级别下最低只需 6GB 显存即可运行。如果显存不足,可以考虑使用 CPU 推理(需要约 32GB 内存),但速度会显著变慢。
如何确认 PC 是否支持 GPU:
CUDA 和 cuDNN 的安装教程较多,关键是要注意版本匹配。安装完成后,可通过 nvidia-smi 命令查看 CUDA 版本。如果 nvcc 和 nvidia-smi 显示的版本不一致,请参考官方文档进行修复。
建议先建立一个独立的 Conda 环境,避免依赖冲突。
conda create -n chatglm_env python=3.9
conda activate chatglm_env
根据自己机器的配置选择和显卡对应的 PyTorch 版本。例如,CUDA 11.7 版本:
conda install pytorch==1.13.1 torchvision==0.14.1 torchaudio==0.13.1 pytorch-cuda=11.7 -c pytorch -c nvidia
验证 CUDA 和 PyTorch 是否可用:
import torch
print(torch.__version__)
print(torch.cuda.is_available())
克隆源码后,安装 requirements.txt 中的包:
pip install -r requirements.txt
通过 Git 克隆 ChatGLM-6B 的官方仓库:
git clone https://github.com/THUDM/ChatGLM-6B.git
cd ChatGLM-6B
环境配置好后,可以在本地运行 ChatGLM。以下是一个支持命令行交互的示例脚本:
# -*- coding: utf-8 -*-
"""
-------------------------------------------------
Description: 本地调用 chatGLM,支持命令行交互
-------------------------------------------------
"""
import fire
from transformers import AutoTokenizer, AutoModel
tokenizer = AutoTokenizer.from_pretrained("THUDM/chatglm-6b", trust_remote_code=True)
# 使用 GPU 跑 4 位量化模型
model = AutoModel.from_pretrained("THUDM/chatglm-6b-int4", trust_remote_code=True).half().cuda()
model = model.eval()
def infer():
while True:
request = input("你好,我是 chatglm-6b >>> ")
history = []
while not request:
print('Prompt should not be empty!')
request = input("Model prompt >>> ")
response, _history = model.chat(tokenizer, request, history=history)
history = _history
print('\033[1;31m{}\033[0m'.format(request) + '\033[1;33m{}\033[0m'.format(response))
if __name__ == '__main__':
fire.Fire(infer)
运行上述脚本后,即可在终端与 ChatGLM 进行对话。首次运行时会自动下载模型权重文件,请耐心等待。
如果在运行过程中遇到 CUDA out of memory 错误,可以尝试以下方法:
chatglm-6b-int4)。.half())或整型量化(.int4())可以显著减少显存占用并提升推理速度。随着技术发展,官方可能会发布新的模型版本或修复补丁。建议定期检查 GitHub 仓库的 Release 页面,更新代码和依赖。
本地部署 ChatGLM-6B 可以让开发者在保护数据隐私的前提下体验大模型的能力。通过合理的硬件配置和环境设置,即使是消费级显卡也能流畅运行。希望本指南能帮助你顺利完成部署,开启大模型探索之旅。

微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 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