跳转至

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

  1. 安装完成后,点击 VS Code 左侧边栏的 Continue 图标。
  2. 点击底部的设置图标 (齿轮),这会打开 config.json 配置文件。
  3. models 数组中添加 GLM-4 的配置:

{
  "models": [
    {
      "title": "GLM-4 (Ubuntu Server)",
      "provider": "ollama",
      "model": "glm4",
      "apiBase": "http://localhost:11434" 
    }
  ],
  // ... 其他配置
}
注意:如果使用了 SSH 隧道,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),按以下步骤操作:

  1. 模型名称: 选择 GLM-4-9B-Chat (如果是从 ModelScope 下载的,填写本地路径)。
  2. 微调方法: 选择 lora (显存较小可开启 QLoRA 4-bit 量化)。
  3. 数据集: 选择刚才注册的 my_custom_dataset
  4. 参数设置:
    • 学习率 (Learning Rate): 推荐 5e-51e-4
    • 轮数 (Epochs): 推荐 3-5 轮。
    • 批次大小 (Batch Size): 根据显存调整,越大越快但显存占用越高。
  5. 开始训练: 点击“开始训练”按钮,观察 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)