采样随机性与可复现记录
带采样的任务要做到「结论可复现」,靠的不是指望输出逐字一致,而是把实验条件完整记录下来:提示版本、模型标识、采样参数、评测集版本、代码提交。条件记录齐了,别人才可能重跑并解释历史结果;记录缺失时,任何一次指标变化都无法归因。
基本信息
| 记录范围 | 提示版本 + 模型标识 + 采样参数 + 评测集 + 代码版本 |
|---|---|
| 参数快照 | temperature、top_p、max_tokens、seed 全部留档 |
| 提示版本 | 对提示文本做哈希,避免「记不清改了哪句」 |
| 复现口径 | 种子相同也不保证逐字复现,结论按统计口径给 |
典型使用场景
- A/B 对比实验:确认两次运行的条件差异只有提示版本
- 问题回溯:线上质量下滑时判断是提示变了还是模型更新了
- 对外披露指标:报告里附条件快照,结论才可被复核
- 回归集维护:随机性大的任务靠重复运行覆盖波动
评测记录字段
评测记录字段
run_id: 2026-10-12-01
prompt_version: v12 (sha1: 3f9a...)
model: <部署标识与版本号>
params: temperature=0, top_p=1, max_tokens=800, seed=42
eval_set: golden-v3 (200 条)
code_path: eval/run.py @ commit abc1234
notes: 只改了输出格式一节;与 v11 配对比较
# 提示文本单独存文件并做哈希,改动即可比对
# 只记模型名不记部署版本,模型更新后历史结果无法解释记录字段与用途
| 字段 | 用途 | 缺失时的后果 |
|---|---|---|
| prompt_version | 确认两次运行差异是否只在提示 | 无法判断改动内容,归因无从下手 |
| model | 区分模型升级与提示改动的影响 | 模型更新后历史指标变化被误读 |
| params | 采样条件一致性的证据 | 两次运行条件不同,比较不成立 |
| eval_set | 确认样本集版本一致 | 换了样本集却被当成提示改进 |
| code_path | 复现实验所需代码版本 | 评测逻辑已改,历史结果无法重跑 |
「温度设为 0 就等于确定输出」是一个常见误解。不同批次、不同硬件、不同批处理切分下仍可能出现差异,因此统计口径(重复运行取均值)比追求逐字复现更实际。