llama.cpp 与 FreeToken 的模型卸载对比
llama.cpp 的 gpu-layers 以完整层为静态单位,cpu-moe 把专家权重放在 CPU;FreeToken 对每个层和专家建立动态持久缓存,并按带宽拆分缓存未命中。
三种“放不下”的处理方式,移动单位并不一样
llama.cpp -ngl
以完整层为单位,加载时静态放置
CPU / RAM
第 0~39 层
GPU / VRAM
第 40~63 层
每个 token 仍经过所有层
llama.cpp --cpu-moe
专门把 MoE 专家 tensor 留在 CPU
GPU:非专家权重
Attention / Router 等
以及本次 forward 的临时输入
CPU:完整专家 tensor
根据路由处理 selected sub-row
可能搬运或 CPU 计算
官方 master:无跨 step slot 映射
专家缓存已有 RFC / PR,仍在演进
FreeToken hybrid
以 (layer, expert) 为动态单位
GPU:全局 LRU slot
hit 跨 token 保留
RAM:完整专家池
miss 的 source of truth
Pinned banks + CPU executor
q*:部分 fill,部分 CPU
每一步跟随真实路由和带宽
Prefill 另有完整层双缓冲
Dense / Apple Silicon 更偏向 llama.cpp;超显存 MoE 的动态专家工作集是 FreeToken 的主场(截至 2026-08-23)