这个项目能做什么

edge-llm-bench 是一个中立、可复现的基准测试框架,用于在真实设备上运行本地 LLM 引擎,其设计目标是持续运行,而非一次性的测量活动。它面向 macOS、iOS 和 Android 硬件。 覆盖的引擎包括 LiteRT-LM、llama.cpp、MLX、Apple Core AI 和 Cactus,每个版本锁定都记录在 environment.lock.json 中。涉及的设备包括 Mac Studio(M4 Max)、iPhone 17 Pro、Pixel 8a 和 Galaxy S26。所有结果共享同一套 schema(schema/result.v1.json)、同一个累积层和同一种排行榜格式。 该仓库提供流水线、每一条原始采集记录以及机器可读的回归判定,但刻意不发布跨运行时的排名。用户使用 build_summary.py 和 render_leaderboard.py,从随附的原始数据在本地生成自己的排行榜,产出被 gitignore 忽略的 LEADERBOARD.md。 核心命令包括 release-watch(将上游发布与锁定版本进行比对)、matrix(运行由基准配置组成的 cells 文件)和 regress(将某个引擎版本与基线进行比对)。添加一个模型只需在 cells 文件中写一行。 每次运行都会在 results/raw/ 下为每条记录输出 schema-v1 JSON 及其原始控制台日志。派生的 CSV 位于 results/summary/,回归判定以 JSON 形式持久保存在 results/regression-reports/ 下。CI 会保持这些内容一致。 各平台的安装路径不同。Mac 通道使用 Homebrew、用于内置引擎的 bootstrap 脚本以及 CLI 构建。Android 通道使用发布页面提供的预构建引擎二进制文件,避免 bazel/NDK 构建。iPhone 通道需要 Xcode 签名以及仅限 GUI 的内存授权,因此是安装最繁重的。 公平性与诚实性机制是核心特性。每一行都记录其配方,包括量化和引擎锁定版本,因为在不同配方下得到的更快数字代表的是不同的部署配置。试验离散度过大会导致某个 cell 被标记为 UNRELIABLE,而不是被打分。失败的运行、崩溃和 OOM 会连同原因保留在表格中。跨会话差异通过会话锚点进行归一化。预算或模式不匹配时拒绝打分。当一次运行起始温度过高或离散度过大时,Mac 和 iPhone 的采集会被自动隔离并重试一次。 覆盖情况按 measured(存在已存储的采集数据)、wired(可在锁定版本下构建但尚无采集数据)或 n/a 并附上说明原因来跟踪。LiteRT-LM 在全部四台设备上均已测量;llama.cpp 在 Android 设备上已测量;MLX 和 Core AI 仅限 Apple;Cactus 没有 Mac 分支,Android 支持已在计划中。已披露的缺口包括:Android LiteRT NPU 仅为 Early Access;Android llama.cpp 使用官方 CPU 发布二进制文件;Android v1 缺少热态机制和 TTFT 测量。 一项耐久性任务(endurance-chat-30m)测量的是持续行为,而非单轮速度:一个引擎进程、一段 KV 缓存不断累积的对话、一个固定的 12 条提示词脚本,以及每轮原生 256 token 的上限。每一轮记录解码速率、KV 占用、内存、热状态和退化情况。在第 37 轮发生崩溃时,第 1-36 轮会作为证据保留。会话会得出四项判定:解码衰减、内存斜率、退化起始和完成情况。目前存在 Mac 和 Android(Galaxy S26)通道,且仅支持 LiteRT-LM。 该仓库包含一份种子基线,来自 2026-08-17 在 Pixel 8a 和 Mac Studio M4 Max 上进行的 LiteRT-LM v0.15.0 到 v0.16.0 回归运行。它是从 apple-silicon-llm-bench 中拆分出来的,后者仍是测量档案库。采用 MIT 许可证。