九月月报:本地 LLM 的天花板是内存带宽
覆盖范围:9.7 / 9.14 / 9.21 / 9.28 四周(9.28 周含 10 月初日期)。本月工作背景一句话:直博去向落定(进化计算 × LLM 交叉方向)、Linux 笔记本改造为内网助手底座、rss-reader 立项、本地小模型部署调通。
本月方法地图
mindmap
root((九月方法))
决策方法
三步决策法
方向等于交集
性能分析
实测基线先行
内存带宽墙
系统架构
RSS 即消息队列
内网自持
任务分层
排障与迁移
服务绑定地址第一课
先底层后上层
先画全流程地图原理深读:为什么本地 3B 模型只能跑 16 tok / s
是什么:llama.cpp 在 Linux 笔记本上部署 Granite 3B(Q4 量化),实测生成速度约 16 tok / s。做优化前先测瓶颈,结论是:撞内存带宽墙,软件已无优化空间。
为什么成立(机理):自回归解码是逐 token 生成的 —— 每生成一个 token,都要把模型权重完整读一遍。batch = 1 时计算量极小、搬运量极大(算术强度约 1 FLOP / byte 量级 —— 这是推导值;Databricks 原文的表述是:decode "取决于权重加载得多快,而不是计算得多快")。于是生成速度的上限由一条公式决定:
tok/s 上限 ≈ 有效内存带宽 ÷ 权重总字节数 |
实测反过来验证了这条公式:DDR4-2667 双通道峰值带宽约 42.7 GB/s,实测 16 tok/s 占峰值约 81%(≈34.6 GB/s)。按 granite-4.2-3b 官方 Q4_K_M 权重 2.24 GB 反推:16 tok/s × 2.24 GB ≈ 35.9 GB/s,与实测同量级 —— 数字彼此咬合。内存 2667 MT/s 是平台硬件上限,换推理框架、调参数的理论空间不到两成 —— 优化方向错了,再努力也是零。
由此得到三个可迁移的推论:
- 量化不是精度妥协,是带宽优化。Q4 量化把权重复制变小,直接抬高 tok / s 上限的分母。
- 共享内存平台上核显卸载无收益。核显和 CPU 共用同一条内存带宽,数据还要多跨一次拷贝 —— 实测卸载反而降速。优化的前提是确认瓶颈资源真的被绕开了。
- 硬件升级要升级瓶颈本身。这条平台上,加内存通道 / 换更高频率内存 > 任何软件优化。
边界在哪:
- 该结论只覆盖 decode(逐 token 生成)阶段。prefill(读长上下文出首 token)是计算受限,长文档场景瓶颈会移到算力。
- 只适用于 dense(稠密)模型。granite 3B 系分两支:a800m 系是 MoE(每 token 只读被激活的那部分权重),4.1 / 4.2-3b 是 dense(每 token 读全部权重)。本文按 dense 分支处理 —— 实测带宽占用与 dense 权重体积自洽;若部署的是 MoE 分支,公式要改成 "带宽 ÷ 激活权重字节数"。
- GPU 有独立 HBM 显存,带宽与计算解耦,这套 "内存带宽决定一切" 的推理不能直接搬过去。
- batch > 1 的服务场景,吞吐瓶颈转移到算力与调度,单请求延迟与吞吐要分开讨论。
业界对照:Databricks 的推理性能指南明确 "首 token 生成通常是计算受限,后续 decode 是内存受限操作",并提出 MBU(带宽利用率)作为核心指标 —— 定义为 "达成带宽 ÷ 峰值带宽",其中达成带宽 =(模型参数总量 + KV cache)÷ 每 token 平均时间;NVIDIA 的推理优化文章也明确 "模型执行经常受限于内存带宽 —— 尤其是权重读取"。本月实测(81% 带宽占用)正是 MBU 思路在消费级硬件上的手工复现。
原理清单
- 三步决策法:自我梳理(做了什么、能做什么)→ 广泛调研(形成初判)→ 定向核实(敲定关键信息)。每一步都在收敛,避免信息不足时拍终局决定。本月用它完成直博去向、导师、方向三定。
- 方向 = 交集:新方向选 "已有积累 × 新机会" 的交集 ——LLM 工程经验(agent、RAG)× 智能优化课题,交集处最省力且有复利。
- RSS 就是消息队列:拉取式消费天然具备持久化、按需消费、削峰三个性质。由此推出消费策略:每日限额读取,不追时效。展开见已发布文章《 RSS 就是消息队列 》。
- 内网自持:抓取(firecrawl)与推理(本地 llama)都不出内网 —— 个人长期运行的系统,成本可控与数据可控是设计约束,不是加分项。
- 任务分层:3B 本地模型做分类、摘要等轻任务,重分析交给大模型;小模型的提示词要少而显式,靠它自由发挥只会翻车。
- 服务绑定地址第一课:
127.0.0.1只指当前机器。pi 连不上 llama-server,根因就是llama-server默认绑定回环地址,改0.0.0.0才对外可达。"本机服务连不上" 先查绑定地址,再查防火墙。 - 先画全流程地图再学组件:用 "电商 10 亿日志分析" 案例串起 Flume → Kafka → HDFS → Spark → Hive → Flink → MySQL,每个组件的价值只有放进整条链路才看得见。逐个背概念是低效路径。
- 先底层后上层:系统迁移的顺序是介质 → 系统 → 存储 → 环境。底层不稳,上层返工。
- 长链路沉淀成模板:海外 AI 订阅要连过支付与访问两道坎(订阅成功 ≠ 能用)。"USDT + 虚拟卡 + 地区调整" 一次打通后模板化,下次照抄。
- 时效性甄别:信息消费系统天然有 "追实时" 的冲动,但个人学习场景晚几小时读毫无损失。先判定需求真伪,再设计消费模型。
反例与边界
- 核显卸载(反直觉反例):直觉上 "把计算卸给核显" 是加速,实测反而降速 —— 共享带宽平台上,卸载没有绕开瓶颈资源,只是多了搬运成本。反直觉结果先查 "瓶颈假设" 是否成立。
- 追时效(伪需求反例):为不存在的时效要求设计实时管线,是过度设计。
参考资料
- Evolutionary Computation in the Era of LLM: Survey and Roadmap — LLM × 进化计算交叉方向的首篇系统综述,博 0 学习路线的依据。
- A Systematic Survey on LLMs for Evolutionary Optimization — 2025 最新综述,"建模→求解" 工作流框架。
- ggml-org/llama.cpp — 本地推理引擎主仓库。
- llama-server 文档 —
--host默认127.0.0.1的官方说明,绑定地址问题的出处。 - LLM Inference Performance Engineering(Databricks) — decode 内存带宽受限与 MBU 指标的权威论述。
- Mastering LLM Techniques: Inference Optimization(NVIDIA) — "模型执行受限于权重读取" 的工程佐证。
- ibm-granite(Hugging Face) — Granite 系列模型官方组织。
- granite-4.2-3b GGUF — Q4_K_M 权重 2.24 GB,带宽换算自洽计算的依据。
- RSS 2.0 Specification — RSS 规范,channel / item 结构与拉取语义。
- Why pull-based pipelines are faster(Sequin) — 拉取式消费如何用背压实现削峰,"RSS 即消息队列" 的工程学对照。
- VS Code Remote Development — 双机协同的官方方案。
- pbatard/rufus — U 盘启动盘制作工具官方仓库(ITX 装机用)。
- torchvision.datasets.MNIST — MNIST 数据集官方文档(深度学习作业)。