ChatGLM-6B 使用、微调与训练指南
1. 模型概述
ChatGLM-6B 是由清华大学知识工程实验室(KEG)和智谱 AI 公司于 2023 年共同训练的开源语言模型。该模型基于 GLM(General Language Model)架构,拥有 62 亿参数。相较于需要万卡集群训练的 ChatGPT,ChatGLM-6B 经过优化,可以在消费级显卡上运行(建议显存 16GB-24GB,最低 13GB),极大地降低了大模型的使用门槛。
1.1 架构特点
GLM 架构旨在统一三种主流的预训练模型模式:
- GPT:单向注意力机制,适合生成任务,但无法利用下文信息。
- BERT:双向注意力机制,在自然语言理解(NLU)上表现优异,但不适合生成任务。
- T5:编码器双向、解码器单向,兼顾 NLU 和生成,但参数量需求较大。
ChatGLM-6B 通过掩码自回归预测(Masked Autoregressive Prediction)的方式,结合了上述优势,实现了高效的预训练与微调。
2. 环境准备
在使用 ChatGLM-6B 之前,需要配置好 Python 环境和相关依赖库。推荐使用 CUDA 11.x 或更高版本的 GPU 加速环境。
2.1 依赖安装
pip install transformers>=4.28.0
pip install sentencepiece
pip install cpm_kernels
pip install gradio
pip install mdtex2html
2.2 硬件要求
- 推理:FP16 精度下需约 13GB 显存;INT8 量化后可降至 7GB 左右。
- 微调:建议使用 P-Tuning V2 方法,最低 7GB 显存,推荐 16GB+。
3. 模型推理
3.1 基础对话
加载预训练模型并进行简单的问答交互。
from transformers import AutoTokenizer, AutoModel
import torch
# 加载分词器和模型
tokenizer = AutoTokenizer.from_pretrained("THUDM/chatglm-6b", trust_remote_code=True)
model = AutoModel.from_pretrained("THUDM/chatglm-6b", trust_remote_code=True).half().cuda()
# 创建对话历史
history = []
response, history = model.chat(tokenizer, "你好", history=history)
print(response)
# 多轮对话
response, history = model.chat(tokenizer, "晚上睡不着应该怎么办", history=history)
print(response)
3.2 流式输出
为了提升用户体验,支持流式输出(Streaming Output)。
for response, history model.stream_chat(tokenizer, , history=[]):
(response)


