GLM 智谱 AI 笔记¶
GLM 智谱 AI
关于智谱 AI (Zhipu AI) ChatGLM 系列模型的介绍与实践笔记。
智谱 AI (Zhipu AI) ChatGLM 是智谱 AI 推出的基于 ChatGLM 架构的大型语言模型 (LLM) 系列。 该模型在多个任务上表现出色,包括文本生成、文本分类、问答等。
在 Ubuntu 服务器安装 GLM 模型并集成到 VS Code 中¶
要在 VS Code 中使用本地部署的 GLM 模型作为编程助手,最便捷的方案是采用 Ollama (服务端) + Continue (VS Code 插件) 的组合。
1. 服务端:在 Ubuntu 上部署 GLM¶
使用 Ollama 来运行 GLM-4 (智谱最新的开源模型)。
1.1 安装 Ollama¶
curl -fsSL https://ollama.com/install.sh | sh
1.2 下载并运行 GLM-4¶
GLM-4-9B 是目前的推荐版本,性能强劲且适合消费级显卡 (需要约 6GB+ 显存)。
# 启动并运行 GLM-4
ollama run glm4
chatglm3。 1.3 配置远程访问 (可选)¶
Ubuntu 是远程服务器,而 VS Code 运行在本地电脑上,需要让 Ollama 监听所有网络接口,或者使用 SSH 隧道。
方法 A:配置 Ollama 监听所有 IP (需注意安全) 编辑 service 文件:
sudo systemctl edit ollama.service
[Service]
Environment="OLLAMA_HOST=0.0.0.0"
sudo systemctl daemon-reload
sudo systemctl restart ollama
方法 B:使用 SSH 隧道 (推荐,更安全) 在本地电脑建立隧道,将远程的 11434 端口映射到本地:
ssh -L 11434:localhost:11434 user@your-ubuntu-server-ip
2. 客户端:配置 VS Code¶
2.1 安装插件¶
在 VS Code 扩展市场搜索并安装 Continue (ID: Continue.continue)。这是一个开源的 AI 编程助手插件,完美支持 Ollama。
2.2 配置 Continue¶
- 安装完成后,点击 VS Code 左侧边栏的 Continue 图标。
- 点击底部的设置图标 (齿轮),这会打开
config.json配置文件。 - 在
models数组中添加 GLM-4 的配置:
{
"models": [
{
"title": "GLM-4 (Ubuntu Server)",
"provider": "ollama",
"model": "glm4",
"apiBase": "http://localhost:11434"
}
],
// ... 其他配置
}
apiBase 保持 http://localhost:11434 即可。如果是直接连接远程 IP,请替换为 http://<服务器IP>:11434。 2.3 开始使用¶
现在,可以在 Continue 的聊天窗口中选择 "GLM-4 (Ubuntu Server)",然后: * Chat: 询问代码问题。 * Autocomplete: 在写代码时享受自动补全 (需要在配置中单独设置 tabAutocompleteModel)。 * Edit: 选中代码,按 Cmd+I (macOS) 或 Ctrl+I (Windows/Linux) 让 AI 修改代码。
训练本地 GLM (微调/Fine-tuning)¶
Note
个人使用.推荐使用 LLaMA-Factory 框架对 GLM-4 进行微调。它支持 LoRA/Q-LoRA 等高效微调技术,并且提供了可视化的 WebUI 界面,极大地降低了训练门槛。
1. 环境搭建¶
首先,克隆 LLaMA-Factory 仓库并安装依赖。建议使用 Python 3.10+ 和 CUDA 12+ 环境。
# 1. 克隆仓库
git clone https://github.com/hiyouga/LLaMA-Factory.git
cd LLaMA-Factory
# 2. 创建虚拟环境 (推荐)
conda create -n llama_factory python=3.10
conda activate llama_factory
# 3. 安装依赖
pip install -e .[metrics]
2. 准备数据集¶
LLaMA-Factory 支持标准的 Alpaca 格式 (指令监督微调数据集)。 准备一个 dataset.json 文件,格式如下:
[
{
"instruction": "请解释什么是量子纠缠。",
"input": "",
"output": "量子纠缠是量子力学中的一种现象,其中两个或多个粒子相互关联..."
},
{
"instruction": "将以下句子翻译成英文。",
"input": "今天天气真好。",
"output": "The weather is really nice today."
}
]
将该文件放入 data/ 目录下,并修改 data/dataset_info.json 注册你的数据集:
"my_custom_dataset": {
"file_name": "dataset.json"
}
3. 启动 WebUI 进行训练¶
LLaMA-Factory 提供了一个非常直观的 Web 界面。
llamafactory-cli webui
启动后,访问浏览器 (默认 http://localhost:7860),按以下步骤操作:
- 模型名称: 选择
GLM-4-9B-Chat(如果是从 ModelScope 下载的,填写本地路径)。 - 微调方法: 选择
lora(显存较小可开启QLoRA4-bit 量化)。 - 数据集: 选择刚才注册的
my_custom_dataset。 - 参数设置:
- 学习率 (Learning Rate): 推荐
5e-5或1e-4。 - 轮数 (Epochs): 推荐 3-5 轮。
- 批次大小 (Batch Size): 根据显存调整,越大越快但显存占用越高。
- 学习率 (Learning Rate): 推荐
- 开始训练: 点击“开始训练”按钮,观察 Loss 曲线下降。
4. 模型导出与测试¶
训练完成后,将 LoRA 权重合并到基础模型中,或者直接加载 LoRA 权重进行推理。
在 WebUI 中导出: 切换到 "Export" (导出) 选项卡,指定 Export Dir (导出路径),点击 "Export" 即可获得一个完整的、微调后的 GLM-4 模型。
使用 Python 加载微调后的模型:
from transformers import AutoModelForCausalLM, AutoTokenizer
import torch
model_path = "/path/to/your/exported/model" # 刚才导出的路径
tokenizer = AutoTokenizer.from_pretrained(model_path, trust_remote_code=True)
model = AutoModelForCausalLM.from_pretrained(
model_path,
device_map="auto",
trust_remote_code=True,
torch_dtype=torch.float16
)
response, history = model.chat(tokenizer, "你好,测试一下微调效果", history=[])
print(response)