学習の一反復から、損失、評価リターン、その後の指標修正など複数の観測が生まれることがあります。書き込みをすべて新しい反復と扱うと対応がずれ、重複ステップを捨てると情報が失われます。強化学習と進化学習のフレームワーク EvoRL は、北京時間の 2026 年 11 月 12 日にローカル JSONL 記録を main に追加し、11 月 13 日にファイル名の調整を行いました。元の書き込み履歴と、ステップに対応づけた分析用ビューを別々に提供します。

元の実験記録用紙を残し、対応する観測ステップで分類したアーカイブ

概念図:個々の観測を保存し、統合したビューを学習ステップごとに整理する。

実験の文脈もローカルファイルに

recorders=[log,jsonl] を選ぶと、追跡 SDK を追加せず、通常のログとともに機械可読な指標を保存できます。固定版のクイックスタートには学習スクリプト共通の設定が記載されており、JSONL バックエンドにもプロジェクト、実行名、解決済み設定、タグ、出力パス、任意のグループが渡されます。

初期化時にこの情報をメタデータヘッダーへ書き込みます。その後は、指定された整数 step と入れ子の data を含む JSON オブジェクトを一行ずつ追記し、ファイルをフラッシュします。元ファイルは、ステップの順序逆転や重複を含めて到着順を保ちます。実験の出力ディレクトリを別の分析用マシンへ移す場合も、設定と観測を読みやすいローカル成果物として一緒に持ち運べます。

記録時ではなく読み込み時に統合

evorl.recorders が公開する load_jsonl_records(path) は全データを読み、ステップ順のリストを返します。同一ステップの辞書は再帰的に統合され、競合する値は後の書き込みが置き換え、言及されない指標は残ります。配列は全体を置き換え、後からの null も以前の値を上書きします。任意の先頭行メタデータは指標リストに含めず、読み飛ばします。

ステップ 10 で学習損失と評価リターンを別々に書き、その後で損失を修正する場合を考えます。元ファイルには三回とも残り、読み込んだレコードには最新の損失と評価リターンが入ります。後から到着したステップ 8 のレコードも、整列後は 10 より前になります。学習曲線で反復を識別するのは、行の位置やログ呼び出し数ではなく step です。

シリアライズで何が残るか

実装と回帰テストは NumPy、JAX、pandas の値を扱っています。配列と Series はリストに、DataFrame は列と行データを持つオブジェクトになりますが、インデックスは保存されません。NaN、無限大、pandas の欠損値は JSON の null になります。インデックスがサンプル識別子なら、記録前に明示的な列へ変換してください。保存形式から導かれる手順です。

不正または不完全な行は、ファイル名と行番号を含むエラーになります。途中で切れた最終レコードを黙って捨てることはありません。全データをメモリへ読み込むため、累積ファイル量に応じた分析メモリが必要です。アプリケーションの指標名が step でも、それは data 内に残り、外側の反復フィールドと区別されます。

実行ごとに保存先を分ける

後続の変更では JSONL とスクリプト生成ログが sanitize_filename を共有します。/ を _ に変え、たとえば MetaWorld/Hammer-v3 は MetaWorld_Hammer-v3 になります。他の文字はそのままで、メタデータには元の実行名が残ります。ファイル拡張子はそれぞれ .jsonl と .log です。最初のコミットのパーセントエンコードを置き換える規則であり、名前の一意性を保証するものではありません。

同じ JSONL パスを再初期化すると既存内容を上書きします。特にスラッシュとアンダースコアだけが異なる名前では、実行ごとに別の出力ディレクトリかファイル名を使ってください。両コミットを含むソースで上記設定を選び、小規模実験のヘッダー、重複ステップの統合、保存先を確認してから長い実行へ進めます。以前の EvoRL 開発記事が説明した勾配、デバイス、指標形状の観測を、今回の更新でローカルに保存し、再分析しやすくなります。

← 最新情報一覧に戻る先頭に戻る ↑