GLM-4.7 部署 + llama.cpp 双卡(3080 Ti 推理 / 1070 cache)
一、GLM-4.7 有没有能部署的版本?
有。GLM-4.7-Flash 已开源,适合本地部署:
- 架构:30B MoE,约 3B 活跃参数,推理显存约等于 3B 级
- 显存:4-bit 量化约 16–18GB,3080 Ti 20G 足够
- 能力:200K 上下文、工具调用、思考链,适合 agent
获取 GGUF(给 llama.cpp 用):
lmstudio-community/GLM-4.7-Flash-GGUF:Q4_K_M / Q6_K / Q8_0bartowski/zai-org_GLM-4.7-Flash-GGUF:更多量化(Q2_K~Q8_0、IQ 系列等)
推荐 20G 显存用 Q4_K_M 或 Q5_K_M。
二、用 llama.cpp 实现「3080 Ti 推理 + 1070 做 cache」
llama.cpp 支持多卡时:
-ts/--tensor-split:按比例把模型层分到多张卡(如-ts 1,0= 全部在 GPU0)--main-gpu/-mg:指定哪张卡放 KV cache 和小张量(中间结果)
因此可以:
- 模型权重全部放在 3080 Ti(推理算力在这张卡)
- KV cache 和小张量放在 1070(
--main-gpu指向 1070)
前提:3080 Ti 建议为 GPU 0,1070 为 GPU 1(用 nvidia-smi 看顺序,必要时在 BIOS/系统里调)。下面按 0=3080Ti、1=1070 写。
1. llama.cpp 编译(CUDA)
克隆与基础编译:
git clone https://github.com/ggml-org/llama.cpp
cd llama.cpp
mkdir build && cd build
cmake .. -DGGML_CUDA=ON
cmake --build . --config Release -j可执行文件在 build/bin/,例如 llama-cli、server。
若编译时出现 nvcc: Terminated / Compilation terminated,多为内存不足,改用少并行数:
cmake --build . --config Release -j2
# 或 -j1若 CMake 报 CUDA Toolkit not found / Could not find nvcc,按下面处理。
1.1 确认本机是否有 nvcc
which nvcc
# 或
ls /usr/local/cuda*/bin/nvcc 2>/dev/null || ls /usr/bin/nvcc 2>/dev/null有输出则记下该路径的上一级目录(如 /usr/local/cuda 或 /usr/local/cuda-12.6),用作下面的 CUDAToolkit_ROOT。
1.2 有 nvcc:指定 CUDAToolkit_ROOT 再配置
cd ~/Desktop/llama.cpp/build
rm -rf *
# 把 /usr/local/cuda 换成你本机 CUDA 实际路径
cmake .. -DGGML_CUDA=ON -DCUDAToolkit_ROOT=/usr/local/cuda
cmake --build . --config Release -j2若 CUDA 在其它路径,例如 /usr/local/cuda-12.6:
cmake .. -DGGML_CUDA=ON -DCUDAToolkit_ROOT=/usr/local/cuda-12.61.3 没有 nvcc:安装 CUDA Toolkit
# 先看驱动支持的 CUDA 版本
nvidia-smi
# 右上角 "CUDA Version: 12.x" 表示驱动支持到该版本
# Ubuntu 安装 CUDA 12(按你系统选对应 repo)
wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2404/x86_64/cuda-keyring_1.1-1_all.deb
sudo dpkg -i cuda-keyring_1.1-1_all.deb
sudo apt-get update
sudo apt-get -y install cuda-toolkit-12-6装好后可设置环境变量(可写入 ~/.bashrc):
export PATH=/usr/local/cuda/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH再回到 llama.cpp/build 执行:
cd ~/Desktop/llama.cpp/build
rm -rf *
cmake .. -DGGML_CUDA=ON -DCUDAToolkit_ROOT=/usr/local/cuda
cmake --build . --config Release -j21.4 使用 conda 里的 CUDA
若 nvcc 来自 conda 环境:
which nvcc
# 若类似 /home/xxx/miniconda3/bin/nvcc,则 CUDAToolkit_ROOT 设为上一级
cmake .. -DGGML_CUDA=ON -DCUDAToolkit_ROOT=/home/xxx/miniconda32. 双卡启动(3080 Ti 推理,1070 做 cache)
适用:GPU 0 = 20G 主卡(推理)、GPU 1 = 1070(8G,做 cache)。用 nvidia-smi 确认顺序。
| 内容 | 放在哪张卡 | 参数 |
|---|---|---|
| 模型权重 | GPU 0(3080 Ti) | -ts 1,0(1 份在 0,0 份在 1) |
| KV cache / 小张量 | GPU 1(1070) | --main-gpu 1 |
命令行示例(按本机路径改 -m、-c):
# 交互
./llama-cli -m /path/to/GLM-4.7-Flash-xxx-Q4_K_M.gguf \
-ts 1,0 \
--main-gpu 1 \
-c 8192 \
-p "你好"Server 模式(OpenAI 兼容 API):
./server -m /path/to/GLM-4.7-Flash-xxx-Q4_K_M.gguf \
-ts 1,0 \
--main-gpu 1 \
-c 8192 \
--host 0.0.0.0 \
--port 8080-ts 1,0:模型全在 GPU 0,GPU 1 不占权重--main-gpu 1:KV cache 和临时缓冲在 GPU 1(1070)-c 8192:上下文长度,显存够可改为 32768 等
结果:3080 Ti 负责算力,1070 负责 cache,适合 20G+8G 双卡。
3. 若 1070 是 0 号、3080 Ti 是 1 号
把「推理」放在 3080 Ti 上更合理,则:
用环境变量把「逻辑 GPU 0」映射到物理 3080 Ti,例如先只暴露 3080 Ti:
CUDA_VISIBLE_DEVICES=1 ./server -m model.gguf ...这样只用到 3080 Ti,1070 不参与。
若坚持双卡且 1070=0、3080Ti=1,则:
- 模型放 3080 Ti:
-ts 0,1(0 份在 0,1 份在 1) - cache 放 1070:
--main-gpu 0
- 模型放 3080 Ti:
4. 1070 与 llama.cpp
llama.cpp 对老显卡(如 1070,Compute 6.1)的支持比 vLLM 宽松,一般可以跑;若遇到不兼容再考虑只用 3080 Ti(CUDA_VISIBLE_DEVICES=0 或 1 单卡)。
三、GLM-4.7-Flash 快速用上(单卡 3080 Ti)
若先不折腾双卡,只验证 GLM-4.7 + 3080 Ti:
下载 GGUF(任选其一)
单卡运行(仅 3080 Ti,假设为 0 号卡)
CUDA_VISIBLE_DEVICES=0 ./server -m GLM-4.7-Flash-xxx-Q4_K_M.gguf -c 8192 --port 8080- 用 vLLM 跑 GLM-4.7-Flash
若你更习惯 vLLM,也可用 vLLM 加载 HF 格式的zai-org/GLM-4.7-Flash(需 20G 左右显存,3080 Ti 单卡可行),但此时无法把 1070 当 cache 用(vLLM 不支持 1070)。
四、小结
| 需求 | 方案 |
|---|---|
| 部署 GLM-4.7 | 用 GLM-4.7-Flash 的 GGUF(Q4_K_M 约 16–18GB) |
| 3080 Ti 推理 + 1070 做 cache | 用 llama.cpp:-ts 1,0 + --main-gpu 1(0=3080Ti,1=1070) |
| 仅 3080 Ti、最简单 | vLLM 或 llama.cpp 单卡均可;GGUF 用 llama.cpp,HF 用 vLLM |
把上面命令里的 -m、-c、端口和 GPU 顺序按你本机改一下即可直接用。


评论 (0)