OpenAIは、Git互換のリポジトリバックエンド「Pando」を発表しました。プッシュ遅延の中央値を約5分の1に短縮しながら、1日あたりほぼ1ペタバイトのGitデータを処理しています。
11月2日に詳細が公表されたこのシステムは、現在OpenAIのモノレポ全体の開発を支えています。Codexの支援を受けて構築されたPandoは、Gitのプロトコルや開発者に馴染みのあるワークフローを置き換えるものではありません。並列で動作するAIコーディングエージェントがインフラに与える負荷への対策として設計されました。
OpenAIは、今回の改善をストレージ、調整機構、packfile配信の再設計によるものとしています。従来のインフラでは、プッシュの遅延、フェッチの遅れ、マージの失敗が発生し、信頼性が90%を下回ることもありました。
Codexの導入により、同時に存在するブランチや継続的インテグレーション(CI)待ちの変更が増加しました。さらに、1回のプッシュで同一のコミットを取得するジョブが複数起動する状況でした。
OpenAIは、3フェーズコミットと共有ライトアヘッドログ(WAL)のアーキテクチャを検討し、調整とレプリケーションにボトルネックがあると特定しました。
そこでPandoは、ブランチの更新を分離しました。無関係な参照は互いに独立して進められるため、並行する開発作業の中でも、リポジトリ全体の公開順序を巡って競合することがありません。
Pandoは、受信したGitのpackfileを変更不可のblobとして保存します。参照のバージョンは、水平スケーラブルなメタデータサービスに記録します。各バージョンは、コミットの先頭、関連するpackfile、依存関係を追跡します。
マルチキートランザクションが、バージョンの公開と参照ポインタの更新をアトミックに実行します。これにより、一定量のメタデータ操作で、自分の書き込みを自分で読める一貫性(read-your-own-write)を実現しています。
個々の参照では、直列化可能な更新が維持されます。ただし因果整合性であるため、読み取り側は、複数のブランチが同一時点で同期されたリポジトリのスナップショットを表していると想定できません。
プッシュの際、Pandoはpackfileをblobストレージにストリーミングしながら検証します。ローカルリポジトリへの展開は行いません。新しいフィーチャーブランチには、既定で指定されたトランク参照のアドバタイズのみが提示されます。このため、アップロードされたパックは、そのトランクの履歴を持つ読み取り側で再利用できます。
この方式では、同じブランチへ繰り返しプッシュすると冗長なオブジェクトが増えます。ただしOpenAIによると、パックサイズの中央値は20 KiB未満、99パーセンタイルでも3 MiB未満です。参照ポインタの競合は、同じブランチを対象とする同時更新に限られます。
フェッチでは、Pandoはクライアントの「haves」と「wants」を保存済みの参照バージョンに対応付けます。そのうえで、Gitのpackfile-uri機能を通じて、再利用可能なパックを返します。
配信サービス「Express」は、リージョンごとのディスクキャッシュとコンシステントハッシングを採用し、99%を超えるキャッシュヒット率を達成しています。OpenAIは、標準的なクラウド仮想マシン上で、クローンとフェッチが10 Gbpsのリンクを飽和させることを確認しました。
バックグラウンドのコンパクションでは、パックを段階的に大きなカバーへとまとめます。これにより圧縮効率が上がり、フェッチの計画時には対数時間でのメタデータ検索が可能になります。
OpenAIは、PandoをRustで実装しました。レガシーな依存関係は持たず、開始から本番稼働まで10週間で到達しています。Gitの適合性テストスイートで互換性を確認しました。決定論的シミュレーションハーネスでは、不変条件を検証し、競合状態やネゴシエーションの退行を洗い出しました。
エージェントは、LeanとTLA+の仕様も作成しました。システムの特性を形式化し、実装上のバグを特定するためです。OpenAIによると、エージェントのセッションを継続的に走らせてエッジケースを調査しました。あわせて、開発基盤全体でGitとPandoの両方に対するレッドチームテストも継続しています。
導入は、リードスルーおよびライトスルーのプロキシとして始まりました。既存のバックエンドとの同期を保ち、ダウンタイムなしでワークロードを移行しています。
その後、OpenAIはGitトラフィックとともに数百の連携を移行しました。本番環境の計測では、プッシュ遅延の中央値が約80%減少し、1時間で57テラバイト超を配信しました。
アップストリームへの貢献は、並行するパックのダウンロード、中断された転送のクリーンアップ、検証、トレースに対応しています。クライアント側の追加変更では、並列インデックス作成をサポートしました。また、個別にアドバタイズされたブランチの先頭に対する--force-with-leaseチェックを、より安全にしています。
16,000以上のSOCチームがANY.RUNを活用し、脅威調査を効率化して手作業を削減しています。チームで試してみる
翻訳元: https://cyberpress.org/openais-new-pando-git-system/