选择一种你能解释清楚的结构
创建一个以项目命名的文件夹,再设几个职责明确的存放位置。一个人名或今天的日期,往往不足以让人在六周后看懂里面是什么。根目录下要放一份说明,写清输入在哪里、正在进行的试运行在哪里、以及最终采用的交付版本是哪个。
剑桥大学建议尽早约定一套分类方式和一致的命名规则。下面这个模型是 BriefGPU 为小型工作场次提出的方案。如果你的软件本身已经规定了项目结构,就相应调整;不要在没有确认项目仍能找到关联资源的情况下移动它们。
| Emplacement proposé | Ce qu’il contient | Règle de travail |
|---|---|---|
| 00_lire-moi.txt | 目标、文件夹规划以及采用的试运行。 | 更新有用的决策。 |
| 01_entrees | 收到的原始文件和已识别的版本。 | 不要把处理后的输出存到这里。 |
| 02_reglages | 每次试运行的参数和工具版本。 | 保留实际用过的设置。 |
| 03_sorties/essai-01 | 某次已识别运行的结果。 | 为下一次试运行另建一个文件夹。 |
| 04_suivi | 清单、日志和验证反馈。 | 把每个结果关联到它的来源。 |
| 05_livraison/v01 | 可以交付的精选版本。 | 标记每一版新的交付版本。 |
让收到的输入保持可识别
在处理之前,先列出原始文件清单,记下它们原本的名称和位置。按康奈尔大学的建议,为这些输入保留一份未被改动的版本。单纯叫“原始文件”并不能保护内容:在软件里指定一个不同的输出文件夹,并用一个测试文件确认它的行为。
如果你必须在计算前转换或裁剪某个输入,就把这一步当作一个单独识别的环节。保留它与收到来源之间的关联。这样你就能区分是本来就有的缺陷、准备环节的问题,还是 GPU 处理造成的影响。
当新来源替换旧来源时,记下版本以及需要重新检查的输出。不要悄悄覆盖某个你所想理解的那次试运行用过的文件。原则是保留有用的来源信息,而不是无限期保留所有工作副本。
给每个工作单元一个稳定的标识符
像 image-001 这样简短的标识符,可以用来在多次试运行中跟踪同一个输入。即使某个输出被采纳,它的作用也不变。把验证状态留在清单里,而不要按照“好”“坏”或“差不多最终版”反复重命名文件。
对于一百个输入,编号 001 到 100 能提供规律的参照。在交付需要时,再加上一条业务参考号。不要以为分别从两个不同子文件夹收到的两个同名 photo.png 指的是同一个东西。输入的完整路径必须始终与标识符关联。
选择与目标工具兼容的名称。Windows 尤其会保留冒号、问号和星号;它的常规规则也无法仅凭大小写可靠地区分两个名称。像 image-007_essai-02.png 这样的名称就能避免这些歧义。请检查你其他工具自身的限制,而不要承诺通用的兼容性。
示例:两次试运行,共用一套原始文件
假设从两个文件夹中收到了八张图像。清单将 image-001 至 image-008 逐一登记,并保留其原始路径。第一轮使用试跑-01 的设置;其所有输出都进入对应的文件夹。image-003 和 image-006 上出现问题,于是进行了第二轮试跑,仅限这两项输入。
第一轮中六个令人满意的结果不会被重新计算,以使文件夹更统一。清单标明每项输入最终采用了哪个输出。交付版本 v01 包含八个文件,文件名符合预期,尽管它们的来源分布在两轮试跑中。此示例描述的是一种组织方式,并不假设这些设置一定能改善结果。
| Entrée | Sortie retenue dans l’exemple | Réglages à retrouver | État |
|---|---|---|---|
| image-001 | 03_sorties/essai-01/image-001.png | 02_reglages/essai-01.txt | 已接受 |
| image-003 | 03_sorties/essai-02/image-003.png | 02_reglages/essai-02.txt | 返工后通过 |
| image-006 | 03_sorties/essai-02/image-006.png | 02_reglages/essai-02.txt | 返工后通过 |
在试跑时保存好设置
如果软件无法导出参数,一个名为 试跑-02.txt 的文件可以只是一份简单笔记。记下工具版本、可能的模型、涉及的输入以及你选择的数值。再加上相比上一次试跑作出更改的原因。当参数只能在窗口中看到时,可以用截图作为笔记的补充。
避免只用一个「当前设置」的笔记,每次运行后就替换掉。它只能解释最近一次尝试,却解释不了更早的输出。如果多次试跑使用相同的参数,请引用同一个已标识的配置,而不是不必要地反复抄写。
软件版本和参数有助于解释结果;但它们本身并不能保证完全复现。某些应用需要其他信息或资源。如需精确的交接,尤其涉及训练状态时,请遵循其文档。
坚持写能解释决策的日志
日志是清单的补充。清单回答的是「这一项进行到哪一步了?」,日志回答的是「我们为什么做了更改?」。几行带日期的记录就够了:涉及的试跑、观察、决定和下一次检查。如果没人用得上,就不要把软件的每条消息都抄下来。
就本示例而言,一条有用的记录可以是:「试跑-01:image-003 和 image-006 上轮廓不完整;用设置 B 重做这两项输入;其余输出暂留待最终确认。」复核之后,再补上实际作出的决定。不要重写最初的观察记录,仿佛那个缺陷从未出现过。
在转交技术日志之前先通读一遍:其中可能包含私人路径或访问凭据。把机密信息与文档文件夹分开存放。给同事的说明应当用对方所需的信息把工作讲清楚。
区分归档、交付和备份
工作文件夹保留对推理有用的试跑。交付文件夹汇集收件人应当收到的内容。备份把必要的内容保存在另一处目的地,并附复制校验。把三个文件夹并排放在同一空间里,本身并不能分别承担这三种职能。
不要把全部源文件都复制到每个试跑文件夹里。通过清单把输出与输入关联起来。对于交付,复制一份精选内容可能很有用,以便交出一个自成一体的集合;此时请记下它的来源和版本。对于备份,请遵循专门指南,其中详细说明了清单和传输后的校验。
在清理被舍弃的变体之前,先确认哪些仍需要保留,用来解释某项决定或重做工作。这种组织方式不规定任何保存期限。它让你能够判断哪些值得留下,然后找回那份起参照作用的副本。
随机挑一个输出做一次检查
先不要打开软件,随机选一个交付文件。根据它的文件名和清单,找出它的输入、产出它的那次试跑、所用设置以及通过的决定。再用一个需要返工的输出重复一遍。如果整个过程都依赖你的记忆,说明追踪记录里缺少了一环。
接着核对数量:计划输入的条目数、保留的结果、被阻止的元素以及排除的变体。一个整理得很整齐的文件夹仍可能是不完整的。当差异都有原因,并且其他人都能看懂该用哪些文件时,这项小检查就算完成了。