徹底的に記録する
「この結果はどこから来たのか」に即答できない実験は、 再現できないという意味で検証されていないのと同じです。 必要な記録は四種類あり、どれか一つでも欠けると後から辿れなくなります。 私はこれをログ運用の心がけではなく、 実装として残る仕組みで担保します。
| 分類 | 何に答えるための記録か | 実装 |
|---|---|---|
| 依存の記録 | この成果物は、どの入力・どの設定・どのコードから出たのか。 入力が変わったとき、何が古くなるのか。 |
typed-lineage — 依存関係を型付きグラフとして表現する基盤 canonical_panel — 成果物そのものに来歴を埋め込む正準スキーマ |
| 実験の記録 | どの仮説を、どう試し、どう判定したのか。 採用されなかった案と、判定できなかった案を捨てないこと。 |
astraloop-store — 仮説と、それを支持/反証する証拠の登録簿 pool — 実験とランの登録簿。外部参照の解決先 MLflow — 学習ジョブの記録 |
| デプロイの記録 | いま何が動いていて、どうしてそれが動くことになったのか。 昇格の履歴と、その昇格を許した根拠。ある変更が、動いているどれを揺るがすのか。 |
typed-lineage の deployment 層 —
環境・束縛・契約・検査を型で表し、昇格の履歴と、昇格を支えた契約検査を辿れるようにする。
環境間で変わってはいけない設定は、変わり得ないものとして検証する stock-trader-deploy — その日どのモデルを採用したかを日付ごとに残す |
| 計測の記録 | 実行がどれだけの時間とコストを使い、どう振る舞ったのか。 障害時に何が起きていたかを復元でき、運用中の性能の変化に気づけること。 |
forward-testing — 運用中の予測を単一の真実として記録し続ける追跡基盤 ordinaryMemory — リクエスト単位の利用量とコスト、実行ステップの永続化 swiper — 人の評価を追記専用で蓄積するストア |
記録は欠けたことも記録します。外部参照が解決できなかった場合も、 来歴の生成を諦めて例外で握り潰すのではなく、 不完全であることとその理由を構造化して残す。 「記録がない」と「記録できなかった、その理由はこれ」は、後から辿るときに全く別物です。