Google Cloudは、AIエージェントの実行を隔離するgVisorと、状態を保持してエージェントを再開させるAgent SubstrateをCloud Native Computing Foundation(CNCF)に寄贈した。両技術はCNCFのSandbox段階に入り、Kubernetesを使う開発チームは、信頼できないコードを隔離しながらアイドル状態のエージェントの実行状態を保持する公開基盤を試せる。
エージェントは待機中も状態を保持する
エージェントは作業後、モデルの推論や外部サービス、人によるレビューを待つ形で動く。Googleの発表によると、対話型セッションの待機時間は全体の90~95%に達する。この間、CPUを使わなくても、コードを実行する言語ランタイム、ローカルストレージ、編集中のファイル、ツールのセッションはメモリとディスクに残す必要がある。
専用Podを起動したままにすれば即座に応答できるが、未使用時にも計算資源を占有する。一方、サーバーを直接管理しないサーバーレスコンテナを0個に減らすと、Googleの説明ではストレージの複製やパッケージの再インストールという復旧処理が生じ、再開に20秒以上かかる場合がある。Googleが掲げた目標は、メモリとディスクの状態を保持したまま500ミリ秒未満で再開し、待機中のPodの費用をなくすことだ。
学習と評価では別のボトルネックが生じる。報酬に応じて行動を改善する強化学習の反復や、性能を比較するベンチマークでは、数千のタスクでエージェントのコードを同時に実行する場合がある。Googleによると、タスクごとにKubernetes Podを作成・削除すると短時間に要求が集中し、クラスター設定を保存する分散ストレージetcdやkube-apiserverに負荷をかけ、IPアドレス範囲を分割した論理ネットワークであるサブネットのIPアドレスを使い切る恐れがある。
状態と実行資源を分離して再利用する
Agent Substrateは、エージェントのセッション状態を保持するActorと、タスクの計算を行うWorkerを分離する。Actorにはファイルシステム、環境変数、メモリ状態、ネットワーク規則が含まれ、Workerは事前に用意したKubernetes Podの共有プールから実行資源を提供する。これにより、エージェントの休止中はWorkerスロットを空け、別のタスクに再利用できる。
停止中のActorに要求が届くと、要求を中継するプロキシがメモリに保持し、望ましい状態に調整するコントローラーに通知する。コントローラーは空きWorkerスロットを割り当て、速度の異なるストレージを組み合わせた階層型ストレージから状態が復元されると要求を転送する。作業が終わると状態を再び保存し、スロットを返す。Googleは、この方式なら毎回新しいPodオブジェクトを作らずにエージェントを起動・停止・再開できると説明する。
この設計は、アイドル状態のPodに拘束される計算資源と、Pod作成に伴うクラスター動作を管理するコントロールプレーンの負担を減らす方向だ。ただし、計算資源の共有にはウォームアップ済みのWorkerプールの運用が必要で、停止したセッションの状態を保存する領域も要る。したがって費用と運用負担はなくなるというより、アイドル時の実行からプールの規模と状態の保管へ移る。
gVisorが実行境界を設け、状態復元を支援する
エージェントはモデルが生成したコードを実行できるため、ホストからの隔離が重要だ。一般的なLinuxコンテナはホストのカーネルを共有する。Googleが併せて寄贈したgVisorは、Goで記述されたユーザー空間のアプリケーションカーネルだ。OSの機能を要求するシステムコールを、カーネルの外でアプリケーションが動くユーザー空間で捕捉し、信頼できないコードをホストのカーネルから分離する。
gVisorが独自のメモリと実行プログラムの情報を含むプロセステーブルを管理する特性は、実行環境を停止し、メモリページを保存して別のノードで復元する際に使われる。Googleの発表によると、Agent Substrateの状態復元は500ミリ秒未満だ。ハードウェアで仮想コンピューターを作るハードウェア仮想化や、OSの中核に機能を加えるカスタムカーネルモジュールが必要な作業には、小型で高速に起動するCloud Hypervisorベースのマイクロ仮想マシンも同じインターフェースで対応するとGoogleは述べた。
CNCFへの寄贈により公開基盤を試せる
Google Cloudは、KubeCon North Americaが開催されるソルトレイクシティで、Agent SubstrateとgVisorをCNCFのSandbox段階に寄贈すると発表した。OpenRLにも言及し、Googleが示した構成では、gVisorが隔離、Agent Substrateがエージェントの実行、OpenRLが学習と評価の調整を担う。Agent Substrateは1.0を公開し、試用コードとドキュメントを提供している。
開発者はate.devでガイドやアーキテクチャ文書を閲覧でき、GitHubのagent-substrate/substrateリポジトリでコードを確認できる。CNCF Slackのsubstrate-devとsubstrate-userチャンネルもコミュニティへの参加経路だ。GoogleはKubeConで、Workerプールのデプロイと特定時点の状態を保存したスナップショットの復元を試すワークショップや、GKEで複数のエージェントをプールで実行するデモを案内した。
この寄贈の核心は、エージェントの状態保持と安全な実行を公開されたKubernetes基盤にまとめつつ、運用の焦点をウォームアップ済みの資源と状態保存の管理へ移すことにある。
