ホーム / ニュース / OpenAI、ChatGPT基盤ストレージのAzure Cosmos DB運用を解説 読み取り遅延を約120msから約10msに短縮

OpenAI、ChatGPT基盤ストレージのAzure Cosmos DB運用を解説 読み取り遅延を約120msから約10msに短縮

OpenAIは10月23日、ChatGPTやAPI、Codexなど全製品が使うオンラインストレージ基盤「Habitat」について、技術解説シリーズの第2部「Rapidly scaling online storage to serve over 1 billion ChatGPT users (Part II)」を公開した。9月の第1部がPythonライブラリからサービスへの切り出しとRustへの移行を扱ったのに対し、今回は下層で使うAzure Cosmos DBの運用が主題で、マルチテナントとシングルテナントの間を行き来した経緯と、世界規模での読み取り高速化を説明している。

Habitatは40の地域で10億人超のユーザーに応答し、500ペタバイト超のデータを扱う。最大のCosmos DBアカウントだけで数十ペタバイトを保存し、毎秒2,000万件超のクエリを処理しているという。OpenAIは、この規模でCosmos DBを運用している企業は把握する限り自社だけだとしている。

共有コンテナから専用コンテナへ、そして共有に戻した理由

当初は各Cosmos DBアカウントに既定のコンテナを1つだけ置き、論理パーティションキーごとの上限(毎秒1万RU)を背圧として頼っていた。しかし初期のAPI設計でパーティションキーの選択をクライアントに任せたため、user_idやworkspace_idといったキーが製品をまたいで衝突した。上限が実際に適用されるのは物理パーティション単位なので、ニッチな機能の負荷がログインや登録といった中核の処理を巻き込む「ノイジーネイバー」も起きた。データが増えて物理パーティションが分割されると1パーティションあたりのスループットが半減し、リクエスト量が変わらなくても容量不足に陥る問題もあった。

そこで重要な新規用途から専用コンテナを割り当てたところ、サイト全体の障害は機能単位の障害に縮小した。ただ、負荷試験で毎秒1,000RU程度だった機能がローンチで100万RUに跳ねると、1万RUで用意した専用コンテナには容量の100倍の負荷がかかる。共有コンテナなら空き容量の5%で吸収できた変動が、専用化で吸収できなくなったわけだ。製品チームが事前の増強を忘れてローンチ当日に緊急対応に追われる事態が繰り返され、容量計画を全チームに分散させる運用は組織的に回らなくなった。

最終的にOpenAIはAzureチームと共同で共有型に戻す設計を作った。最も負荷の高いキーから絞るホットキー・スロットリング、一括投入やデータ抽出などのオフライン処理を後回しにする優先度制御(QoS)、そして物理パーティションごとに毎秒1万RUまで伸び、ストレージ量だけでなくRU使用量でも分割される新しいサーバーレスモードの3つである。従来のサーバーレスモードは上限が5,000RUで、RU消費の多い用途には使えなかった。移行後の数か月、容量確保やノイジーネイバーに起因する障害は起きていないとしている。

読み取りp50を約120msから約10msへ

2026年の重点は遅延だった。リクエストの9割超を占める読み取りについて、3段構えで改善している。データ所在地の要件がある利用者向けには各地域にアカウントを置くが、ストレージ容量の制約で一般の利用者には広げられない。認証メタデータのように毎回参照される小さなデータだけは、最大40リージョンに複製する。それ以外は利用者に近い場所に置いたValkeyの分散キャッシュで受け、Cosmos DBの変更フィード(CDC)を使って数秒以内に世界中のキャッシュを無効化する。MetaのTAOにならった方式で、TTLだけに頼る場合のヒット率と鮮度のトレードオフを避ける狙いだ。これに第1部で触れたRust化が重なり、全世界の読み取りp50遅延は約120msから約10msに下がった。

キャッシュ無効化を支えるCDCは、Habitat以外にも二次インデックスやデータ移動、分析基盤に使われている。数千のコンテナから毎秒数百万件の変更を取り込み、100を超えるKafkaトピックへ流す規模で、利用者は変更時に呼ばれる関数を登録するだけで済む設計にした。チェックポイントをメモリ上でまとめて定期的に書き出すよう、Azure側のCDC SDKにも手を入れたという。

第1部と合わせて読むと、OpenAIが「マネージドサービスに任せる」段階をすでに越えていることがわかる。2024年末には主要リージョンの停電でフェイルオーバーに数時間かかり、約1か月後の切り戻しでは接続が元のリージョンに殺到して再び大規模障害を起こした。この2件を機に、本番相当の非本番アカウントでの共同テスト、Azure側の物理ストレージ層まで含む共同監視、サポート窓口を経ない相互の呼び出し経路を整えた。さらに先の手として、RocksetのRocksDB Cloudを核にRaftで複製し、Cosmos DBと同じドキュメントモデルを持つエクサバイト級の自社ストレージを開発中だと明かした。OpenAIは2024年にRocksetを買収しており、その技術が会話データなど大容量データの保存先に使われる見通しになる。

タグ付け処理あり: