AI

GLM-4.7 部署 + llama.cpp 双卡

TomHanck4
2026-02-24 / 0 评论 / 1 阅读 / 正在检测是否收录...

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_0
  • bartowski/zai-org_GLM-4.7-Flash-GGUF:更多量化(Q2_K~Q8_0、IQ 系列等)

推荐 20G 显存用 Q4_K_MQ5_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-cliserver

若编译时出现 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.6

1.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 -j2

1.4 使用 conda 里的 CUDA

若 nvcc 来自 conda 环境:

which nvcc
# 若类似 /home/xxx/miniconda3/bin/nvcc,则 CUDAToolkit_ROOT 设为上一级
cmake .. -DGGML_CUDA=ON -DCUDAToolkit_ROOT=/home/xxx/miniconda3

2. 双卡启动(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

4. 1070 与 llama.cpp

llama.cpp 对老显卡(如 1070,Compute 6.1)的支持比 vLLM 宽松,一般可以跑;若遇到不兼容再考虑只用 3080 Ti(CUDA_VISIBLE_DEVICES=01 单卡)。


三、GLM-4.7-Flash 快速用上(单卡 3080 Ti)

若先不折腾双卡,只验证 GLM-4.7 + 3080 Ti:

  1. 下载 GGUF(任选其一)

  2. 单卡运行(仅 3080 Ti,假设为 0 号卡)

    CUDA_VISIBLE_DEVICES=0 ./server -m GLM-4.7-Flash-xxx-Q4_K_M.gguf -c 8192 --port 8080
  3. 用 vLLM 跑 GLM-4.7-Flash
    若你更习惯 vLLM,也可用 vLLM 加载 HF 格式的 zai-org/GLM-4.7-Flash(需 20G 左右显存,3080 Ti 单卡可行),但此时无法把 1070 当 cache 用(vLLM 不支持 1070)。

四、小结

需求方案
部署 GLM-4.7GLM-4.7-Flash 的 GGUF(Q4_K_M 约 16–18GB)
3080 Ti 推理 + 1070 做 cachellama.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

评论 (0)

取消