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),仅供参考

相关新闻

千笔·降AIGC助手实测:让AI文本不再一眼穿帮

千笔·降AIGC助手实测:让AI文本不再一眼穿帮

先说个现象。我平时帮不少团队审稿、写选题、看内容方案,最近一年收到最高频的抱怨是:** "这文章一看就是AI写的,没法用。"** 机器写的文字语法挑不出毛病,但读起来就是不对劲——句式过于规整、段落节奏千篇一律、转折…

2026/10/20 19:28:58 阅读更多 →
符号距离场与浸入边界:OpenFOAM高效CFD边界处理框架sdfibm

符号距离场与浸入边界:OpenFOAM高效CFD边界处理框架sdfibm

简介:一套面向计算流体力学研究者和OpenFOAM中高阶用户的浸入边界方法实现,利用符号距离场描述固体边界,并与OpenFOAM v6结合模拟流固耦合和多颗粒流场景,适合从事海洋工程、生物流体、颗粒输运等方向的研究者快速搭建数值实验环境…

2026/10/20 19:28:58 阅读更多 →
CNN-BiLSTM-SE模型在多变量时间序列回归预测中的实践解析

CNN-BiLSTM-SE模型在多变量时间序列回归预测中的实践解析

前段时间整理之前的实验代码,翻到了这个CNN-BiLSTM-SE数据回归预测模型的项目,想了想还是值得单独写一篇技术复盘。当时面对的问题很典型:某工业场景下的一台设备,每分钟采集一次多项监测数据,包括温度、压力、振动幅度…

2026/10/20 19:28:58 阅读更多 →

最新新闻

STM32F4+FreeRTOS+FATFS+LWIP搭建FTP服务器实战

STM32F4+FreeRTOS+FATFS+LWIP搭建FTP服务器实战

简介:这份资源面向需要在STM32F4平台上实现跨系统文件传输的嵌入式开发者,尤其适合已具备一定RTOS与网络编程基础、正在做双机通信项目的工程师。工程将FreeRTOS实时操作系统、Fatfs文件系统与LWIP网络协议栈整合到STM32F4芯片上,并基于操作系…

2026/10/20 20:16:42 阅读更多 →
实测Claude2:AI聊天工具的长文本处理与提示词实战指南

实测Claude2:AI聊天工具的长文本处理与提示词实战指南

最近有个AI聊天工具让我挺上头的,就是标题里这个Claude2。坦白说,市面上号称“能聊”的AI我试过不少,但绝大多数聊不了几轮就开始露馅——忘了你前面说过什么,答非所问,翻来覆去就那几句车轱辘话。Claude2给我的感觉不…

2026/10/20 20:16:42 阅读更多 →
2026 AIGC检测算法升级,如何通过再创作稳定降AI

2026 AIGC检测算法升级,如何通过再创作稳定降AI

2026年开年,学术界被一条消息刷上热搜:某国产主流学术检测平台的AIGC检测算法完成了一次大版本升级,官方口径是“聚焦深度生成文本的识别能力”。很多研究生、高校教师和期刊编辑都在转发——有人说自己的论文送检后AI疑似比例明显抬高&#…

2026/10/20 20:16:42 阅读更多 →
GraphRAG实战:知识图谱如何补齐向量检索的短板

GraphRAG实战:知识图谱如何补齐向量检索的短板

最近一年里,凡是做企业知识库、智能客服、内部问答系统的朋友,应该都绕不开一个词——RAG。我最早入坑的时候,思路很简单:文档切块、向量化、Top-K召回、拼Prompt、交给大模型生成。这套流程跑demo确实快,但一旦落地到…

2026/10/20 20:16:42 阅读更多 →
Transformer异构加速实战:算子融合与异步调度优化

Transformer异构加速实战:算子融合与异步调度优化

长期以来,Transformer 结构的计算性能都是各大加速平台优化团队的重点攻坚对象。这个架构里的算子虽然看起来不复杂,但放到异构计算处理器上跑,出来的性能往往跟理论上限差得远。我自己在调试各类 AI 加速芯片上的推理引擎时,就反…

2026/10/20 20:16:42 阅读更多 →
专科毕业论文AI助手实用指南:从选题到答辩的8类工具全解析

专科毕业论文AI助手实用指南:从选题到答辩的8类工具全解析

专科毕业生的论文,大部分都不好写,这是实话。前阵子有位学弟问我:“学长,我专科,导师让写八千字毕业论文,又不让纯抄,这么多内容我上哪编啊?”我回了他一句话:AI工具确实…

2026/10/20 20:15:40 阅读更多 →

日新闻

CLRC663芯片Pin-to-Pin替代实战:从评估到量产全记录

CLRC663芯片Pin-to-Pin替代实战:从评估到量产全记录

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 1:01:30 阅读更多 →
ESP32舵机控制指南:原理、多路驱动与避坑实战

ESP32舵机控制指南:原理、多路驱动与避坑实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 1:01:30 阅读更多 →
位移法实现一阶低通滤波:单片机ADC采样降噪实战

位移法实现一阶低通滤波:单片机ADC采样降噪实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 1:01:30 阅读更多 →

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/20 10:02:13 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/19 17:32:41 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/20 2:50:50 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 10:02:08 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 9:50:17 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 9:50:45 阅读更多 →