news 2026/10/20 19:29:57

llama.cpp 混合推理 GPU 层数分配指南:24GB 显存跑 70B 大模型

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
llama.cpp 混合推理 GPU 层数分配指南:24GB 显存跑 70B 大模型

llama.cpp 混合推理 GPU 层数分配指南:24GB 显存跑 70B 大模型

【免费下载链接】ik_llama.cppllama.cpp fork with additional SOTA quants and improved performance项目地址: https://gitcode.com/GitHub_Trending/ik/ik_llama.cpp

ik_llama.cpp 是 llama.cpp 的性能增强分支,其中 llama.cpp GPU CPU 混合推理是它的强项:当整张大模型塞不进显存时,把一部分权重放在显存、其余放在内存,让 70B 级别的量化模型在你的消费级显卡上依然能出字。

🧳 24GB 显存跑 70B:为什么绕不开混合推理

假设你要跑一个 70B 模型的 4bit 量化版:权重文件约 40GB,加上 KV cache 和计算缓冲,远超 24GB 显存。此时你只有两条路:换更大显存的机器,或者做混合推理。

ik_llama.cpp 的做法是:调度器按层把张量拆开,一部分放到显存(VRAM),剩余张量留在系统内存,推理时数据在两者之间按需搬运。你不需要自己搬,只要决定"放多少层下去"。仓库文档 docs/parameters.md 的 GPU Offload 一节给出了完整的手动调参路径。

🧠 原理速览:谁决定张量去哪

把张量分配想象成打包行李:行李箱(显存)空间固定,你得决定哪些大件必须托运、哪些随身带。

背后干活的组件是ggml_backend_sched,可以理解为调度器:它拿到模型的完整计算图后,逐个张量决定在 CPU 还是 GPU 上执行,并在需要时安排跨设备拷贝。

当调度器拿不准、或者你有明确偏好时,ggml_backend_sched_set_tensor_backend提供了"点名"机制——把某个张量钉死在指定后端:

// 把指定张量钉到指定后端(CPU 或 GPU) ggml_backend_sched_set_tensor_backend(sched, tensor, backend); // 反向查询:这个张量当前落在哪个后端 ggml_backend_t b = ggml_backend_sched_get_tensor_backend(sched, tensor);

接口声明在 ggml/include/ggml-backend.h,模型加载和构建计算图的代码(src/llama.cpp、src/llama-build-context.cpp)里能看到大量调用:KV cache 分片、嵌入层、临时缓冲都可以被显式指定后端。

⌨️ 混合推理命令速查

日常调参基本只用得到下面这几个参数:

| 参数 | 白话解释 | | - | - | |--gpu-layers 24(短参-ngl) | 前 24 层权重放显存,其余层留在内存;默认值 999 表示"尽量全放" | |--main-gpu 1(短参-mg) | 多显卡时指定主卡编号 | |--flash-attn(短参-fa) | 开启 Flash Attention,降低 KV cache 占用并提速提示词处理,默认已开启 | |--no-kv-offload(短参-nkvo) | KV cache 强制留在内存,给权重腾出显存,代价是提示词处理变慢 | |--fit| 不用手动数层,调度器按可用显存自动装尽量多的张量;--fit-margin 1024控制预留安全余量(单位 MiB) |

最常用的一条启动命令:

# 前 24 层下放 GPU,其余 CPU,上下文 4096 ./llama-server -m model.gguf --gpu-layers 24 --ctx-size 4096 # 或者交给自动填充算法 ./llama-server -m model.gguf --fit --fit-margin 1024

📐 GPU 层数怎么分:按硬件档次调参

| 你的硬件 | 建议 | | - | - | | 消费级 8–12GB(如 RTX 3060/4060) | 小模型直接-ngl 999全量下放;大模型试--gpu-layers 10~15,并用--cache-type-k q8_0 --cache-type-v q8_0把 KV cache 压量 | | 24GB(RTX 3090/4090/5090) | 首选--fit;若加载时 CUDA OOM,把--fit-margin从 1024 调大到 2048 | | 显存吃紧(核显、轻薄本) |--gpu-layers 0~8+--no-kv-offload+ 量化 KV,保证能跑起来 | | 工作站 / 多卡 |-sm graph按计算图切分模型,-ts 3,1手动调节各卡占比;MoE 模型可加--cpu-moe让稀疏专家留在内存 |

MoE 模型有个额外技巧:专家(exps)张量平时只有 2–5% 会被激活,把它们留在内存往往比塞进显存更划算,-ot "\.ffn_.*_exps\.=CPU"这种正则覆盖就是干这个的。不确定模型层数时,先跑python3 gguf-py/scripts/gguf_dump.py 你的模型.gguf数一下blk.n张量再定层数。

🔍 验证与排障:张量真的落到指定后端了吗

别只看命令行参数,看启动日志里这两类行:

llama_model_load: offloaded 24/48 layers to GPU llama_kv_cache_init: GPU KV buffer size = 1920.00 MiB llama_kv_cache_init: CPU KV buffer size = 512.00 MiB

offloaded N/M layers to GPU直接告诉你实际下放的层数;KV buffer 行按后端分别打印,GPU 和 CPU 各占多少一目了然。想加载前先预判显存占用,加--dry-run:跳过实际读盘,但照常报告内存用量,很适合在大模型上试参数。

常见问题各给一条对策:

  • 加载即 OOM:先--dry-run看缺口,再降--gpu-layers或加--no-kv-offload把 KV 挪回内存。
  • 实际下放层数少于预期:日志里 M(可下放总层数)比你想的小,用gguf_dump.py核对模型真实层数,并检查-ot正则是否误伤。
  • 速度不及预期:TG(token 生成)慢说明 CPU 层太多,往上调--gpu-layers或直接--fit;PP(提示词处理)慢且你开了--no-kv-offload,去掉它让 KV 回显存。

收个尾

混合推理的目标不是把层数往上堆,而是让每一 GB 显存都装下"每次都会用到"的权重,冷数据留在内存。下次启动模型时,先跑一次--dry-run看清显存账本,再用--fit打底、--gpu-layers微调,一轮下来就能定位你硬件的甜点位。

【免费下载链接】ik_llama.cppllama.cpp fork with additional SOTA quants and improved performance项目地址: https://gitcode.com/GitHub_Trending/ik/ik_llama.cpp

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/20 19:29:36

从零构建技能系统:数据建模、匹配引擎与落地实践

1. 当“skills”成为一个项目标题:我看到的不是空壳,而是最诚实的起点第一次看到“skills”这个项目标题时,我的反应和大多数人一样——这也太宽泛了。没有副标题,没有正文描述,没有关键词,连摘要都是空的。…

作者头像 李华
网站建设 2026/10/20 19:24:51

网页转可引用知识:Chatbot联网工具的可信架构设计

1. 项目概述:为什么我们需要“把网页变成可引用知识”你有没有遇到过这样的场景:在写一份技术方案时,突然需要确认某个开源库的最新 API 参数;在准备行业分析报告时,想快速引用权威机构刚发布的白皮书核心结论&#xf…

作者头像 李华
网站建设 2026/10/20 19:22:56

音视频服务为何是互联网的终极压力测试仪

1. 为什么“音视频服务”是互联网真正的压力测试仪你有没有试过在地铁里点开一个4K直播,画面卡成PPT,而旁边的人刷短视频却丝滑如初?或者深夜和朋友连麦打游戏,语音断断续续,但微信文字消息秒回?这些不是玄…

作者头像 李华
网站建设 2026/10/20 19:21:44

负样本引导重排序:让图像描述模型不再“胡说八道”

做图像描述(看图说话)这几年,我一直有个很深的体会:模型能“说”并不难,难的是让它“说到点子上”。前两天看到一篇来自某欧洲高校计算机视觉实验室的新工作,团队把方法命名为RNS,全称是 Rerank…

作者头像 李华
网站建设 2026/10/20 19:21:03

图思维:用节点与关系重新看世界,从知识图谱到图智能

你有没有过这种经历:一个问题怎么都理不清楚,不是因为它太难,而是因为你会不自觉地把所有东西先归类,再按顺序排列。清单、表格、层级结构……这些工具确实好用,但它们都默认了同一件事:先切分,…

作者头像 李华
网站建设 2026/10/20 19:19:07

企业微信 API 接口:外部群机器人消息推送与交互实现

外部群机器人是企微 API 里一个容易被误解的概念。很多人以为"机器人"是一个独立账号,实际上它是通过 API 向外部群发消息的能力。这篇讲清楚外部群机器人能做什么、怎么发消息、以及交互怎么实现。先搞清"外部群机器人"是什么企微的外部群&…

作者头像 李华