第 10 / 21 篇

第 9 章:预算不足不能让困难任务消失

评测也会消耗资源。模型调用、环境启动、执行时间、存储与人工复核都可能成为瓶颈。一个预算策略如果只留下便宜而容易成功的任务,就会悄悄改变样本分布,使看起来更好的结果来自选择过程而非系统改善。

9.1 预算合同必须与指标区分

本实验用公开任务 JSON 的字节数,加候选响应 JSON 的字节数,定义 fixture_units。它不是模型 token、货币费用,也不包含解释器、CPU、临时磁盘和人工成本。这样定义只是为了让预留与结算可以在没有外部服务时复现。

每次运行前,流水线预留输入字节数加 4096 字节的最大响应额度;完整响应通过格式检查后,以实际字节结算并释放差额。配置的总预算同时约束已结算与尚未解除的预留。

候选超时或输出不可核实时,实验把预留标为未知并保留。这是一项保守的教学政策;它不声称字节本身产生了账单,也不把缺少结果解释为零消耗。真实模型接口需要依据供应商的可信用量与费用合同重新设计单位。

9.2 拒绝样本仍保留配对位置

python3 -m lab.pipeline --candidate prompt_v2 --budget 1 \
  --output /tmp/quality-budget-denied.json --require-pass

预算为 1 时,任何正常输入都无法获得预留,报告仍包含计划的 12 个验收任务,而不是生成一个空列表后声称没有失败。命令以 2 退出,门槛记录 incomplete_or_unscored_pairs。

这份报告可以诊断预算策略,却不能支持候选质量比较。两边都未执行而被记成失败时,演示统计可能给出零差值;完整性门槛正是为了防止“同样没运行,所以没有退步”成为发布理由。

9.3 时间与费用分别记录

wall_ms 是本机候选子进程的实际经过时间,包含解释器启动等开销。它会随机器和调度变化,不能当作模型推理延迟,更不能据此排名云服务。实验不会把一次本机毫秒差异写成性能改善。

真实系统需要区分端到端延迟、排队、模型服务、工具执行与人工等待。成本也要按完成任务和失败尝试分别查看。一个便宜但频繁失败的候选,可能在每个成功任务上的综合成本更高。

9.4 避免候选顺序带来的偏差

本实现为了易读,先运行基线,再运行候选。它适合验证确定性质量行为,不适合比较存在缓存、负载或时段影响的真实性能。接入服务后,应考虑交错或随机顺序,同时保存配对关系。

若预算只够完成部分任务,应事先定义分层抽样与停止政策,不能跑到看到喜欢的结果就停。计划变化需成为报告的一部分。对重要发布,完整性不足通常意味着补充实验,而非直接放宽门槛。

练习。 让预算足够执行前几对但不足以完成全部任务,检查报告仍保留哪些行、未知预留如何影响后续接纳、门槛为何拒绝。再设计一份真实费用合同,分别标注哪些字段可从服务端确认,哪些只是本地估算。