news 2026/9/9 22:31:16

如何用 --no-optimize 基线与优化运行对比测量 Headroom 压缩对本地模型 prefill 的影响

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
如何用 --no-optimize 基线与优化运行对比测量 Headroom 压缩对本地模型 prefill 的影响

如何用 --no-optimize 基线与优化运行对比测量 Headroom 压缩对本地模型 prefill 的影响

【免费下载链接】headroomCompress tool outputs, logs, files, and RAG chunks before they reach the LLM. 20% fewer tokens for coding agents, 60-95% fewer tokens for JSON, same answers. Library, proxy, MCP server.项目地址: https://gitcode.com/GitHub_Trending/head/headroom

本地模型不按 token 计费,但每次 prompt token 都实打实地消耗在 prefill 上——在 Apple Silicon 等本地推理环境里,长会话的 coding agent 往往瓶颈就在 prompt 处理而不是生成速度。本文的操作是:用同一个任务分别跑一次--no-optimize基线和一次开启优化的运行,通过 proxy dashboard 的 before/after token 计数,量化 Headroom 压缩减少了多少发往本地模型的 prompt token。前提是本地模型服务提供 OpenAI 兼容接口(接受/v1/chat/completions/v1/responses),例如 MLX/OMLX、vLLM、LM Studio、Ollama 的 OpenAI-compatible endpoint。完整流程见 Local LLM Prefill Benchmark。

准备:本地推理服务与 Headroom 安装

先启动你的本地 OpenAI 兼容模型服务。本文档假定它监听在http://127.0.0.1:8000,下文所有命令按这一地址书写,如果你的服务端口或地址不同,替换对应值即可:

pip install "headroom-ai[proxy]"

--no-optimizeheadroom proxy的内置选项(默认false),作用是 Disable optimization (passthrough mode),即代理只做流量转发、不做任何压缩。选项说明见 Proxy Server 文档 的 CLI options 表。

第一步:--no-optimize 基线运行

以优化禁用的方式启动 Headroom,作为透明代理:

headroom proxy \ --port 8787 \ --openai-api-url http://127.0.0.1:8000 \ --no-optimize

把 agent 或应用的指向从本地服务改到 Headroom 代理:

export OPENAI_BASE_URL=http://127.0.0.1:8787/v1 export OPENAI_API_KEY=local

然后跑一个真实的任务。文档建议选择 coding-agent 的 refactor 类任务作为基准,因为这类任务会产生重复的文件读取、工具结果、lint/测试输出和不断增长的会话上下文。

运行期间打开 dashboard 观察:

headroom dashboard --port 8787 --no-open # 或直接打开 http://127.0.0.1:8787/dashboard

记录基线 session 的 token 总数。判断基线是否可信有一个文档给出的检查点:在--no-optimize下,before 和 after 的 token 计数应当一致,因为 Headroom 此时只是转发流量。

两次运行之间:重置基准状态

第二次运行前必须重置基准状态,否则两次结果不可比。文档列出的重置条件是:

  • 回滚第一次运行造成的代码或数据变更(coding-agent 测试中,干净的 git worktree 是最简单的重置点)
  • 开一个新的 agent session
  • 使用相同的模型和本地服务
  • 使用相同的 prompt
  • 不改动无关的 flag 或服务端设置

第二步:不带 --no-optimize 的优化运行

重启 Headroom,去掉--no-optimize

headroom proxy \ --port 8787 \ --openai-api-url http://127.0.0.1:8000

用相同的OPENAI_BASE_URL和 prompt 再跑一次同一任务,在 dashboard 上观察该 session 的 before/after token 计数。

这里的 savings 百分比是发往本地模型的 prompt token 减少量。需要注意它的含义边界:这不会让模型的 prefill kernel 本身变快,而是减少了 kernel 需要处理的 prompt 量。

可选:带 --learn 学习的运行

拿到基线后,可以把启用学习作为第三个独立条件来测:

headroom proxy \ --port 8787 \ --openai-api-url http://127.0.0.1:8000 \ --learn

--learn隐含启用 memory,让 Headroom 从 proxy session 中学习重复出现的流量模式。文档要求把它当作独立的 benchmark 条件处理:passthrough、optimized、optimized-with-learning 三种运行分别对比,不要混在一起归因。

记录与解读基准结果

一份可用的本地 prefill 基准报告,文档给出的字段如下:

FieldExample
Local serverMLX, vLLM, LM Studio, Ollama-compatible endpoint
Modellocal model name and quantization, if relevant
HardwareMac model, RAM, or GPU/CPU target
Agent/clientcoding agent or app name
Taskshort description of the repeated task
Baseline tokensdashboard before/after total with--no-optimize
Optimized tokensdashboard before/after total without--no-optimize
Savingsdashboard percentage
Noteswhether--learn,--memory, or other flags were enabled

解读时有两个文档明确给出的判断依据:

  • 本地模型与托管 API 的价值不同:托管 API 下减少输入 token 通常意味着更低的成本和延迟;本地模型下,减少输入 token 主要意味着更少的 prefill 工作和更低的内存压力。
  • 长会话的 agent 任务通常比短对话轮次收益更大,因为重复的文件读取、工具输出和日志会产生更多可压缩上下文;如果任务以短自然语言轮次为主,预期收益更小。

最后一条是文档强调的对比纪律:不要用冷启动的第一次运行去对比已经热身的第二次运行,再把全部改善归因于压缩。保持服务、模型、prompt 和 agent 任务稳定,以 dashboard 的 token 计数作为主要测量口径。

【免费下载链接】headroomCompress tool outputs, logs, files, and RAG chunks before they reach the LLM. 20% fewer tokens for coding agents, 60-95% fewer tokens for JSON, same answers. Library, proxy, MCP server.项目地址: https://gitcode.com/GitHub_Trending/head/headroom

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/9 22:30:44

如何用 bsim 命令行从本地 Ghidra 项目生成并提交函数签名文件

如何用 bsim 命令行从本地 Ghidra 项目生成并提交函数签名文件 【免费下载链接】ghidra Ghidra is a software reverse engineering (SRE) framework 项目地址: https://gitcode.com/GitHub_Trending/gh/ghidra BSim 要在 BSim 数据库里检索相似函数,前提是先…

作者头像 李华
网站建设 2026/9/9 22:27:03

Python数据处理作业实战:从解压zip到数据清洗与提交

简介:这是一份面向北京邮电大学《Python程序设计》课程的数据处理作业合集,目标读者是正在学习Python数据分析、爬虫与可视化的在校生及自学者。压缩包共103个文件,体积84.46MB,以Python脚本(.py)、Jupyter…

作者头像 李华
网站建设 2026/9/9 22:26:47

AI系统架构分层指南:Workflow与Inference的边界与协作

我这两年跟不少团队聊过AI系统架构,发现一个很有意思的现象:刚把模型训练跑通的人,几乎都会觉得"分层"是多余的。逻辑很简单——一个脚本里把数据处理、模型调用、结果拼装全写完,调通就能上线,为什么要拆成…

作者头像 李华
网站建设 2026/9/9 22:26:16

从零搭建LeNet风格CNN:PyTorch实现MNIST图像分类

前两篇我们把卷积的计算方式、卷积核的含义、特征图是怎么来的这些基础概念过了一遍,可能你已经有点感觉了:卷积本身不复杂,复杂的是怎么组织成一整套能解决实际问题的网络。这一篇就干一件事——把前面那些零散概念组装起来,搭出…

作者头像 李华