/images/avatar.jpg

lilfry's library

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

一个小小的互联网自留地

Looped Transformer 不只是重复计算:从 LoopFormer 到 Elastic-Depth Post-Training

Looped Transformer 最容易被误解成一句话:把同一组 Transformer block 多跑几遍,用时间换参数。

这句话没有错,但它跳过了真正困难的部分。共享参数只回答了“循环什么”,没有回答另外三个问题:模型如何知道自己处在第几次循环?短预算为什么仍然能给出有用结果?增加循环时,hidden state 为什么不会漂移、坍缩或者干脆变差?

把近期工作放到同一张图里看,我更关心的研究命题不是再从头训练一个固定循环次数的模型,而是:

Elastic-Depth Post-Training:能否把已有的固定深度或固定循环模型,改造成计算预算可调、迭代过程稳定、并能按样本自动停止的模型?

LoopFormer 给出了全局预算和 trajectory consistency;LoopUS 展示了如何改造 pretrained LLM,并用 selective update 与 confidence exit 控制迭代;Relaxed Recursive Transformers 则提供了“共享主参数、保留深度角色”的折中。三条路线尚未被组合验证,但它们拼出了一个比“多循环几次”更完整的研究问题。

本文信息截止到 2026-08-18。文中的数值若无特别说明,均为相应论文在其模型、数据和硬件设置下的报告,不能直接外推到其他模型规模或真实部署吞吐。

蒸馏不只是压缩:从 Self-Distillation 到 Search Distillation 的研究地图

最近我在整理蒸馏方向时,最大的感觉是:这个词被说窄了。

很多人一提 distillation,脑子里先出现的是模型压缩、logit 对齐、teacher/student 这一套老图景。但一旦把它放回后训练和推理系统里看,蒸馏真正传递的常常不是“答案”,而是搜索方式、更新方式、判断方式,甚至是数据该怎么长出来。

如果把它重新定义成“一个学习过程,把可迁移的信息结构交给另一个学习过程”,那它就不再只是压缩术,而是一张更大的信息迁移图。

读 SFT、RL 与 On-Policy Distillation:后训练真正的变量是 on-policy data

这篇原文最值得带走的一句话,我会改写成:

后训练不是在同一条损失曲线上做微调,而是在改模型会访问到的分布形状。

SFT 把模型往外部示范拉,RL 让模型在自己会走到的状态上追逐奖励,OPD 则让 student 在自己的 prefixes 上对齐 teacher。只要盯住“数据来自哪里”,很多看起来玄学的现象就会变得很朴素:为什么 RL 和 OPD 常常比 SFT 更不容易忘,为什么 student 甚至能超过 teacher。

原文在这里:SFT, RL, and On-Policy Distillation Through a Distributional Lens

/images/sft_rl_opd/distributions_cover.png

FullStack-Agent:全栈 Coding Agent 的训练与评测数据是如何构造的

很多“网页生成 Agent”看起来已经能做出漂亮页面:按钮能点,表单能提交,页面还能弹出“保存成功”。但如果继续追问两步,问题就会暴露出来:数据真的写进数据库了吗?刷新页面之后还能读回来吗?后端 API 是否真的存在?

FullStack-Agent 这篇论文的核心贡献,正是把网站生成从“看起来像全栈”推进到“前端、后端和数据库都能被验证”。不过,论文里更值得仔细看的其实不只是 Agent 框架,而是它的数据构造方法:它如何把真实网站代码库转换成 Coding Agent 的训练轨迹,又如何构造能够识别假后端的评测数据?

本文只讨论这两个问题。论文原文是 FullStack-Agent: Enhancing Agentic Full-Stack Web Coding via Development-Oriented Testing and Repository Back-Translation,代码仓库见 GitHub

AgentENV:为 Agentic RL 规模化运行可分叉的沙箱环境

Agentic RL 的瓶颈不只在模型和 GPU,还在环境:当成千上万个 Agent 同时运行代码、调用工具、修改文件并探索不同路径时,系统需要的不是更多普通容器,而是可快速启动、强隔离、可暂停、可恢复、可分叉的大规模沙箱。AgentENV 要解决的正是这个问题。

在传统 LLM 训练中,一条样本往往只是一段静态文本。但在 Agentic RL 中,样本变成了一段持续交互的轨迹:Agent 要进入操作系统,读写文件,执行 shell 命令,安装依赖,运行测试,根据反馈继续决策。训练系统因此不仅要“喂数据”,还要为每条轨迹准备一个安全、可重现的运行世界。

AgentENV(AENV) 是一个面向这类工作负载的分布式平台,官方定位是“Running agent environments at scale”,并已用于 Kimi K3 的 Agentic RL 训练。它的核心价值可以压缩成一句话:把单个隔离环境的创建与恢复,扩展成跨机器、可持久化、可弹性调度的环境基础设施。

线性注意力从头到尾讲清楚:从注意力矩阵到可递推状态

Linear Attention 的目标是避免显式构造 $n\times n$ 的注意力矩阵,而是把“每个 query 与所有 key 的交互”改写成“query 读取一个累积状态”。

这句话比“Linear Attention 把复杂度从平方降到线性”更接近本质。复杂度下降只是结果,真正发生的结构变化是:标准 Attention 显式维护 token 与 token 之间的关系,而 Linear Attention 先把所有 key–value 信息写进一个状态,再让 query 从状态中读出结果。

这篇文章从标准 Attention 出发,把这次改写完整推一遍。读完后,你应该能回答四个问题:为什么不能直接先算 $K^\top V$;归一化需要保存什么额外状态;因果 Linear Attention 为什么像 RNN;以及它用固定状态换走 $n\times n$ 矩阵时究竟牺牲了什么。

训练模型的长程软件工程能力:从 SWE-Marathon 到 FrontierSWE 与 SWE-Together

如果要训练模型做长程软件工程任务,最容易走错的一步,是把“长程能力”理解成“更长上下文 + 更多 token”。SWE-Marathon、FrontierSWE 和 SWE-Together 这三组工作放在一起看,会给出一个更锋利的答案:长程能力不是文本长度,而是 在一个可执行环境里,持续维护目标、状态、证据、风险和验证闭环

SWE-bench 把真实 GitHub issue 变成了可评分 patch,这是很重要的一步。但它主要回答“模型能不能修一个相对局部的问题”。现在这三组新 benchmark 关心的是另一件事:模型能不能像一个还算可靠的工程师那样,连续几个小时推进一个项目,把中途实验、失败、回滚、测试、用户纠偏、最终提交都组织起来。