/images/avatar.jpg

lilfry's library

🤖 记录LLM,agent,算法与leetcode,还有一些随想。

一个小小的互联网自留地

Coding Agent 最新论文与工程调研

这轮调研的核心问题是:为什么 GPT/Codex、Claude Code 这类 coding agent 突然变得这么能干?

我的结论先放前面:它们不是单靠“模型会写代码”变强的,而是被一整套新的训练与工程范式推上去的:

  1. 数据从代码片段变成真实软件工程任务:GitHub issue、PR、测试、依赖、Docker 环境、终端日志、代码审查意见、失败轨迹都成了训练资产。
  2. 训练从 next-token code completion 走向可验证交互:SFT 学轨迹,RL 学“跑测试、看失败、改补丁、再验证”的闭环,critic/verifier 学会挑更可能通过的 patch。
  3. terminal 成了核心训练环境:真实 agent 不是只输出 diff,而是在 shell 里安装依赖、读日志、运行测试、grep/rg、编辑文件、回滚、调试。
  4. 长上下文不只是 1M token,而是 context engineering:强 agent 会把仓库当文件系统操作,用搜索、摘要、记忆、压缩、多窗口初始化来管理上下文。
  5. harness/runtime 的设计极其关键:同一个底座模型,换工具接口、权限模型、sandbox、上下文拼装、测试反馈方式,SWE-bench 分数和真实可用性都能差很多。

还有一个必须诚实说清楚的点:OpenAI 和 Anthropic 没有公开完整训练配方。但它们的官方 blog/system card 已经泄露了足够多的方向信号。OpenAI 明确说 GPT-5-Codex 类模型是针对 agentic coding 优化,并使用真实 coding tasks 的强化学习,让模型学会贴近 human PR preference、遵循指令、迭代跑测试直到通过。Anthropic 则把 Claude Code 的进步拆成 context engineering、工具设计、sandbox、auto mode、long-running harness、多 agent 并行和 eval-aware 开发。把这些和开源论文拼起来,大致能还原“前沿 coding agent 为什么强”的工程轮廓。

异步 RL:用 Policy Staleness 换掉全局 Barrier

异步 RL 的核心就是:rollout worker 持续生成样本,trainer 收到足够样本就立即更新,不再等待同一轮所有请求全部完成。它用一定程度的 policy staleness 换掉同步 barrier,因此 GPU 更忙、吞吐更高,但训练数据也不再严格来自当前 policy。

如果只看系统吞吐,异步 RL 很诱人。长 CoT 请求不再把整轮训练卡住,短请求生成完就可以进入训练队列,trainer 不必陪最后几个超长样本一起发呆。

但这笔交易并不免费。同步 RL 里的等待点很烦,却也维护了一个重要假设:本轮训练数据大体来自同一个 policy snapshot。异步 RL 把这个假设拆掉之后,系统变成一条更高吞吐的流水线,同时也把 off-policy correction、数据分布偏差和样本版本管理都请上了牌桌。

DLLM 方法综述:从掩码扩散到大语言扩散模型

如果把 DLLM 理解成 Diffusion Language ModelDiffusion Large Language Model,那它现在最值得讨论的地方不是“它能不能一次生成多个 token”这么简单。

更准确地说,DLLM 在重新打开一个被自回归 LLM 几乎盖住的问题:

语言模型一定要从左到右写下去吗?

自回归模型的答案是:是的,把序列概率拆成一串 next-token 条件概率,训练、推理、缓存、服务系统全都围绕这个假设展开。扩散语言模型的答案是:未必。我们也可以先拿到一个被破坏的句子,再让模型用双向上下文一步步修复它;也可以先生成骨架,再填细节;也可以在多个位置同时做决策,只把足够确定的位置提交。

所以 DLLM 真正有意思的地方,是它把语言生成从“写作”改成了“编辑”。

R3 和异步 RL:强异步 MoE 训练中的 routing replay 问题

R3 和异步 RL 解决的是两个正交问题:异步导致的是“用旧 policy 的数据更新新 policy”,R3 修的是“对同一个 token、同一组参数,训练重算时没有复现 rollout 当时的 MoE routing”。即便 Composer 天生允许 policy staleness,也仍需先保证行为 policy 的 token probability 能被准确重建,否则 off-policy correction、KL 和 policy ratio 都会被错误 routing 污染。

关于这件事,有两个容易混在一起的判断:一个是“逻辑上不等价”的区分,这个分类基本正确;另一个是“想更新生成 token 时参与计算的 experts”,它也抓到了现象,但最后一句需要更精确一点:R3 的关键未必是冻结并只更新原 experts,而是重放 rollout routing,以便正确重建 behavior-policy forward 或训练所需的概率和梯度路径。两件事很接近,却不能完全画等号。

读 Qwen Bebop 与 DeepSeek DSpark:Speculative Decoding 正在从技巧变成系统工程

最近两篇关于 speculative decoding 的论文很值得放在一起看。

一篇是 Qwen Team 的 Bebop,全名是 Breaking Entropy Bounds: Accelerating RL Training via MTP with Rejection Sampling。它关心的是:在大规模 RL 后训练里,rollout 太慢,能不能用 MTP 把采样阶段加速起来?

另一篇是 DeepSeek 的 DSpark,全名是 Confidence-Scheduled Speculative Decoding with Semi-Autoregressive Generation。它关心的是:在线上高并发 serving 里,speculative decoding 为什么经常一上负载就不稳,怎样让它真正移动吞吐-延迟前沿?

这两篇看起来一个讲训练,一个讲推理;一个讲 Qwen 的 RL pipeline,一个讲 DeepSeek-V4 的线上服务。但我读完之后觉得,它们其实在回答同一个更大的问题:

speculative decoding 的核心已经不只是“多猜几个 token”,而是怎样让猜测、验证、分布匹配和系统负载一起闭环。

Focal Loss 是什么?为什么它能解决类别不平衡问题?

在目标检测、图像分类、医学影像识别、缺陷检测等任务中,我们经常会遇到一个很典型的问题:样本分布极不均衡

比如在目标检测里,一张图片中真正包含目标的区域可能只有几个,但背景区域却可能有成千上万个。模型训练时,大量“容易分类的背景样本”会主导损失函数,使模型把主要精力放在这些其实已经学会的简单样本上,而不是那些少数但更重要的难样本。

Focal Loss 就是为了解决这个问题被提出的。它最早广泛用于目标检测任务,尤其是 RetinaNet 这样的单阶段目标检测器中。它的核心思想很直观:降低简单样本对总损失的贡献,让模型更关注难分类样本。