LocalScore 本地大模型性能基准测试指南:从单文件基准到公测排行榜

LocalScore 本地大模型性能基准测试指南:从单文件基准到公测排行榜 LocalScore 本地大模型性能基准测试指南从单文件基准到公测排行榜【免费下载链接】llamafileDistribute and run LLMs with a single file.项目地址: https://gitcode.com/GitHub_Trending/ll/llamafileLocalScore 是 llamafile 项目localscore/ 目录内置的开源 LLM 基准测试工具用于量化大语言模型在你具体硬件上的推理速度并支持把结果匿名提交到公共基准数据库 localscore.ai 供横向对比。阅读本文后你将掌握 LocalScore 的三项核心指标与评分公式、四种运行方式、全部命令行参数及输出格式并理解其背后基于 llama.cpp 的计时与采样实现原理。LocalScore 是什么LocalScore 是一个开源的本地基准测试工具由 Mozilla Builders 支持开发它基于 llama.cpp 与 Llamafile 构建。它的核心目标有两个测量量化 LLM 在你的 CPU、NVIDIA GPU、AMD GPU 或 Apple Silicon 上的实际运行速度比较通过可选的匿名结果提交构建公开的硬件性能数据库帮助社区在决定“是否在本地跑 AI 模型”以及“用什么硬件跑”时做出更明智的选择。你可以通过 localscore.ai 查看由社区提交结果汇聚成的排行榜。从源码结构看LocalScore 是一个独立的 CLI 程序入口为 localscore/main.cpp 中的main实际逻辑在 localscore/localscore.cpp 的localscore_cli通过 localscore/BUILD.mk 构建为o/$(MODE)/localscore/localscore可执行文件同时其核心测速逻辑也被整合进 llamafile 主程序通过--bench入口。LocalScore 测量什么三大核心指标LocalScore 对每个模型评估三个关键性能指标指标含义单位Prompt Processing Speed提示词处理速度系统处理输入文本的速度反映预填充prefill阶段性能tokens/s每秒令牌数Generation Speed生成速度系统生成新文本的速度反映解码decode阶段性能tokens/sTime to First Token首个令牌延迟TTFT从请求发出到第一个响应 token 出现的延迟ms毫秒评分公式三项指标的几何平均这三个指标被组合成一个单一的LocalScore数值使用几何平均geometric mean$$\text{score} 10 \cdot \sqrt[3]{\text{avg_prompt_tps} \cdot \text{avg_gen_tps} \cdot \frac{1000}{\text{avg_ttft_ms}}}$$该公式的实现可以在 localscore/localscore.cpp 的getResultsSummary中看到它对所有基准测试结果求prompt_tps、gen_tps、ttft_ms的算术平均再按上式求出performance_score。分数参考区间作为通用参考非绝对标准1000 分表现优秀250 分对大多数用户而言可接受至良好100 分相对较差基准测试的模拟场景为了让测试贴近真实使用LocalScore 内置了一组基线测试场景见 localscore/localscore.cpp 的get_baseline_test_configs每个场景由(n_prompt, n_gen)即“提示词 token 数 : 生成 token 数”组成覆盖从标题生成到长文本推理的多种负载{1024, 16}, // 64:1 title generation {4096, 256}, // 16:1 content summarization {2048, 256}, // 8:1 lots of code to fix {2048, 768}, // 3:1 standard code chat {1024, 1024}, // 1:1 code back and forth {1280, 3072}, // 1:3 reasoning over code {384, 1152}, // 1:3 code gen with back and forth {64, 1024}, // 1:16 code gen/ideation {16, 1536} // 1:96 QA, Storytelling, Reasoning测试会依次运行这 9 个负载场景每个场景按--reps指定的次数重复并分别统计提示词处理速度pp t/s、生成速度tg t/s与首个令牌延迟ttft。测试输入并非真实文本而是由随机 token 填充的模拟 prompt目的是测量硬件与推理后端的原始吞吐能力。运行 LocalScore 的四种方式LocalScore 提供四种运行途径前两种的安装包可以从 localscore.ai/download 页面获取方式适用场景1. 下载 LocalScore Bundle捆绑了二进制与模型开箱即用2. 下载 LocalScore 独立二进制自带 GGUF 模型文件灵活可控3. 运行 llamafile 的--bench已有 llamafile 模型文件≥v0.9.24. 通过已安装的 Llamafile 调用已安装 llamafile 命令行工具也可以始终选择从源码构建构建方式遵循主仓库的 Llamafile 构建说明参见 README.md 与 docs/source_installation.md。方式 1下载并运行 LocalScore BundleBundle 将 LocalScore 二进制与一个模型打包在一起访问 localscore.ai/download 获取当前可用的 bundle 即可直接运行。方式 2直接下载 LocalScore Release从 Latest Release Download Page 下载适合你操作系统的二进制macOS / Linuxchmod x localscore ./localscore -m path/to/model.ggufWindowsPowerShelllocalscore.exe -m path\to\model.gguf模型需要是 GGUF 格式llama.cpp 的标准模型格式。方式 3下载 llamafile Bundle 后运行--bench从 llamafile v0.9.2 起每一个新发布的 llamafile 都内置了 LocalScore 基准测试命令--bench无需单独下载基准工具。macOS / Linux# 从 Hugging Face 下载一个 llamafile curl -O https://huggingface.co/Mozilla/Llama-3.2-1B-Instruct-llamafile/resolve/main/Llama-3.2-1B-Instruct.Q4_K_M.llamafile # 运行 LocalScore 基准测试 chmod x Llama-3.2-1B-Instruct.Q4_K_M.llamafile ./Llama-3.2-1B-Instruct.Q4_K_M.llamafile --benchWindows从 Hugging Face 下载任意小于 4GB 的 llamafile 并运行Llama-3.2-1B-Instruct.Q4_K_M.llamafile.exe --bench注意Windows 限制受 Windows 自身限制大于 4GB 的 llamafile 无法直接运行。Windows 用户应使用独立版 LocalScore并传入 GGUF 格式模型详见后文“限制”一节。方式 4通过已安装的 Llamafile 运行如果你已经安装了 Llamafile可以直接调用它来运行基准测试macOS / Linuxllamafile --bench -m path/to/model.ggufWindowsllamafile.exe --bench -m path\to\model.gguf命令行选项详解LocalScore 的完整用法如下实际输出与源码 localscore/cmd.cpp 的print_usage一致usage: localscore [options] options: -h, --help Show this help message -m, --model filename Model to benchmark (default: path/to/default) -c, --cpu Disable GPU acceleration (alias for --gpudisabled) -g, --gpu auto|amd|apple|nvidia|disabled GPU backend to use (default: auto) -i, --gpu-index i Select GPU by index (default: 0) --list-gpus List available GPUs and exit -o, --output csv|json|md Output format (default: md) -v, --verbose Enable verbose output -y, --send-results Send results without confirmation -n, --no-send-results Disable sending results -e, --extended Run 4 repetitions (shortcut for --reps4) --long Run 16 repetitions (shortcut for --reps16) --reps N Set custom number of repetitions常用组合示例纯 CPU 运行禁用 GPU 加速等价于--gpudisabled同时将n_gpu_layers置 0./localscore -m path/to/model.gguf --cpu自动提交结果跳过确认提示直接匿名上传./localscore -m path/to/model.gguf -y每个测试重复 4 次-e是--reps4的快捷方式结果更稳定./localscore -m path/to/model.gguf -e参数背后的实现细节从 localscore/cmd.cpp 的parse_cmd_params可以看到几个值得注意的实现细节-c/--cpu与-g/--gpu disabled都会把FLAG_gpu置为LLAMAFILE_GPU_DISABLE并将n_gpu_layers设为 0而指定某个 GPU 后端时n_gpu_layers为 9999全部层卸载到 GPU。-y--send-results与-n--no-send-results是互斥的源码中会校验二者不能同时使用。--reps的下限被钳制为 1std::max(1, ...)避免 0 次重复的无意义运行。除-m/--model外也支持把模型路径作为位置参数直接传入。若未指定模型文件程序会报错退出missing model file。实际的默认值可在 localscore/cmd.cpp 的cmd_params_defaults中查看例如n_batch2048、n_ubatch512、KV cache 类型type_k/type_v在支持 AVX512-BF16 的 CPU 上默认BF16否则为F16、线程数取cpu_get_num_math()、n_gpu_layers9999优先 GPU、reps1、默认输出为控制台格式。输出格式默认-o未指定为控制台 Markdown 风格表格表头包含test测试场景名形如pp1024tg16、run number、avg time、tokens processed、pp t/s、tg t/s、ttft等列由 localscore/printer.cpp 的console_printer::print_header生成-o csv输出 CSV 表格字段与 JSON 输出一致-o json输出结构化 JSON包含runtime_infollamafile 版本与 llama.cpp commit、system_infoCPU 型号、架构、内存、内核信息、accelerator_infoGPU 名称、厂商、显存与results数组数组中每项含prompt_tps、gen_tps、ttft_ms、power_watts、samples_ns原始采样间隔等字段见 localscore/printer.cpp。说明README 帮助文本中的-o csv|json|md与源码实际支持值略有出入——源码实现localscore/cmd.cpp接受的取值是csv、json、console。以源码为准用-o console可获得默认表格输出。结果提交与数据收集提交机制基准测试完成后LocalScore 会询问是否将结果匿名提交到公共数据库Do you want to submit your results to https://localscore.ai? The results will be public (y/n):源码 localscore/localscore.cpp 的submitBenchmarkResults展示了提交流程提交目标为https://www.localscore.ai/api/resultsPOST JSON默认SEND_ASK会等待用户确认-y跳过确认直接提交-n禁止提交网络失败时采用指数退避重试第 n 次重试前等待 2^n 秒最多 3 次成功后打印结果链接Result Link: https://www.localscore.ai/result/id。收集的数据类型提交到 localscore.ai 的数据不含任何个人可识别信息仅包括CPU 型号与配置GPU 型号与配置操作系统及版本内存RAM大小基准性能指标上述三项速度指标及派生分数这些数据用于构建 LLM 推理硬件性能数据库帮助用户对比不同配置并做出知情决策。硬件与系统信息的具体采集逻辑在 localscore/system.cpp 中实现。基准测试的底层原理LocalScore 的测速核心复用 llama.cpp 的推理引擎。从 localscore/localscore.cpp 的主流程localscore_cli看一次完整基准测试的调用链为环境初始化LoadZipArgs解压嵌入参数 →parse_cmd_params解析命令行 →acceleratorSelector处理多 GPU 选择多块 NVIDIA GPU 时交互式询问主 GPU见 localscore/localscore.cpp→ 采集运行时/系统/加速器信息初始化 llama 后端llama_backend_init()llama_numa_init()非 verbose 模式下静默日志加载模型llama_load_model_from_file并读取模型的general.name、量化类型、大小、参数量等元信息见 localscore/benchmark.cpp 的test构造函数预热warmupperform_warmup→warmup_run先用 1024 个 prompt token 和 16 个生成 token 各跑一遍排除冷启动/缓存初始化对结果的影响见 localscore/localscore.cpp逐个运行基线场景对 9 个(n_prompt, n_gen)场景通过llama_new_context_with_model创建独立上下文运行test.run()并用一个独立的pthread线程在控制台实时刷新生成速度列见 localscore/localscore.cpp统计与汇总test类localscore/benchmark.h记录每次重复的prompt_intervals、gen_intervals、time_to_first_token等时间采样用avg_ns/stdev_ns/avg_ts计算平均值、标准差与 tokens/sttft()返回首个 token 延迟平均值提交与展示汇总三项指标的平均值计算 LocalScore 分数用彩色终端输出分数、生成速度、提示词处理速度与 TTFT见displayResults随后进入提交确认流程。测速过程中测试使用随机 token 而非真实文本prompt 阶段首 token 使用 BOS 标记、其余为std::rand() % n_vocab随机 token分批每批n_batch2048通过llama_decode喂给模型生成阶段则单 token 逐次解码并同步llama_synchronize以排除异步流水线对计时的影响见 localscore/benchmark.cpp。此外LocalScore 还通过 localscore/powersampler.h 提供的功率采样器记录功耗power_watts进而给出每瓦特吞吐量prompt_tps_watt、gen_tps_watt见get_tps_watt可用于衡量能效。限制与已知问题Windows 文件大小限制由于 Windows 限制大于 4GB 的 llamafile 无法直接运行。Windows 用户应把 LocalScore 作为独立工具使用并传入 GGUF 格式模型。单 GPU 聚焦目前 LocalScore 仅支持单 GPU 配置这也是大多数本地运行 LLM 用户最实际的场景多 GPU 场景下仅交互式选择主 GPU不做多卡并行。早期开发阶段LocalScore 仍处于相对早期开发阶段可能会遇到偶发问题遇到问题请到 Issue Tracker 反馈。故障排查LocalScore 的常见问题与 Llamafile 高度类似完整排查指南见 localscore/doc/troubleshooting.md要点如下Windows超过 4GB 的 bundle 无法运行请改用独立工具 GGUF 模型在 WSL2 中需要注册 cosmopolitian APE binfmt 服务将cosmo-binfmt.service写入/etc/systemd/system/并把 APE 加载器安装到/usr/bin/ape后systemctl enable --now cosmo-binfmt必要时通过echo -1 /proc/sys/fs/binfmt_misc/WSLInteropWindows 11 为WSLInterop-late或在/etc/wsl.conf中设置[interop] enabledfalse禁用 WIN32 互操作另外 Windows 上 LocalScore 性能暂时慢于 Linux属预期现象。Linux若出现run-detectors或 WINE 相关报错是binfmt_misc注册冲突可为 APE 格式补充注册:APE:与:APE-jart:两条规则。macOSApple Silicon 上需安装 Xcode Command Line Tools 以便 llamafile 自举zsh5.9 之前版本及部分 shell/Pythonsubprocess环境下可用sh -c ./llamafile规避若出现“无法验证开发者”提示可在系统设置的“隐私与安全性”中允许或用sudo spctl --master-disable临时关闭校验后恢复。许可证LocalScore 以 MIT License 发布其构建依赖的 llama.cpp 与 Llamafile 亦遵循各自的许可条款。它是 Mozilla Builders 支持的项目构建于 llama.cpp 与 Llamafile 的杰出工作之上。【免费下载链接】llamafileDistribute and run LLMs with a single file.项目地址: https://gitcode.com/GitHub_Trending/ll/llamafile创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考