我使用GLM的Coding套餐,经常还是把额度用满。在这个暴躁的AI时代,没有模型可用,感觉空空的,是不是得了大模型病。所以想部署一个本地大模型给自己用。
Gemma4最近出来,我也用Ollama跑起来了,感觉效率还没有发挥到极致。所以想通过llama.cpp部署Gemma4-26B,网上说在12G显卡上能跑Q4量化版本。

结论

llama.cpp跑Gemma4-26B Q4版本能跑,GPU能发挥100%,这点比Ollama要强。但是连接Claude Code有点问题,会导致Claude持续分配内存,直到把所有内存都占用完。

环境及前置条件

我用的Windows11,显卡是RTX5070 TI 12GB显存,笔记本电脑。
配置好CUDA,安装Anaconda等。可以参考之前的文章。

安装llama.cpp

llama.cpp的安装方式很多,我这里选择最简单的,直接安装预编译好的版本。

  • 到llama.cpp的官方github下载windows的安装包, https://github.com/ggml-org/llama.cpp/releases ,我用的是llama-b8833-bin-win-cuda-13.1-x64.zip。另外一个CUDA 13.1 DLLs可以不用管,他是运行时库文件包,给愿意折腾的人用的。
  • llama-b8833-bin-win-cuda-13.1-x64.zip解压到D:\llama
  • D:\llama加入到Windows环境变量
  • 在命令行窗口测试一下:随便找个目录测试一下llama-cli.exe,如果显示了error: --model is required(如下图),就说明设置正常。

图:选择预编译包
请添加图片描述

图:测试llama.cpp
请添加图片描述

准备大模型文件

准备执行的是Gemma4-26B模型,它有很多量化版本。这里也用一个比较省事、但不一定省心的方案。
在huggingface的网站找到Gemma4-26B的模型,地址是: https://hf-mirror.com/unsloth/gemma-4-26B-A4B-it-GGUF/tree/main 。
在右上角有个按钮Use this model,点击llama.cpp,出现下面的窗口,可以复制你要的命令,我复制的是./llama-server -hf unsloth/gemma-4-26B-A4B-it-GGUF:UD-Q4_K_M
特别注意: 这行命令会把模型下载到 C盘。这不是我想要的。所以一定要改地址:llama-cli -hf 下载的模型缓存位置优先由 LLAMA_CACHE 环境变量控制。如果没有设置 LLAMA_CACHE,则会继续检查 Hugging Face 相关缓存变量,例如 HF_HUB_CACHEHUGGINGFACE_HUB_CACHEHF_HOME

请添加图片描述

下载模型失败解决方案

我执行上面的命令,会出现下面的错误,根本原因是无法直接访问huggingface的网站。而我之前是通过hf-mirror.com访问。

get_repo_commit: error: HTTPLIB failed: Could not establish connection
get_repo_files: failed to resolve commit for unsloth/gemma-4-26B-A4B-it-GGUF
error: failed to download model from Hugging Face

解决方案:$env:HF_ENDPOINT="https://hf-mirror.com",设置环境变量,然后就可以下载了。

请添加图片描述

调整启动命令

之前的llama-server 命令是hf给的,是默认的。这次为了能跟Claude Code对接,我将参数调整一下,重点是端口、上下文大小:ctx大小为128k

llama-server -hf unsloth/gemma-4-26B-A4B-it-GGUF:UD-Q4_K_M --host 0.0.0.0 --port 17691 --ctx-size 131072 --temp 1.0 --top-p 0.95 --top-k 64 --repeat-penalty 1.0 -ctk q8_0 -ctv q8_0 --flash-attn on --batch-size 1024 --ubatch-size 512 --threads 10 --threads-batch 12 --no-mmap --mlock --parallel 1 --no-warmup --jinja

我用E4B模型的启动命令,默认是带视觉识别:

llama-server -hf unsloth/gemma-4-E4B-it-GGUF:Q8_0 --host 0.0.0.0 --port 17691 --ctx-size 131072 --temp 1.0 --top-p 0.95 --top-k 64 --repeat-penalty 1.0 -ctk q8_0 -ctv q8_0 --flash-attn on --batch-size 1024 --ubatch-size 512 --threads 10 --threads-batch 12 --no-mmap --mlock --parallel 1 --no-warmup --jinja

为了追求最高的性能,可以将视觉去掉,只支持文本。关键是通过-m gguf的地址 指定模型文件,具体的地址可以在LLAMA_CACHE 找到。启动命令是:

llama-server -m E:\hgcache\models--unsloth--gemma-4-E4B-it-GGUF\snapshots\ce152932ac27bc40bc9c727386760424d50bb456\gemma-4-E4B-it-Q8_0.gguf  --host 0.0.0.0 --port 17691 --ctx-size 131072 --temp 1.0 --top-p 0.95 --top-k 64 --repeat-penalty 1.0 -ctk q8_0 -ctv q8_0 --flash-attn on --batch-size 1024 --ubatch-size 512 --threads 10 --threads-batch 12 --no-mmap --mlock --parallel 1 --no-warmup --jinja

Claude Code连接llama.cpp的大模型

建议使用 CCSwitch
设置如下,模型名称unsloth/gemma-4-E4B-it-GGUF:Q8_0
在这里插入图片描述

Claude Code内存溢出

启动Claude连接本地llama.cpp模型,只是简单问一句你是什么大模型?,Claude就会一直增加内存占用,要很久大概10几分钟才会有反馈。不知道是哪里配置错误。
我改成E4B模型,还是有同样的问题存在。一会就占了10G内存,把内存都撑爆了。

和Ollama对比

我用Ollama跑Gemma4 26B模型,对话还是基本能够一秒回复几个字。GPU占用不高。
用llama.cpp,很明显的对比是GPU能跑满100%,但是对话一直很慢。

显存是否够用,结论是不够

llama.cpp 在加载模型时会输出显存/内存需求信息,例如:
ggml_init_cgraph(): allocating memory: 5120 MB

还可以:

  • 使用 --verbose--log-level debug 启动,查看加载阶段的内存分配日志
  • 根据模型大小、量化等级(如 Q4_0、Q5_K_M)和上下文长度(--ctx-size)预估显存需求
  • 适当降低 --n-gpu-layers--ctx-size 来减少显存占用

我启动成功之后,将日志给OpenClaw分析,结果如下:

🎮 显存占用 (GPU - RTX 5070 Ti Laptop 12GB)

总计:约 9938 MiB (9.7 GB)

项目 大小
模型权重 (31层) 7716.76 MiB
KV 缓存 (非滑动窗口) 1360.00 MiB
KV 缓存 (滑动窗口) 159.38 MiB
计算缓冲区 702.55 MiB
剩余可用 1087 MiB

💾 内存占用 (RAM)

模型相关:约 9103 MiB (8.9 GB)

项目 大小
CPU 模型缓冲区 9103.04 MiB
CPU 计算缓冲区 271.30 MiB
CLIP 视觉编码器 1139.46 MiB
提示词缓存 最高 8192 MiB (动态)

📊 关键发现

  1. 显存压力较大:由于 131K 上下文和 Q4_K_M 量化,模型无法完全放入 GPU,有 20 层溢出到 CPU
  2. KV 缓存占显存大头:131K 上下文需要约 1.5GB 的 KV 缓存
  3. 总系统内存需求:约 18-20GB (模型缓冲区 + 视觉编码器 + 提示词缓存)

优化建议: 如果不需要 131K 超长上下文,可以降到 64K 或 32K,能显著减少 KV 缓存占用的显存。

参考:

在12GB显存部署Gemma4 26b a4b:
https://carteakey.dev/blog/running-gemma-4-26b-a4b-locally/#1-build-mainline-llama-cpp
https://github.com/carteakey/l3ms

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐