Cloud Run は、AI アプリケーションを本番稼働させるための最速の手段です。
Daniel Strebel
Solution Lead, Google Cloud
※この投稿は米国時間 2024 年 6 月 1 日に、Google Cloud blog に投稿されたものの抄訳です。
Cloud Run が、AI 搭載アプリケーションを本番環境に提供するための最も簡単な方法の 1 つであることは周知の事実です。開発者はこれにより、基盤となるインフラストラクチャや、ユーザー数が 0 から数百万人規模に増加する場合のスケーリング方法について悩むことなく、アプリケーション ロジックだけに集中できるようになります。しかし、Cloud Run は、信頼できる Python ノートブックの外部でテストを実行し、運用化するために必要なツールを AI 研究者に提供するプラットフォームとしても、多くのお客様に選ばれていることをご存知でしょうか?
Cloud Run は、コンテナ ランタイム上に多くのサービスを提供し、AI 搭載アプリケーションの構築と実行のための包括的なプラットフォームを実現します。このブログ投稿では、AI 搭載アプリケーションの開発をスピードアップさせる Cloud Run の主な機能をいくつか紹介します。
-
製品化までの時間 - Vertex AI Studio でのプロトタイピングから、デプロイとコンテナ化を完了したアプリケーションへと簡単に移行可能
-
オブザーバビリティ - Cloud Run に組み込みの SLO モニタリングと Google Cloud Observability ソリューションを使用
-
イノベーションの速度 - リビジョンやトラフィック分割により、複数バージョンのサービスを並行して試すことが可能
-
関連性と事実性 - Cloud データベースに直接、安全に接続することで RAG 実装を構築
-
マルチリージョン デプロイと HA - 複数の Cloud Run サービスを、単一の外部グローバル アプリケーション ロードバランサの背後に配置
AI Studio でのプロトタイピングから Cloud Run サービスの公開まで
生成 AI を活用する製品の多くは、Vertex AI Studio を出発点とします。ここでは、コードを記述することなく、多様なモデルの迅速なプロトタイピングが可能です。Vertex AI Studio の「コード生成」機能は、いくつかの一般的なプログラミング言語の一つへとテストをコード化する、便利な変換手段です。


生成されたコード スニペットは、AI サービスを提供する Vertex AI API を呼び出すスクリプトを構成します。構築するアプリケーションのタイプによっては、スクリプトからウェブ アプリケーションを構築するプロセスは、ハードコードされたプロンプトをテンプレート化された文字列に変換し、これを丸ごとウェブ フレームワークでラッピングするといった簡単な作業で済みます。たとえば Python でこれを実現するには、プロンプトを小さな Flask アプリケーションでラッピングし、Python の単純な f 文字列を使用してリクエストをパラメータ化します。
必要な依存関係を含む単純な package.txt ファイルと一緒に、アプリケーションのコンテナ化とデプロイが完了しました。Cloud Run では Buildpacks がサポートされているため、コンテナのビルド方法を記述する Dockerfile を提供する必要もありません。
簡単な gcloud コマンドで、アプリケーションのトラフィック処理の準備は完了します。
SLO とテレメトリーによるアプリケーション パフォーマンスのモニタリング
オブザーバビリティの実装は、アプリケーションがユーザーの期待に適合することを保証し、アプリケーションによるビジネスへの影響を把握するために不可欠です。Cloud Run は、すぐに使用できるサービスレベル目標(SLO)モニタリングとオブザーバビリティを提供します。
SLO をモニタリングすることは、エラー バジェットに基づくアプリケーション管理を開始し、この指標を使用して、安定性とイノベーション速度のバランスをとるための重要な手法です。Cloud Run では、可用性、レイテンシ、カスタム指標に基づいて SLO モニタリングを定義できます。


ロギング、モニタリング、トレースといった従来のオブザーバビリティもすぐに利用可能であり、Google Cloud Observability と直接統合することで、すべての関連データを一元的に収集できます。特にトレースは、AI アプリケーションのレイテンシ分解を調査する上で非常に貴重であることが実証されています。トレースは、複雑なオーケストレーション シナリオや RAG の実装をよりよく理解するためによく使用されます。
Cloud Deploy と同時実行リビジョンによる迅速なイノベーション
AI のユースケースの多くは、問題への取り組み方や解決方法を根本的に見直すものです。LLM の性質、温度などのパラメータによる影響、あるいはプロンプトのニュアンスにより、全体的な結果の予測が困難になることもしばしばあります。したがって、いくつかのテストを並行して実施できる機能があれば、イノベーションと反復処理を迅速に行えるようになります。


Cloud Run に組み込まれたトラフィック分割機能を使用すると、それぞれ異なるサービス リビジョンを表す複数のバージョンを同時に実行でき、トラフィックの分散方法をきめ細かく制御できます。AI アプリケーションの場合、これは、異なるバージョンのプロンプトをそれぞれ別のユーザー グループに提供し、クリック率や購入確率といった共通の成功指標に基づいて比較できることを意味します。
Cloud Deploy は、Cloud Run サービスのさまざまなリビジョンのロールアウトを自動的にオーケストレートするためのマネージド サービスです。また、既存の開発フローと統合することで、ソース管理において、プッシュ イベントによってデプロイ パイプラインをトリガーさせることもできます。
クラウド データベースとの接続による企業データとの統合
静的な事前トレーニング済みモデルでは、ドメイン固有のコンテキストが不足しているため、正確な回答を生成できないことがあります。多くの場合は、検索拡張生成(RAG)のような技術によってプロンプトに追加データを提供することで、モデルに十分なコンテキスト情報を提供し、特定のユースケースに適した回答を生成できるようになります。


Cloud Run は、オーケストレーションを担う AI アプリケーションからクラウド データベース(AlloyDB、Cloud SQL など)への直接かつプライベートな接続を提供し、RAG 実装のためのベクトルストアとして活用できます。ダイレクト VPC 下り(外向き)機能により、サーバーレス VPC コネクタの追加手順を踏むことなく、Cloud Run をプライベートなデータベース エンドポイントに接続できるようになりました。
カスタム ドメインとマルチリージョン デプロイ
デフォルトでは、すべての Cloud Run サービスに <service-name>.<project-region-hash>.a.run.app という形式の URL が発行されます。この URL から、HTTP リクエストを介してサービスにアクセスできます。これは迅速なプロトタイピングや内部サービスには便利ですが、しばしば 2 つの問題を引き起こします。
第一に、これはあまり記憶しやすい URL とは言いがたく、ドメイン サフィックスもサービス プロバイダに対応したものではありません。そのため、サービスを利用する消費者は、これが正規のサービスかどうかを見極めることができません。SSL 証明書も Google に対して発行され、そのサービスの所有者に関する情報を提供するものではありません。
2 つ目の問題は、分散されたユーザーベースに HA と低レイテンシを実現する目的で、サービスを複数のリージョンにスケーリングする場合、リージョンごとに URL が異なってしまうことです。つまり、あるサービス リージョンから別のサービス リージョンへの切り替えは、クライアント レベルまたは DNS レベルで行わなければならず、ユーザーにとって非透過的となります。


この両方の問題を解決するため、Cloud Run はカスタム ドメイン名をサポートするほか、エニーキャストに基づき、単一の外部 IP アドレスを持つグローバルな外部ロードバランサの背後で、異なるリージョンに属する複数の Cloud Run デプロイを統合する機能を提供します。ロードバランサを設置し、Cloud Run の異常トラフィック検出機能を有効にすることで、カスタム ドメイン、独自の証明書、地域的な停電に対応する自動フェイルオーバーとともに、AI サービスを実行できるようになります。
Cloud Run による AI アプリのパワーアップ
Vertex AI が提供する強力なサービスを基盤として AI 搭載アプリケーションを構築する上で、Cloud Run が自然な出発点となる根拠を示す 5 つの側面について説明しました。
RAG 対応の生成 AI アプリケーションを Cloud Run で構築することに興味をお持ちの場合は、このソリューション ブループリントが、さまざまなアーキテクチャ構成要素を深く掘り下げるための素晴らしいリソースとなります。Cloud Run の生成 AI アプリケーションは Python で記述すべきものと思っている方のために、Cloud Next のこのセッションでは、使い慣れた Java ベースのエンタープライズ環境で AI アプリケーションを構築する方法を紹介します。最後に、使い始めに役立つ、開発者に焦点を当てたさまざまなリソースやポインタが掲載されている Google のソリューション カタログをブックマークしておくことをおすすめします。
ー アプリケーション モダナイゼーション担当 EMEA ソリューション リード Daniel Strebel




