前置条件
- 1已注册腾讯云账号
- 2一台腾讯云轻量应用服务器或 CVM(2C4G 起步,推荐 4C8G 及以上)
- 3服务器已安装 Docker 与 docker compose 插件
- 4熟悉基础 Linux 命令
读完想动手?新用户首单 8 折上云
服务器 + 大模型 API + 对象存储,新用户首购享 20% 补贴
GLM-4 智谱清言腾讯云本地部署完整指南
智谱 AI 的 GLM 系列是国内开源大模型里生态最成熟、工具调用最稳的一条线。很多团队选它做本地部署,不是因为参数最大,而是因为三点:中文表达自然、function call 稳定、社区教程和问题记录多,踩坑时搜得到答案。
这篇教程给你两条路:
- 快速路径:Ollama 一条命令跑起来,10 分钟内能用,适合个人试用与小团队内部工具
- 生产路径:vLLM 部署,支撑多并发与长上下文,适合要挂到业务系统上的场景
两条路都会给出精确到命令的操作,以及我实际部署时踩过的坑。
为什么选 GLM 做本地部署
先说清楚它适合什么、不适合什么,避免你部署完发现不是自己想要的。
| 维度 | GLM-4 表现 | 说明 |
|---|---|---|
| 中文对话 | 优秀 | 语气自然,不像翻译腔 |
| 工具调用(function call) | 稳定 | 这是它相对同尺寸模型的明显优势 |
| 代码能力 | 中等 | 不如专门的代码模型,别抱太高期待 |
| 长上下文 | 支持 | 9B 版本支持较长上下文,具体长度以模型卡为准 |
| 开源协议 | 开放 | 商用前请自行核对当前版本的许可证条款 |
它最适合的场景:企业内网知识库问答、客服话术生成、内部工具的自然语言入口、需要调用内部 API 的 Agent 底座。
它不适合的场景:大规模代码生成、数学竞赛级推理、需要 GPU 集群的超长上下文批处理。
如果你的场景偏代码,可以看 Qwen3 腾讯云部署教程;偏长文本推理,可以看 DeepSeek 腾讯云本地部署教程。
第一步:机型选型(这一步决定后面顺不顺)
很多人部署失败不是命令错了,是机器买小了。先把配置定对。
内存/显存对照表
| 使用场景 | 推荐配置 | 模型选择 | 并发能力 |
|---|---|---|---|
| 个人试用、单人问答 | 2C4G | glm4:9b q4 量化 | 1 人,响应较慢 |
| 小团队内部工具 | 4C8G | glm4:9b q5/q6 | 2-3 人 |
| 知识库 + 多人问答 | 8C16G | glm4:9b fp16 | 5-8 人 |
| 生产级 API 服务 | GPU 机型(16G 显存起) | vLLM + GLM-4-9B | 数十并发 |
关键判断:GLM-4-9B 的 fp16 权重约占 18GB 显存/内存,量化后 q4 约 6GB。所以:
- 纯 CPU 服务器:只能跑量化版,且内存要大于权重体积 + 2GB 系统开销
- 有 GPU:优先 vLLM,吞吐能上一个数量级
警告
⚠️ 腾讯云轻量应用服务器是纯 CPU 机型,没有 GPU。要跑 GPU 必须买 GPU 计算型实例(如 腾讯云 GPU 机型查看),价格高出不少,但并发能力不在一个量级。
购买建议
如果你只是先验证能不能跑通,买轻量应用服务器 4C8G 最划算,按月付费,跑通了再升级。如果要长期提供服务,直接上 GPU 机型,别在 CPU 上硬撑——CPU 推理的延迟会让用户体验很差。
前往 腾讯云轻量应用服务器 选购页,按下表对照自己的场景选择:
| 配置项 | 建议值 | 原因 |
|---|---|---|
| 地域 | 离你用户最近的地域 | 延迟直接体感 |
| 镜像 | Ubuntu 22.04 LTS | 教程命令基于此验证 |
| 系统盘 | 60GB 起 | 模型权重 + Docker 镜像很吃空间 |
| 带宽 | 3Mbps 起 | 只做 API 调用不需要大带宽 |
第二步:环境准备
2.1 安装 Docker
1# 卸载旧版本(新机器可跳过)
2sudo apt-get remove -y docker docker-engine docker.io containerd runc 2>/dev/null
3
4# 安装依赖
5sudo apt-get update
6sudo apt-get install -y ca-certificates curl gnupg lsb-release
7
8# 添加 Docker 官方 GPG key(国内机器建议用镜像源)
9sudo install -m 0755 -d /etc/apt/keyrings
10curl -fsSL https://mirrors.cloud.tencent.com/docker-ce/linux/ubuntu/gpg \
11 | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
12sudo chmod a+r /etc/apt/keyrings/docker.gpg
13
14# 添加软件源(腾讯镜像源,国内速度快)
15echo \
16 "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] \
17 https://mirrors.cloud.tencent.com/docker-ce/linux/ubuntu \
18 $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
19
20# 安装
21sudo apt-get update
22sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin
23
24# 验证
25sudo docker --version
26sudo docker compose version把当前用户加入 docker 组,避免每次都敲 sudo:
1sudo usermod -aG docker $USER
2newgrp docker
3docker ps # 不报错就说明生效了2.2 配置镜像加速
国内服务器拉 Docker 镜像慢是常态,先配加速:
腾讯云给每台机器分配了专属加速地址,在控制台「容器镜像服务 → 镜像加速器」里能直接看到,形如 https://xxxxxx.mirror.swr.myqcloud.com。把它填进配置(不要抄别人的,专属地址才最快):
1sudo mkdir -p /etc/docker
2sudo tee /etc/docker/daemon.json <<'EOF'
3{
4 "registry-mirrors": [
5 "https://你的专属地址.mirror.swr.myqcloud.com"
6 ]
7}
8EOF
9sudo systemctl daemon-reload
10sudo systemctl restart docker验证:
1docker info | grep -A 3 "Registry Mirrors"看到镜像地址就说明配置生效了。
2.3 检查磁盘空间
模型权重很吃空间,先确认够不够:
1df -h /
2free -h- 跑 glm4:9b q4 至少要 15GB 可用空间
- 内存必须大于模型权重体积 + 2GB
空间不够的话,先扩容或清理:docker system prune -a 可以清掉无用的镜像缓存。
第三步:快速路径 —— Ollama 一条命令跑起来
Ollama 是目前最简单的本地模型运行方式:一条命令拉模型,一条命令跑起来,自带 OpenAI 兼容接口。
3.1 用 Docker 启动 Ollama
1docker run -d \
2 --name ollama \
3 --restart unless-stopped \
4 -p 11434:11434 \
5 -v /data/ollama:/root/.ollama \
6 ollama/ollama:latest参数说明:
-p 11434:11434:Ollama 默认端口,后面所有对接都走它-v /data/ollama:/root/.ollama:模型权重挂在宿主机,容器删了模型还在,务必保留--restart unless-stopped:服务器重启后自动拉起
验证服务起来了:
1curl http://127.0.0.1:11434/api/tags返回 {"models":[]} 就是正常的(还没拉模型)。
3.2 拉取 GLM 模型
1# 9B 量化版(推荐起步,约 6GB)
2docker exec -it ollama ollama pull glm4:9b
3
4# 如果内存紧张,用更激进的量化(体积更小,效果略降)
5docker exec -it ollama ollama pull glm4:9b-q4_K_M警告
⚠️ 模型标签以 Ollama 官方库为准:ollama pull 的标签名会随官方更新变化,如果上面这条报 "not found",先执行
docker exec -it ollama ollama search glm 看当前可用的标签列表,再挑一个 9B 或更小的版本。
拉取过程可能几分钟到几十分钟,取决于带宽。可以另开一个终端看进度:
1docker logs -f ollama3.3 第一次对话
1docker exec -it ollama ollama run glm4:9b "用一句话解释什么是检索增强生成"能正常回答就说明跑通了。
3.4 用 OpenAI 兼容接口调用
Ollama 自带 /v1 兼容接口,这是它最大的价值——所有支持 OpenAI 的系统都能直接接:
1curl http://127.0.0.1:11434/v1/chat/completions \
2 -H "Content-Type: application/json" \
3 -d '{
4 "model": "glm4:9b",
5 "messages": [{"role": "user", "content": "帮我写一封请假邮件,语气正式"}],
6 "temperature": 0.7
7 }'返回 JSON 里有 choices[0].message.content 就成功了。
3.5 验证工具调用能力
GLM 的强项是 function call,单独验一下:
1curl http://127.0.0.1:11434/v1/chat/completions \
2 -H "Content-Type: application/json" \
3 -d '{
4 "model": "glm4:9b",
5 "messages": [{"role": "user", "content": "北京今天天气怎么样"}],
6 "tools": [{
7 "type": "function",
8 "function": {
9 "name": "get_weather",
10 "description": "查询指定城市的天气",
11 "parameters": {
12 "type": "object",
13 "properties": {"city": {"type": "string", "description": "城市名"}},
14 "required": ["city"]
15 }
16 }
17 }]
18 }'如果返回里有 tool_calls 字段且参数正确解析出 city: 北京,说明工具调用可用——这是接 Agent 和 Dify 工作流的前提。
第四步:生产路径 —— vLLM 高并发部署
Ollama 适合单人试用,一旦并发上来(比如挂到内部系统给十几个人用),响应会明显变慢。这时候换 vLLM。
4.1 前提条件
vLLM 对硬件的要求比 Ollama 高:
- 推荐 GPU 机型(显存 16GB 起),CPU 也能跑但吞吐很低
- 内存 ≥ 32GB
- 磁盘 ≥ 100GB(权重 + 缓存)
查看 腾讯云 GPU 机型与库存,选配时注意:
| 显存 | 可跑的版本 | 并发预估 |
|---|---|---|
| 16GB | GLM-4-9B(fp16 或 AWQ 量化) | 10-20 |
| 24GB | GLM-4-9B fp16 + 长上下文 | 20-40 |
| 40GB+ | 更大尺寸或多实例 | 50+ |
4.2 用 Docker 启动 vLLM
1docker run -d \
2 --name vllm-glm \
3 --restart unless-stopped \
4 --gpus all \
5 -p 8000:8000 \
6 -v /data/models:/models \
7 -v /data/hf-cache:/root/.cache/huggingface \
8 --ipc=host \
9 vllm/vllm-openai:latest \
10 --model /models/glm-4-9b-chat \
11 --served-model-name glm4 \
12 --max-model-len 8192 \
13 --gpu-memory-utilization 0.9关键参数:
--gpus all:把 GPU 透传给容器,少了这个参数 vLLM 会退到 CPU 或直接报错--ipc=host:多进程共享内存,vLLM 必需,否则容易崩--max-model-len:最大上下文,设太大会吃显存,按实际需求设--gpu-memory-utilization:显存占用比例,0.9 是常见安全值
4.3 下载模型权重
GLM 权重在 HuggingFace 上,国内机器建议走魔搭(ModelScope)镜像:
1# 方式一:用 ModelScope(国内速度快)
2pip install modelscope
3python -c "
4from modelscope import snapshot_download
5snapshot_download('ZhipuAI/glm-4-9b-chat', cache_dir='/data/models')
6"
7
8# 方式二:HuggingFace 加镜像端点
9export HF_ENDPOINT=https://hf-mirror.com
10pip install huggingface-hub
11huggingface-cli download ZhipuAI/glm-4-9b-chat --local-dir /data/models/glm-4-9b-chat警告
⚠️ 权重下载通常需要几十 GB,先 df -h 确认磁盘够。下载中断可以重跑命令,会断点续传。
4.4 验证 vLLM 服务
1# 查看模型列表
2curl http://127.0.0.1:8000/v1/models
3
4# 实际推理
5curl http://127.0.0.1:8000/v1/chat/completions \
6 -H "Content-Type: application/json" \
7 -d '{
8 "model": "glm4",
9 "messages": [{"role": "user", "content": "简单说说 vLLM 相比普通推理快在哪"}]
10 }'4.5 并发压测
部署完别急着上线,先压一下看实际能扛多少:
1cat > /tmp/bench.py <<'EOF'
2import time, concurrent.futures, requests
3
4URL = "http://127.0.0.1:8000/v1/chat/completions"
5def call(i):
6 t = time.time()
7 r = requests.post(URL, json={
8 "model": "glm4",
9 "messages": [{"role": "user", "content": f"第{i}个问题:用20字介绍云计算"}],
10 "max_tokens": 100
11 }, timeout=120)
12 return time.time() - t
13
14for n in [1, 4, 8, 16]:
15 with concurrent.futures.ThreadPoolExecutor(n) as ex:
16 lat = list(ex.map(call, range(n)))
17 print(f"并发 {n:2d} 平均耗时 {sum(lat)/len(lat):.2f}s 最慢 {max(lat):.2f}s")
18EOF
19pip install requests && python /tmp/bench.py根据结果反推该配几台机器,别拍脑袋。
第五步:对接业务系统
模型跑起来只是第一步,接进业务才有价值。
5.1 接入 Open WebUI(给自己一个聊天界面)
1docker run -d \
2 --name open-webui \
3 --restart unless-stopped \
4 -p 3000:8080 \
5 -e OLLAMA_BASE_URL=http://host.docker.internal:11434 \
6 --add-host=host.docker.internal:host-gateway \
7 -v /data/open-webui:/app/backend/data \
8 ghcr.io/open-webui/open-webui:main浏览器访问 http://服务器IP:3000,首次进入注册管理员账号。注册后这个账号就是管理员,务必设强密码。
5.2 接入 Dify(做工作流与 Agent)
在 Dify 本地部署教程 那套部署里,进入「设置 → 模型供应商 → OpenAI-API-compatible」,填:
| 字段 | 值(Ollama) | 值(vLLM) |
|---|---|---|
| 模型名称 | glm4:9b | glm4 |
| API Base URL | http://host.docker.internal:11434/v1 | http://host.docker.internal:8000/v1 |
| API Key | 任意填写(Ollama 不校验) | 任意填写 |
警告
⚠️ Dify 跑在 Docker 里,localhost 指容器自己,必须用 host.docker.internal 才能访问宿主机上的 Ollama。这是最常见的一个坑。
5.3 接入 MaxKB 知识库
在 MaxKB 腾讯云部署教程 那篇搭好的系统里,「模型管理 → 添加模型」:
- 模型类型选「 OpenAI 兼容」或「Ollama」
- Base URL 同上表
- 添加后务必点「测试」按钮,看到返回成功再往下走
模型接不通时,后面所有报错都会被归咎到知识库身上,很容易排查错方向。
第六步:安全加固
别把裸奔的服务挂到公网。
6.1 不要直接暴露端口
Ollama 的 11434 和 vLLM 的 8000 都不要直接对公网开放。正确做法:
1# 只监听本机
2docker run -d ... -p 127.0.0.1:11434:11434 ollama/ollama:latest需要外部访问时,用 Nginx 反向代理 + 鉴权,或者走 SSH 隧道 / 内网互通。
6.2 加一层 API Key
vLLM 支持启动时指定 key:
1docker run -d ... vllm/vllm-openai:latest \
2 --model /models/glm-4-9b-chat \
3 --api-key your-secret-key之后请求必须带 Authorization: Bearer your-secret-key。
6.3 防火墙
腾讯云控制台的「防火墙」只放行必要端口(22 / 80 / 443),模型服务端口一律不放。
20 条故障排查
| # | 现象 | 原因 | 解决 |
|---|---|---|---|
| 1 | ollama pull 卡住不动 | 网络或镜像源问题 | 配 Docker 镜像加速;或改用 ModelScope 下载权重再挂载 |
| 2 | 提示 model not found | 标签名已变更 | ollama search glm 查当前可用标签 |
| 3 | 容器启动后立刻退出 | 内存不足被 OOM kill | 执行 dmesg -T 看内核日志确认;换更小的量化版本或升配 |
| 4 | 推理极慢(几十秒才出字) | CPU 推理 + 内存吃紧 | 换量化版;或上 GPU 机型 |
| 5 | 返回中文乱码 | 终端编码或客户端解析问题 | 检查请求与响应是否都按 UTF-8 处理;换 curl 测试排除客户端问题 |
| 6 | vLLM 报 CUDA out of memory | max-model-len 设太大 | 调小到 4096 或 2048;或降 gpu-memory-utilization |
| 7 | vLLM 容器报共享内存错误 | 缺 --ipc=host | 启动参数加上 |
| 8 | Dify 连不上模型 | 用了 localhost | 改 host.docker.internal,并加 --add-host |
| 9 | Open WebUI 显示无模型 | OLLAMA_BASE_URL 没配对 | 用 host.docker.internal:11434 |
| 10 | function call 不触发 | 模型版本不支持或量化过度 | 换非量化或更高精度版本;确认请求里带了 tools 字段 |
| 11 | 并发一高就超时 | Ollama 并发能力有限 | 换 vLLM;或加队列排队 |
| 12 | 磁盘满了 | 权重 + 日志堆积 | docker system prune -a;清理 /data/models 旧版本 |
| 13 | 服务器重启后服务没起来 | 没设 restart 策略 | --restart unless-stopped |
| 14 | 权重下载中断 | 网络波动 | 重跑下载命令,支持断点续传 |
| 15 | 端口被占用 | 已有服务占了 11434/8000 | sudo lsof -i :11434 查占用进程;或换端口映射 |
| 16 | HuggingFace 下载慢 | 没走镜像 | export HF_ENDPOINT=https://hf-mirror.com 或改用 ModelScope |
| 17 | 模型加载报 safetensors 错误 | 权重文件不完整 | 重新下载;校验文件大小 |
| 18 | GPU 容器看不到显卡 | 没装 nvidia-container-toolkit | 装工具包后重启 docker;确认 nvidia-smi 在宿主机可见 |
| 19 | 长对话到一半崩 | 上下文超 max-model-len | 调大该参数(吃显存);或业务层做历史截断 |
| 20 | 账单意外高 | GPU 实例关机仍计费 | 不用时在控制台销毁实例,关机不等于停费 |
警告
⚠️ 第 20 条是真金白银的坑:GPU 实例只要没「销毁」就一直计费,关机只是停止计算,费用照跑。
落地建议
- 先跑通再谈优化 —— 用 4C8G + Ollama 把链路走一遍,确认业务能用,再决定要不要上 GPU。
- 把权重挂到宿主机 ——
-v /data/ollama:/root/.ollama这行别省,否则容器一删模型就没了。 - 并发需求提前压测 —— 上线前用第四步的脚本压一遍,别等用户反馈慢了才发现。
- 模型只是底座 —— 真正产生价值的是接进去的业务系统(知识库、工作流、机器人),GLM 负责把自然语言变成结构化调用。
常见问题
QGLM 和 Qwen、DeepSeek 相比,本地部署有什么不一样?
底层部署方式几乎一样,都是走 Ollama 或 vLLM,区别在模型权重与上下文长度。GLM-4 的中文对话与工具调用(function call)表现稳定,9B 版本对显存要求友好。如果你主要做中文客服与知识库问答,GLM 是稳妥选择;如果偏重代码与数学推理,可以看 Qwen3 腾讯云部署教程。两者可以在同一台机器上共存,按需切换。
Q2C4G 的轻量服务器能跑 GLM 吗?
能跑,但只能用量化版本。Ollama 上选 glm4:9b 的 q4 量化,4GB 内存勉强能加载,但并发只能 1 人,响应会比较慢。真正要做多人使用,建议 4C8G 起步;如果还要在同一台机器上跑知识库(如 RAGFlow 腾讯云部署教程),那就要 8C16G 以上。选型时把内存当成硬指标,不要只看 CPU 核数。
Q本地部署的 GLM 能接进我现有的系统吗?
能。Ollama 与 vLLM 都提供 OpenAI 兼容接口,任何支持 OpenAI API 的客户端改一下 base_url 就能接。本文会给出 Dify、MaxKB、Open WebUI 三个具体对接示例,以及用 curl 验证接口连通性的方法。