一句话定义:统一内存(Unified Memory)是指 CPU、GPU 和其他加速单元共用同一块物理内存、同一套地址空间,数据不需要在两边来回拷贝。
打个比方
传统电脑像两个仓库:CPU 用系统内存(RAM),GPU 用独立显存(VRAM),中间只有一条叫 PCIe 的乡间小路。要一起干活,就得先把货物装车、运过去、卸下来,用完再运回来。货物越大,路上越费时间,而且两边仓库不能互相借空间——一个堆满了,另一个空着也没用。
统一内存架构(Unified Memory Architecture, UMA)则是把两个仓库合并成一个大通间,谁都能直接伸手取货,不用装车。
Apple Silicon 走的就是这条路:它把 CPU、GPU、神经引擎和内存控制器做进同一块芯片,内存紧贴芯片放置,所有单元通过同一条高带宽通路访问同一块内存。游戏主机用的也是类似思路。
和相邻概念的区别
这里有个容易混淆的点:NVIDIA 在 CUDA 里也有一个叫 Unified Memory 的东西,那是编程模型层面的统一地址空间,底层依然靠分页迁移在 CPU 和 GPU 之间搬数据,只是由驱动自动完成、不用手写拷贝。而 Apple Silicon 的统一内存是物理层面真的只有一块内存。两者目标相似,实现路径完全不同。
| 对比项 | 传统独显架构 | 统一内存架构 |
|---|---|---|
| 内存归属 | CPU 系统内存 + GPU 独立显存 | 同一块物理内存 |
| 数据搬运 | 需要显式拷贝,走 PCIe | 无需拷贝,同一地址空间 |
| 模型体积上限 | 主要由显存容量决定 | 主要由整机总内存决定 |
| 带宽 | 专用显存带宽通常更高 | 全芯片共享,一般低于高端独显 |
对本地跑大模型意味着什么
大模型推理有个残酷的硬约束:权重必须能装进内存。算法很朴素——模型体积约等于参数量乘以每参数的字节数:半精度约 2 字节,8 位量化约 1 字节,4 位量化约 0.5 字节。一个 700 亿参数的模型做 4 位量化,光权重就要 30 多 GB。此外还有 AI 词典:KV Cache">KV Cache,上下文越长占用越大。
在传统独显机器上,这 30 多 GB 必须挤进显存。显存不够怎么办?要么把部分层卸载到 CPU 内存,速度断崖式下跌;要么换个更小的模型。而统一内存下,GPU 能访问的内存池跟着整机总内存走,"装不下"的门槛被大幅降低——这正是某些内存配置较高的轻薄本能跑起大模型,而一些带独显的机器反而吃力的原因。
但别只看容量。生成阶段(decode)是内存带宽受限的:每吐出一个 token,都要把权重完整读一遍。所以带宽决定了速度上限,而统一内存的带宽要和 CPU、系统、其他应用一起分。加上系统本身和其他 App 也占内存,实际能留给模型的往往小于标称总容量;内存吃紧时触发交换(swap),速度会明显下滑。
对从业者的实际建议:挑本地推理机器时,先算"内存总量 ÷ 每参数字节"能装下多大的量化模型,再看带宽,最后才看算力核心数。具体机型的最大内存配置与带宽指标,以官方页面为准。
