Notes · 2026.03.21
日志目录先建
有效 run 的第一步。
真要跑,先建日志目录,再开训练。跑在会话里散落的 print,不算 run。用仓库已有入口。写清 seed、数据版本、产出路径。没有目录的实验,两周后自己也不认。不认的数不能出门,不能进 PPT,不能进站点。会话里的 print 有假的完整:loss 在掉、有人说感觉准了。准了会催我截图进草稿。草稿没有路径。没有路径的图,赶 PPT 时最容易被捡回来。捡回来就和系统裂了。裂的起点是开训前没建目录。
print 不是 run
Cursor 的终端很好看。好看的滚动日志,会话一关就没。没了之后我还记得「好像 MCC 不错」。好像不能指回。指回需要路径。路径是目录。目录里有配置副本、有 split 引用、有 seed、有 checkpoint 指针、有标准输出的一份落盘。落盘可以土,重定向到文件就行。土比潇洒的 print 更像科学。
训练任务默认不在聊天里开完整训练。先把划分、基线、脚本、日志目录和怎样才算一次有效 run 钉死。真要跑,用仓库已有入口。入口会规定产出写到哪。我若为了快,写一个笔记本从头训,笔记本里的数会和入口分家。分家之后对照实验无法复现。无法复现就写无法复现,别把笔记本的数抄进表。
没跑完的 run,不要把中间 loss 写进任何对外的句子。loss 在目录里可以留着当诊断。诊断不是成绩。成绩是协议上跑完的那张表。
目录里要有什么
至少有:启动命令或配置文件、seed、数据版本或 split 文件哈希、开始时间、代码版本。代码版本可以是 git commit。没有 git 时,把脚本拷进去。拷进去占空间。占空间比「当时大概是那版」便宜。
checkpoint 不要只留最后一份在别的磁盘角落,目录里却没有指针。角落里的权重会变成传说。传说能推理,不能复现。推理出来的演示,和有效 run 无关。演示要冻数据。实验要冻目录。两种冻都是为了以后的自己还认。
产出路径写死相对日志目录,少写到 ~/Downloads。Downloads 会收拾。收拾完 run 就死。死了的 run 若还在 PPT 里,PPT 和系统又裂了。
仓库入口,不要随手脚本
随手脚本会迁就本机:代理 7890、全局包、某份缓存。仓库入口迁就锁文件。有 uv.lock 用 uv,有 pnpm-lock.yaml 用 pnpm。训练这边通常是 Python。迁就锁文件,换机器才有机会长出同一张表。
入口没有日志目录参数时,我先补参数,再跑。先跑后补,目录结构会每个星期不一样。不一样的结构,两周后检索自己的实验比做实验慢。慢到最后人会放弃复现,改用记忆。记忆会把 seed 记错。
agent 代跑时更要先建目录。它会开训,会把输出打在聊天里,会说做完了。做完了以目录为准。目录没有,就没做完。这条和智能体产物契约是同一个脾气:哪个文件、什么 schema、哪一步写出来。
两周后不认
不认的具体样子是:表上有一个数,我不知道它来自改写条件还是同分布,不知道划分版本,不知道阈值按哪个指标选。不知道的数,看起来仍像工作。工作量很大。工作量不是证据。
ChProv-Bench 的门禁记录、TextGuard 的对照、OOD 的日子,都靠目录活着。目录没有,规模数 42.3 万也救不了某一行。某一行才是别人会问的。
我参与这些实验整理。参与的人更要把自己跑的那几次收进目录。不收,贡献会变成「我当时在场」。在场不是记录。
限制
这篇不规定目录命名的唯一格式。格式可以丑。丑但固定,好过每天新发明。不发明新的实验跟踪库。仓库已有入口够用就用。够用的标志是:两周后我能凭目录把表长出来。长不出来,这次就不算。不算的,站点上没有。NeurIPS 2026、AAAI 2027 仍是 Under Review,任何从无目录 run 里摘出来的句子,更不能往接收上靠。
会话里的 print 有一种假的完整:loss 在掉、样本在过、有人说感觉准了。准了的感觉会催我截一张图进草稿。草稿里的图没有路径。没有路径的图,赶 PPT 时最容易被捡回来。捡回来就和系统不是同一套。同一套的起点,是开训前那一下 mkdir。一下很土。土的一下决定两周后我还认不认。不认的实验,工作量可以很大。很大的工作量,站点一句都不写。