<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>On-device LLM | Qianlong Sang</title><link>https://codefuturesql.top/tag/on-device-llm/</link><atom:link href="https://codefuturesql.top/tag/on-device-llm/index.xml" rel="self" type="application/rss+xml"/><description>On-device LLM</description><generator>Hugo Blox Builder (https://hugoblox.com)</generator><language>en-us</language><lastBuildDate>Sun, 20 Sep 2026 18:54:00 +0800</lastBuildDate><image><url>https://codefuturesql.top/media/icon_hu0b7a4cb9992c9ac0e91bd28ffd38dd00_9727_512x512_fill_lanczos_center_3.png</url><title>On-device LLM</title><link>https://codefuturesql.top/tag/on-device-llm/</link></image><item><title>Weekly #2 · 酸汤初尝</title><link>https://codefuturesql.top/weekly/2/</link><pubDate>Sun, 20 Sep 2026 18:54:00 +0800</pubDate><guid>https://codefuturesql.top/weekly/2/</guid><description>&lt;h2 id="写在前面">写在前面&lt;/h2>
&lt;p>这周试了试 Orca，也读了 mzCache，顺便开始折腾 Sereno 的复现。周末还去蛇口吃了一顿贵州酸汤火锅，不过实际吃完觉得比较一般，只能给三颗星。&lt;/p>
&lt;h2 id="本周工具orca">本周工具：Orca&lt;/h2>
&lt;figure class="weekly-photo weekly-photo-wide">&lt;img src="https://codefuturesql.top/weekly/2/orca-agent-ide_hu87545e63c0f067c3bfd16f573f6df73b_253381_1200x675_fill_q88_lanczos_center_3.png" width="1200" height="675" alt="Orca agent IDE 的多代理与终端界面" loading="lazy" decoding="async">
&lt;figcaption>Orca：面向 coding agents 的开发环境 &lt;span aria-hidden="true">·&lt;/span> &lt;a href="https://www.onorca.dev/" target="_blank" rel="noopener">Orca 官方网站&lt;/a>
&lt;/figcaption>
&lt;/figure>
&lt;p>&lt;a href="https://www.onorca.dev/" target="_blank" rel="noopener">Orca&lt;/a> 把自己称为 &lt;strong>Agent Development Environment&lt;/strong>。它不是新的模型或 coding agent，而是把 Codex、Claude Code、OpenCode 等命令行 agent，以及终端、diff、浏览器和 Git 工作流集中到同一个应用里。&lt;/p>
&lt;p>它最吸引我的地方，是默认把并行工作当作一等公民：每个任务运行在独立的 Git worktree 中，可以让多个 agent 同时探索不同方案，最后再比较和合并结果，而不必反复 stash 或切换分支。&lt;/p>
&lt;ul>
&lt;li>&lt;strong>多 agent 并行。&lt;/strong> 同一项目可以同时运行多个 coding agents，每个任务互不干扰。&lt;/li>
&lt;li>&lt;strong>完整开发闭环。&lt;/strong> 终端、代码差异、浏览器、文件和任务状态都留在一个界面里。&lt;/li>
&lt;li>&lt;strong>沿用已有订阅。&lt;/strong> 可以直接接入已经在使用的 agent CLI，不需要更换模型服务。&lt;/li>
&lt;li>&lt;strong>开源且跨平台。&lt;/strong> 项目采用 MIT License，支持 macOS、Windows 和 Linux。&lt;/li>
&lt;/ul>
&lt;p>如果工作流已经从“偶尔问一次 agent”变成“同时调度多个 agent”，Orca 值得试一试。它解决的不是单次生成质量，而是并行任务的隔离、追踪和收尾成本。&lt;/p>
&lt;h2 id="本周论文mzcache">本周论文：mzCache&lt;/h2>
&lt;figure class="weekly-photo weekly-photo-landscape">&lt;img src="https://codefuturesql.top/weekly/2/mzcache-system-overview_hu5e8e8841e6f299bd8daa85c1244bc885_96250_1000x667_fill_q88_lanczos_center_3.png" width="1000" height="667" alt="mzCache 内存驱逐与恢复流程图" loading="lazy" decoding="async">
&lt;figcaption>mzCache 的恢复导向内存管理：空闲阶段驱逐，推理阶段并行恢复 &lt;span aria-hidden="true">·&lt;/span> &lt;a href="https://arxiv.org/abs/2609.01338" target="_blank" rel="noopener">mzCache 论文（arXiv）&lt;/a>
&lt;/figcaption>
&lt;/figure>
&lt;p>&lt;a href="https://arxiv.org/abs/2609.01338" target="_blank" rel="noopener">mzCache: On-Device LLM Memory Management under Multitasking&lt;/a> 是一篇 MobiCom 2026 论文。它关注一个很具体的移动端问题：用户切换到其他应用后，系统可能在内存压力下驱逐 LLM 的模型权重与 KV cache；等下一次请求到来，再从存储恢复或重新计算，会显著拉长首 token 延迟。&lt;/p>
&lt;p>mzCache 的核心不是“永远占住内存”，而是让内存能够按压力弹性释放，同时始终为快速恢复做好准备：&lt;/p>
&lt;ul>
&lt;li>把权重和 KV cache 拆成细粒度共享缓冲区，只驱逐真正需要释放的部分；&lt;/li>
&lt;li>用 &lt;strong>hybrid swap&lt;/strong> 同时利用内存压缩区与存储读取，平衡两条恢复路径；&lt;/li>
&lt;li>按 &lt;strong>backward-out、forward-in&lt;/strong> 的顺序处理层，让 GPU 先使用仍在内存中的前层开始计算，CPU 同时恢复后续数据。&lt;/li>
&lt;/ul>
&lt;p>论文在商业手机和多种模型上实现于 llama.cpp，相比基于存储的 partial offload，将 Time-to-First-Token 降低了 &lt;strong>2.1–5.5 倍&lt;/strong>。我喜欢这篇工作的地方，是它没有把移动端统一内存只视作限制，而是把 CPU、GPU 和存储之间可并行恢复的机会真正利用了起来。&lt;/p>
&lt;h2 id="复现记录sereno">复现记录：Sereno&lt;/h2>
&lt;figure class="weekly-photo weekly-photo-wide">&lt;img src="https://codefuturesql.top/weekly/2/sereno-design-overview_hu2fc37dccce5ab082a87a854368d15b45_162647_1200x675_fill_q88_lanczos_center_3.png" width="1200" height="675" alt="Sereno 感知、决策与执行闭环设计图" loading="lazy" decoding="async">
&lt;figcaption>Sereno：通过弹性 speculative decoding 动态让出 NPU 内存带宽 &lt;span aria-hidden="true">·&lt;/span> &lt;a href="https://www.usenix.org/conference/osdi26/presentation/xin" target="_blank" rel="noopener">Sereno 论文（USENIX OSDI 2026）&lt;/a>
&lt;/figcaption>
&lt;/figure>
&lt;p>我正在尝试复现 &lt;a href="https://www.usenix.org/conference/osdi26/presentation/xin" target="_blank" rel="noopener">Sereno&lt;/a>。这篇 OSDI 2026 工作研究后台移动端 LLM 推理对前台应用的影响：NPU 的内存流量拥有较高优先级，后台推理自身的吞吐下降很小，却会让前台应用的总体 jank rate 上升 &lt;strong>153%&lt;/strong>。&lt;/p>
&lt;p>Sereno 的关键思路很巧：它不只把 speculative decoding 当作加速手段，而是把 draft 阶段拆成可中断的细粒度执行单元。系统感知到带宽争用后，可以立即中止部分 draft、调整 verification batch，并在必要时插入短暂的 micro-sleep，把内存带宽让给前台，同时保留已经完成的推理进度。&lt;/p>
&lt;p>论文报告，Sereno 最多可降低 &lt;strong>92.6%&lt;/strong> 的前台 jank（平均 58.5%），同时把 LLM 吞吐最高提升 &lt;strong>67.9%&lt;/strong>（平均 26.4%）。复现时我想先确认三个层次：稳定触发前后台带宽争用、复现 jank 与吞吐的不对称变化，再验证细粒度 yield point 是否真的能形成可控的 Sense–Decide–Act 闭环。先把测量链路做可靠，再逐步接近完整机制。&lt;/p>
&lt;h2 id="本周一餐酸汤初尝">本周一餐：酸汤初尝&lt;/h2>
&lt;figure class="weekly-photo weekly-photo-landscape">&lt;img src="https://codefuturesql.top/weekly/2/suangugu-sour-soup-hotpot_hu8a8ecbffb0bfbad41cf0036f185ed5e4_322024_1000x667_fill_q88_lanczos_center.jpg" width="1000" height="667" alt="蛇口酸咕咕贵州酸汤火锅的双拼锅底" loading="lazy" decoding="async">
&lt;figcaption>蛇口 · 酸咕咕贵州酸汤火锅，个人评分：★★★☆☆
&lt;/figcaption>
&lt;/figure>
&lt;p>这周在蛇口吃了酸咕咕贵州酸汤火锅，点的是双拼锅，一边偏酸辣，另一边清淡一些。两种锅底各有味道，但整体并没有带来太多惊喜。&lt;/p>
&lt;p>不过实际吃下来，我的评价是 &lt;strong>★★★☆☆&lt;/strong>。酸汤本身有辨识度，也确实开胃，但整顿饭没有留下特别强的记忆点，属于可以尝鲜、却未必会专程再去的一家。&lt;/p></description></item></channel></rss>