迁移到标注引擎
用 potato label migrate-config 把 icl_labeling、judge_calibration、pre_annotation 和 Solo Mode 的配置迁移到标注引擎,并了解迁移之后有哪些变化。
Potato 较早的机器标注功能在 2.11 中照常可用,在你加入 labeling_engine 块之前,行为不会有任何改变。有三个键现在会在启动时打印一条说明,指出它们在标注引擎中的对应写法,这三个键计划在 3.0 中移除。这些说明输出到 stderr,以 NOTE: 开头,不属于警告,所以 potato validate --strict 不会因此失败。
下表列出这三个键以及各自对应的写法:
| 旧键 | 引擎中的对应写法 |
|---|---|
icl_labeling | 一个 llm 来源,带一份对应旧规则的 threshold_legacy 契约,旁边再加一份 selective_risk 契约 |
judge_calibration | 使用 k_sample 置信度的 judge 来源,原来的盲态样本变为校准请求 |
pre_annotation | 一个 static 来源 |
Solo Mode、评审对齐和交互式 AI 助手(ai_support)都没有被弃用。Solo Mode 是一位专家通过它自己的界面与一个 LLM 协作,评审对齐则是一份报告。开启引擎时,两者都会把它们的模型预测写入引擎的存储,让引擎可以校准并认证这些预测。
potato label migrate-config
potato label migrate-config 把旧键转换成一个 labeling_engine 块:
potato label migrate-config config.yaml --out config-engine.yaml这条命令只读取 YAML,不加载任何数据,然后添加一个等价的 labeling_engine 块,并把结果写出,开头附有一段说明,解释每一项转换。它写出的块带有 enabled: false,所以在你开启引擎之前,转换后的配置与原配置行为相同。请阅读这些说明,检查来源和契约,然后设置 enabled: true 和 assignment_strategy: engine。如果配置中已经有 labeling_engine 块,或者没有任何可转换的内容,命令会报错退出。
转换对照表
每个旧块按如下方式对应到引擎的来源、契约和人工设置:
| 旧块 | 来源 | 契约 | 人工 |
|---|---|---|---|
带 confidence_routing.tiers 的 solo_mode | 每一层一个来源,按层的顺序排列 | 每个单选方案一份 selective_risk,error: 1 - end_human_annotation_agreement | pools: [solo] |
带 labeling_models 的 solo_mode | 每个模型一个来源,第一个作为级联 | 同上 | pools: [solo] |
solo_mode.jury | 每位评审员一个来源,再加一个 jury 来源作为级联 | 同上 | |
icl_labeling | ai_support 端点作为一个 llm 来源 | 阈值为原来 confidence_threshold 的 threshold_legacy,以及 10% 的 selective_risk | calibration_rate = 原来核验的 sample_rate |
judge_alignment | 评审端点作为一个 judge 来源(只有一个方案时带上评分细则) | no_worse_than_human,epsilon: 0.15,每个被评审的方案一份 | overlap: 0.3 |
judge_calibration | 每个模型作为一个使用 k_sample 置信度的 judge 来源 | sampling.sample_size → budgets.human_labels | |
带 field 或 predictions_file 的 pre_annotation | 一个 static 来源,位于级联第一位 | ||
active_learning.llm | 一个 llm 来源 | ||
ai_budget.cap_usd | budgets.model_usd |
迁移后的行为变化
引擎对待人工标签的方式与旧功能不同,转换后配置里的说明会指出不同之处。预计会有四点变化:
- 固定阈值变为经过检验的阈值。 Solo Mode 的路由阈值和
icl_labeling的置信度阈值,会接受高于某个固定数值的机器标签。selective_risk在 dev 标签上选定阈值,只接受在留出标签上通过检验的部分,所以一开始被接受的标签会变少,但被接受的那些带有明确的错误率上界。 - 核验样本变为均匀抽样。
icl_labeling优先核验置信度最低的预测,这样能很快找到错误,但给出的准确率估计是有偏的。引擎的校准请求是随机样本,并记录入样概率。 - 内联评审变为盲态。
judge_alignment.inline在人们标注时显示评审的判定,所以一致性是在受锚定影响的标签上测得的。引擎的校准请求从不显示机器答案。 - 预标注要先经过检验才会被信任。
static来源的标签只在有契约认证的地方被接受,在其他地方,人们会在核验请求中看到它们。
延伸阅读
实现细节见源文档。