Reef TTT-Discover实战:测试时训练(Test-Time Training)如何驱动AI科学发现
【免费下载链接】reefContinual learning infra for self-improving agents项目地址: https://gitcode.com/gh_mirrors/reef7/reef
Reef 是一个面向自改进 Agent 的持续学习基础设施(Continual learning infra for self-improving agents),它把模型推理、反馈、训练和版本化交付连成闭环。本文带你实战其中的TTT-Discover 配方:模型不再只在训练期学习,而是在"测试时训练"(Test-Time Training, TTT)中针对一道难题反复尝试——每一步把整组解题程序作为训练数据更新 LoRA 权重,下一轮搜索直接用新权重。用 Qwen3-8B,它最终把 Erdős 最小重叠问题的 C5 上界压到了 0.38094,接近论文水平,还复现了圆 Packing 问题的最优布局。
什么是 TTT-Discover:给难题"现场学习"
传统流程里,模型训练完就定型,推理时只能"用老本事"。TTT-Discover(出自论文Learning to Discover at Test Time)换了一个思路:模型一边搜索、一边学习。它不断让模型生成解题程序,用裁判程序打分,再把这一步的整组"兄弟姐妹"尝试拿来训练模型自己;搜索树由 PUCT 算法驱动,档案里保存历史最优候选。
在 Reef 中,这套方法被封装成一个开箱即用的权重训练配方,核心信息一览:
| 维度 | 说明 |
|---|---|
| 演化对象 | 模型权重(LoRA 适配器) |
| 反馈信号 | 每条 rollout 一个有限score,按坐标填入训练网格 |
| 损失家族 | tttd(组内自适应熵优势 + 冻结基座 KL) |
| 配方代码 | recipes/tttd/ |
| 示例工程 | recipes/tttd/examples/tttd/ |
| 运行需求 | GPU + 一个自带搜索循环的 harness |
一步 TTT 训练在 Reef 里如何流转
每个"步"(step)是一整张固定的兄弟尝试网格,默认 8 组 × 64 条 = 512 次 rollout。完整流程如下:
- 选择父节点:PUCT 档案为每一组选一个父候选(保证谱系多样性);
- 生成 rollout:每组采样若干条兄弟解题程序,走 Reef 的 OpenAI 兼容
/v1/chat/completions端点; - 评估与打分:裁判(judge)在沙箱里运行程序、独立重算结果并给出奖励;
- 网格满员:TTTDProcessor 等待所有坐标到齐——不满员的步不训练,混入不同权重版本的步会被整体丢弃;
- 训练适配器:Slime + Megatron 执行一次 Adam 优化步(学习率 4e-5,rank-32 LoRA);
- 发布权重:SGLang 热加载新的 LoRA 版本,无需重启服务;
- 提交搜索状态:控制器的 PUCT 档案与 Reef 的场景步号原子配对落盘,断点可恢复。
搜索与训练各归其位:普通 harness 的 PUCT 搜索代码完全不依赖 Reef,只需在 ReefTTTDiscoverHarness 里做 4 处集成——请求走场景端点、保留推理回执、用回执上报奖励、带上comparison_set坐标。
三个开箱即用的科学发现任务
示例自带 3 个 Harbor 任务,覆盖数论与几何:
| 任务 | 模型要写什么 | 奖励 | 验证超时 |
|---|---|---|---|
erdos_min_overlap | run()返回 C5 上界 | 验证后 C5 上界的倒数(越低越好) | 1100 秒 |
circle_packing_26 | run_packing()摆放 26 个圆 | 验证后的半径总和(越高越好) | 530 秒 |
circle_packing_32 | run_packing()摆放 32 个圆 | 验证后的半径总和(越高越好) | 530 秒 |
裁判从不信任程序自报的数字:它会独立检查圆的数量、是否越界、两两不相交,再自己求和。任务定义(task.toml、instruction.md、judge 服务)都在 recipes/tttd/examples/tttd/harbor/ 下,每类任务一个独立目录。
快速上手:一条命令跑通测试时训练
环境要求:Linux + NVIDIA GPU + Docker。完整配置见 serve.yaml,首次运行会自动下载 Qwen/Qwen3-8B。
git clone https://gitcode.com/gh_mirrors/reef7/reef cd reef # 一次性安装 git submodule update --init third_party/reef-client python -m pip install -e ./third_party/reef-client python -m pip install -e . "reef-eval[harbor]" # 启动训练栈并跑一轮 Erdős 任务(8 组 × 64 rollout,2 张 GPU) cd recipes/tttd/examples/tttd ./run.sh- 换任务只需
TTTD_TASK=circle_packing_26 ./run.sh,每个任务有独立的 scenario 与work/<task>/状态目录; - 想先验证集成通路?把网格降为 2×2、
enable_thinking: false,跑一个冒烟步即可; - 服务日志写在
work/<task>/reef.log,curl http://127.0.0.1:8900/reef/status可查场景步号; - 参考 8×64 网格建议预留 256 GiB 主机内存,否则调低评估并发。
Reef 如何守住训练质量
测试时训练最大的坑是"脏数据进训练"。Reef 在 recipes/tttd/ 里做了三层保险:
- 严格步屏障:TTTDProcessor 只接受坐标齐全、且全部来自同一权重版本的网格,部分步直接挂起,跨版本步整组作废;
- 常量组过滤:一组内奖励全相同的 rollout 不提供相对信号,会在成批训练前剔除;若所有组都常量,保留一组做零梯度步,行为与参考实现一致;
- 损失与配置一致:组内自适应-β 熵 leave-one-out 优势见 objective.py,训练参数(rank/alpha=32、Adam 4e-5、无 PPO 截断)集中在 recipe.py 与 serve.yaml,网格两侧(harness 与
--global-batch-size)必须一致,否则屏障永远不释放。
实测结果:50 步逼近论文水平
正式轨迹使用 Qwen3-8B(开启 thinking)、2 张 B200,每步 8×64 rollout + 一次 rank-32 LoRA 更新。
Erdős 最小重叠(前 25 个已提交步)
| 步数 | 认证结果 | TTT-Discover 论文 | 目标 |
|---|---|---|---|
| 25 | 0.38094 | 0.38093 | 0.38080 |
圆 Packing 26 / 32(50 步)
| 任务 | 认证结果 | TTT-Discover 论文 | 目标 |
|---|---|---|---|
| Packing 26 | 2.635983 | 2.635983 | 2.636 |
| Packing 32 | 2.939573 | 2.939572 | 2.940 |
值得注意的一个细节:平均 rollout 奖励会先升后降——因为 PUCT 探索让采样的程序未必是档案里最好的。认证成绩来自裁判 + 搜索档案,而不是采样均值的"账面数字"。下面的 W&B 导出同时呈现了奖励、响应长度、采样策略 KL 与单步耗时,便于判断训练是否进入平台期:
复现明细(运行配置、存档程序、逐数值历史)见 formal-8x64-v3-packing 与 formal-8x64-v3-erdos 的结果 README。
想接入自己的发现任务?
三步即可扩展:
- 在 harbor/ 下新建同级目录,提供
task.toml、instruction.md、judge 服务与验证器(judge 的grade(artifact)必须对合法程序返回有限奖励、对非法程序返回约定值); - 把任务名加入 run.py 的
TASKS元组,它由TTTD_TASK环境变量选择并派生状态目录; - 若上下文或内存吃紧,调整 serve.yaml 的序列长度与 harbor_agent.py 的评估并发(packing 任务用 32768 上下文、256 并发)。
测试可参考 tests/test_tttd_harness.py 与 tests/test_tttd_packing_tasks.py。另有一个无 GPU 的托管训练入口 serve-tinker.yaml,可在 Tinker 远端跑同一配方;每个发现任务请新建独立 scenario——TTT-Discover 是为单一问题特化,而非学习通用策略。
小结:TTT-Discover 展示了测试时训练的完整闭环——搜索产生数据、数据训练模型、新权重加速搜索。Reef 用严格步屏障、版本一致性校验和可恢复的档案提交,让这个闭环在 50 步、约 22.6 小时的长任务中稳定收敛到论文级结果。如果你的目标也是"让模型边做题边变强",这正是 Reef 为科学发现准备的那条路径。
【免费下载链接】reefContinual learning infra for self-improving agents项目地址: https://gitcode.com/gh_mirrors/reef7/reef
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考