Edge0 基准测试数据全解读:15 tok/s 解码、1GB 内存占用、冷/热 Prefill 差异一次说清
Edge0 基准测试数据全解读15 tok/s 解码、1GB 内存占用、冷/热 Prefill 差异一次说清【免费下载链接】Edge0项目地址: https://gitcode.com/gh_mirrors/ed/Edge0Edge0 是一款开源的流式 MoE 推理框架核心能力是SSD 专家卸载 Recover-LoRA prerouter 路由预测让 35B 级大模型在消费级硬件上跑起来。本文带你逐行读懂官方基准数据解码 15 tok/s 是怎么测出来的、为什么峰值内存只要 1 GiB、冷/热 Prefill 相差数倍的背后又是什么原理——一次说清。先看结论两个档位的官方基准数据Edge0 随框架提供两个模型档位官方基准数据实测于Mac mini M4 Pro24 GB如下档位解码速度Prefill 吞吐冷 / 热*峰值活跃内存磁盘占用edge0-35b40 层 × 256 专家K414.9–17.7 tok/s113 / 140 tok/s2.9 GiB~23 GBedge0-8b24 层 × 128 专家K823.9–25.3 tok/s500 / 1428 tok/s1.0 GiB~4.2 GB*Prefill 吞吐基于约 3.3k token 的长提示词测量。数据完整出处见 README.md 的 Benchmark 一节模型细节见 docs/models/edge0-35b.md 与 docs/models/edge0-8b.md。 一眼看重点35B 级模型跑在15 tok/s左右肉眼流畅阅读速度而内存占用只有 2.9 GiB——它跑的不是23 GB 全量加载而是活跃专家集。这正是下面要拆解的核心。基准测试方法数字是怎么测出来的解读数据之前先明确测量口径实现见 python/examples/bench.pyPrefill 阶段用约 3.3k token 的合成长提示词BENCH_LONG1避免短提示词只测出固定开销解码阶段先跑 10 步不计时的采样预热首 token 受专家冷启动影响大再计时采样 200 个 token每个档位跑 2 轮报告 tok/s 均值与 MLX 峰值活跃内存。新手注意tok/s 指解码decode速度即逐 token 生成速度Prefill 吞吐是理解长输入的速度两者是完全不同的指标。15 tok/s 解码35B 模型为何能流畅对话edge0-35b解码实测 14.9–17.7 tok/s接近人类快速阅读速度。三个关键原因每 token 只激活少量专家MoE 架构下每层仅路由 K4 个专家35b或 K8 个8b单 token 计算量远小于稠密模型prerouter 提前一步预测路由训练好的预测头在生成第 t 个 token 时就预判第 t1 步要用的专家集合让 SSD 读取与 GPU 计算完全重叠官方数据显示解码吞吐最多可提升59%机制详见 docs/prerouter.md8b 档位更快edge0-8b解码 23.9–25.3 tok/s参数更少约 7.9B 总 / 1.2B 激活适合延迟敏感场景。1 GiB 内存占用峰值内存由谁决定这里最容易误解峰值活跃内存 ≠ 模型大小。edge0-8bcheckpoint 有 4.2 GB峰值内存仅~1.0 GiBedge0-35bcheckpoint 有 23 GB峰值内存仅~2.9 GiB原理详见 docs/streaming.md35b 模型每层 256 个专家的 4-bit 权重约 310 MB40 层全驻留远超设备内存。Edge0 的做法是——权重留在 SSD按需求 mmap 进 GPU再用 LRU 缓存 预取 固定槽位把每步搬运几十 MB降到几乎不搬。内存上限由活跃专家集决定而不是参数量。⚠️ 部署建议给系统、tokenizer 和长上下文 KV 增长留出余量24 GB 机型跑 35b 很从容16 GB 机型建议关注按需 Prefill选项下文会讲。冷/热 Prefill 差异同一份数据为何差 3 倍表中113 / 140与500 / 1428 tok/s就是冷/热之分冷Cold进程启动后的第一个请求专家权重从 SSD 首次故障读入读的是整块文件热Warm后续请求权重已在**页缓存page cache**中几乎零 SSD 开销。以edge0-8b为例冷热 Prefill 吞吐差2.86 倍。更极端的例子来自 27-token 短提示词的冷缓存实测出处docs/models/edge0-8b.mdPrefill 策略冷缓存读取量冷缓存耗时E3b 整层加载默认≈4.1 GiB~5.3 s按需加载--prefill-ondemand≈0.4–0.8 GiB0.6–1.1 s而热缓存下反过来整层加载最快27 token 提示词 0.24 s vs 按需 0.37 s。所以官方建议内存大、页缓存装得下 checkpoint 的机器用默认路径16 GB 级内存机器改用--prefill-ondemand只读路由命中的专家冷启动快 5 倍。 实际体验含义Edge0 服务首次请求稍慢是正常的权重从 SSD 读入之后对话会明显更流畅——这不是 bug而是 SSD 流式卸载的正常行为。如何复现这份基准数据两条命令即可需先安装框架并下载模型详见 README.md 的 Getting Startedcd python python examples/bench.py edge0-35b # 通过 $EDGE0_35B_MODEL 定位模型 python examples/bench.py edge0-8b # 通过 $EDGE0_8B_MODEL 定位模型 BENCH_LONG1 python examples/bench.py edge0-8b # 启用 ~3k token 长提示词更多可调项--ntok、--warmup、采样参数见 python/examples/bench.py 文件头部说明。整体数据流Prefill 整层加载 → 双缓冲解码 → 采样可参考 docs/architecture.md。一张图收尾数据全解读速查指标数值一句话解读35b 解码14.9–17.7 tok/sprerouter 预测让 SSD 读取被计算掩盖8b 解码23.9–25.3 tok/s小激活参数 K8 路由的高吞吐档位35b 峰值内存~2.9 GiB只驻留活跃专家而非 23 GB 全量8b 峰值内存~1.0 GiB4.2 GB checkpoint → 1 GiB 内存冷 Prefill8b500 tok/s首请求从 SSD 读入权重热 Prefill8b1428 tok/s页缓存驻留差 2.86 倍理解这三个数字就理解了 Edge0 的核心设计内存天花板与模型大小解耦磁盘带宽被预测性预取掩盖。下次你在 Mac mini 上跑 35B 模型只看到 ~3 GB 内存占用时就不用惊讶了 延伸阅读docs/models/edge0-35b.md · docs/models/edge0-8b.md · docs/streaming.md · docs/prerouter.md【免费下载链接】Edge0项目地址: https://gitcode.com/gh_mirrors/ed/Edge0创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考