Google Cloud で ML を実装するためのベスト プラクティス

このドキュメントでは、 Google Cloudで ML を実装するためのベスト プラクティスを紹介します。データとコードに基づいたカスタム トレーニング モデルに重点を置いています。主なアクションや詳細情報のリンクなど、ML ワークフロー全体でカスタム トレーニング モデルを開発する方法に関する推奨事項を示します。

次の図は、関連プロダクトを含め、このドキュメントで扱う ML ワークフローの工程の概要を示しています。

  1. ML の開発
  2. データの準備
  3. ML トレーニング
  4. モデルのデプロイとサービング
  5. ML ワークフローのオーケストレーション
  6. アーティファクトの整理
  7. モデルのモニタリング

 Google Cloudの ML ワークフロー。

このドキュメントは、すべての推奨事項を網羅したものではありません。目的は、データ サイエンティストと ML アーキテクトが、 Google Cloud での ML の使用に関連するアクティビティの範囲を把握し、それに応じて計画できるようにすることです。また、AutoML などの代替 ML 開発については、推奨ツールとプロダクトの使用で説明していますが、このドキュメントではカスタム トレーニング モデルに主に焦点を当てています。

このドキュメントのベスト プラクティスを実施する前に、Vertex AI の概要を読むことをおすすめします。

このドキュメントの前提条件は次のとおりです。

  • 主に Google Cloud サービスを使用する。ここでは、ハイブリッド アプローチとオンプレミス アプローチについては説明しません。
  • トレーニング データを収集し、 Google Cloudに保存する。
  • ML、ビッグデータ ツール、データ前処理に関する中級レベルの知識と、Cloud StorageBigQueryGoogle Cloud の基礎知識を持っている。

ML を初めて使用する場合は、Google のML 集中講座をご覧ください。

次の表に、このドキュメントで説明する ML ワークフローの各フェーズで推奨されるツールとプロダクトを示します。

ML ワークフローのステップ 推奨ツールとプロダクト
ML 環境の設定
ML の開発
データの準備
ML トレーニング
モデルのデプロイとサービング
ML ワークフローのオーケストレーション
アーティファクトの整理
モデルのモニタリング
マネージド オープンソース プラットフォーム

Google は、Vertex AI カスタム トレーニング モデル ソリューションに代わる事前構築済みのトレーニング ルーチンとして、AutoMLVertex AI による予測BigQuery ML を提供しています。次の表に、これらのオプションや Vertex AI を使用する場合の推奨事項を示します。

ML 環境 説明 この環境を選択すべきケース
BigQuery ML BigQuery ML でデータ、インフラストラクチャ、事前定義されたモデルタイプが 1 つのシステムにまとめられている。
AutoML(Vertex AI のコンテキスト) AutoML には、画像分類や表形式の回帰などの一般的な問題のトレーニング ルーチンが用意されています。アーキテクチャの選択、ハイパーパラメータ チューニング、マシンのプロビジョニングなど、モデルのトレーニングとサービス提供のあらゆる局面が自動的に処理されます。
Vertex AI カスタム トレーニング モデル Vertex では、独自のカスタム トレーニング ルーチンを実行し、サーバーレス アーキテクチャ上であらゆるタイプのモデルをデプロイできます。Vertex AI では、ハイパーパラメータのチューニングやモニタリングなどの追加サービスが提供されるため、モデルの開発が容易になります。カスタム トレーニング方法を選択するをご覧ください。
  • 問題が、BigQuery ML や AutoML に関してこの表に記載されている基準と一致しない。
  • オンプレミスまたは別のクラウド プラットフォームですでにトレーニングを実行していて、プラットフォーム間で整合性が必要な場合。

ML 環境の設定

ML 環境を設定する場合は、次のベスト プラクティスを使用することをおすすめします。

テストと開発に Vertex AI Workbench インスタンスを使用する

使用しているツールを問わず、Vertex AI Workbench インスタンスを使用して、テストと開発(コードの作成、ジョブの開始、クエリの実行、ステータスの確認など)を行うことをおすすめします。Vertex AI Workbench インスタンスを使用すると、 Google Cloudのすべてのデータと AI サービスに簡単かつ再現可能な方法でアクセスできます。

Vertex AI Workbench インスタンスには、直ちに使用を開始できる一連の安全なソフトウェアとアクセス パターンが用意されています。ネットワーク、Identity and Access Management などのGoogle Cloud プロパティや、(コンテナを経由して)Vertex AI Workbench インスタンスに関連付けられているソフトウェアをカスタマイズするのが一般的な方法です。詳細については、Vertex AI の概要Vertex AI Workbench インスタンスの概要をご覧ください。

また、Colab Enterprise を使用することもできます。これは、 Google Cloudのセキュリティ機能とコンプライアンス機能を備えたコラボレーション指向のマネージド ノートブック環境です。

チームメンバーごとに Vertex AI Workbench インスタンスを作成する

データ サイエンス チームの各メンバー用に Vertex AI Workbench インスタンスを作成します。チームメンバーが複数のプロジェクト、特にさまざまな依存関係があるプロジェクトに関与している場合は、複数のインスタンスを使用し、各インスタンスを仮想ワークスペースとして扱うことをおすすめします。Vertex AI Workbench インスタンスは、使用されていない場合は停止できます。

企業のポリシーに基づいて ML リソースとアーティファクトを保存する

最も簡単なアクセス制御は、未加工と Vertex AI の両方のリソースとアーティファクト(データセットやモデルなど)を同じ Google Cloud プロジェクトに保存することです。一般的に、企業にはアクセスを制御するポリシーがあります。リソースとアーティファクトがプロジェクトをまたいで保存されている場合は、Identity and Access Management(IAM)を使用して、プロジェクト間の企業アクセス制御を構成できます。

Vertex AI SDK for Python を使用する

Vertex AI をエンドツーエンドのモデル構築ワークフローに使用するために、Vertex AI SDK for Python を使用します。これは、PyTorch、TensorFlow、XGBoost、scikit-learn などの使い慣れた ML フレームワークとシームレスに連携します。

または、ブラウザを介するユーザー インターフェースとして Vertex AI の機能をサポートする Google Cloud コンソールも使用できます。

ML の開発

ML 開発には、次のベスト プラクティスをおすすめします。

ML 開発では、データの準備、テスト、モデルの評価を行います。ML の問題を解決するには、通常、さまざまなモデルを構築して比較し、何が最適かを見極める必要があります。

通常、データ サイエンティストは、さまざまなアーキテクチャ、入力データセット、ハイパーパラメータ、ハードウェアを使用してモデルをトレーニングします。データ サイエンティストは、テスト データセットの精度、適合率、再現率などの集計パフォーマンス指標を通して、結果として得られるモデルを評価します。最後に、データ サイエンティストは、データの特定のサブセット、さまざまなモデル バージョン、さまざまなモデル アーキテクチャに対してモデルのパフォーマンスを評価します。

トレーニング データを準備する

モデルのトレーニングに使用するデータは、オンライン サービス システムのログ、ローカル デバイスの画像、ウェブからスクレイピングされたドキュメントなど、任意の数のシステムから取得できます。

データの出所に関係なく、ソースシステムからデータを抽出し、ML トレーニング用に最適化された形式とストレージ(稼働中のソースとは別)に変換します。Vertex AI で使用するトレーニング データの準備の詳細については、独自のモデルをトレーニングして使用するをご覧ください。

構造化データと半構造化データを BigQuery に保存する

構造化データまたは半構造化データを扱う場合は、プロジェクト構造に対する BigQuery の推奨事項に従ってすべてのデータを BigQuery に保存することをおすすめします。ほとんどの場合、中間の処理済みデータも BigQuery に保存できます。速度を最大化するには、トレーニング データのビューやサブクエリを使用する代わりに、実体化されたデータを保存することをおすすめします。

BigQuery Storage API を使用して BigQuery からデータを読み取ります。アーティファクト トラッキングの場合は、表形式のマネージド データセットの使用を検討してください。次の表に、API を使いやすくするための Google Cloud ツールを示します。

以下を使用している場合 使用する Google Cloud ツール
TensorFlow for Keras BigQuery 用の tf.data.dataset リーダー
TFX BigQuery クライアント
Dataflow Google BigQuery I/O コネクタ
その他のフレームワーク(PyTorch、XGBoost、scikit-learn など) BigQuery でのモデルのインポート

画像、動画、音声、非構造化データを Cloud Storage に保存する

これらのデータは Cloud Storage に大規模なコンテナ形式で保存します。これは、シャーディングされた TFRecord ファイル(TensorFlow を使用している場合)または Avro ファイル(他のフレームワークを使用している場合)に適用されます。

個々の画像、動画、音声クリップを大規模なファイルに結合すると、Cloud Storage に対する読み取りと書き込みのスループットが向上します。100~10,000 個のシャードを含む、100 MB 以上のファイルにします。

データ マネジメントを有効にするには、Cloud Storage バケットとディレクトリを使用してシャードをグループ化します。詳細については、Cloud Storage のプロダクト概要をご覧ください。

Google Cloud コンソールで Data Labeling Service を使用する

トレーニング データの作成とインポートは、 Google Cloud コンソールの Vertex AI ページから行えます。Gemini のプロンプトとチューニング機能を使用すると、カスタマイズされた分類、エンティティ抽出、感情分析を使用してテキストデータを管理できます。 Google Cloud コンソールの Marketplace には、LabelboxSnorkel Flow などのデータラベル付けソリューションもあります。

構造化データに Vertex AI Feature Store を使用する

Vertex AI Feature Store を使用すると、ML 特徴を一元的な場所で作成、維持、共有、サービングできます。これは低レイテンシが必要なワークロードをサービングするように最適化されており、特徴データを BigQuery のテーブルまたはビューに保存できます。Vertex AI Feature Store を使用するには、オンライン ストア インスタンスを作成し、特徴ビューを定義する必要があります。BigQuery には、オフラインで作業できるように過去の特徴データを含むすべての特徴データが保存されます。

Vertex AI TensorBoard と Vertex AI Experiments を使用してテストを分析する

モデルを開発する際に Vertex AI TensorBoard を使用して、ハイパーパラメータなどに基づいて特定のテストを視覚化して比較します。Vertex AI TensorBoard は、エンタープライズ対応のマネージド サービスで、費用対効果に優れ、データ サイエンティストと ML 研究者がテストをシームレスに追跡、比較、共有してコラボレーションできる安全なソリューションです。Vertex AI TensorBoard を使用すると、損失や精度などのテスト指標の経時的な追跡、モデルグラフの可視化、下位次元スペースへのエンべディングの投影などを行えます。

Vertex AI Experiments を使用して Vertex ML Metadata とのインテグレーションを実行し、パラメータ、指標、データセット、モデル アーティファクト間のリンクを記録して構築します。

Vertex AI Workbench インスタンスの内部で小規模データセット用のモデルをトレーニングする

小規模なデータセットや大規模なデータセットのサブセットでは、Vertex AI Workbench インスタンス内でモデルをトレーニングするだけで十分な場合もあります。大規模なデータセットや分散トレーニングには、トレーニング サービスを使用すると便利です。トレーニングをスケジュールに沿って行う場合や、追加データの受信に応じて行う場合は、小規模なデータセットでも、Vertex AI Training サービスを使用してトレーニングを提供する方法をおすすめします。

ハイパーパラメータ チューニングを使用してモデルの予測精度を最大化する

モデルの予測精度を最大化するには、Vertex AI Training サービスが提供する自動モデル拡張機能、ハイパーパラメータ チューニングを使用します。この機能を通じて、モデルのトレーニング時に Google Cloud の処理インフラストラクチャと Vertex AI Vizier を活用してさまざまなハイパーパラメータ構成をテストします。ハイパーパラメータ チューニングにより、最適な値を得られるまで多くのトレーニングを実行する過程で、ハイパーパラメータを手動で調整する必要がなくなります。

ハイパーパラメータ チューニングの詳細については、ハイパーパラメータ チューニングの概要ハイパーパラメータ チューニング ジョブを作成するをご覧ください。

Vertex AI Workbench インスタンスを使用してモデルを理解する

Vertex AI Workbench インスタンスを使用して、モデルを評価し、理解します。Vertex AI Workbench インスタンスには、scikit-learn などの一般的な組み込み共通ライブラリに加えて、What-If ツール(WIT)言語解釈ツール(LIT)が用意されています。WIT では複数の手法を使用してモデルのバイアスをインタラクティブに分析でき、LIT では視覚的で対話型の拡張可能なツールを使用して自然言語処理モデルの動作を理解できます。

特徴アトリビューションを使用してモデル予測の分析情報を取得する

Vertex Explainable AI は、ML 実装プロセスに不可欠な部分であり、特徴アトリビューションによって、モデルがどのような根拠で予測を導き出したかに関する分析情報を提供します。Vertex Explainable AI により、モデルが予測のために入力として使用する各特徴の重要度を詳細に確認して、モデルの動作をより深く理解し、モデルの信頼性を高めることができます。

Vertex Explainable AI は、表形式データと画像データに基づくカスタム トレーニング モデルをサポートします。

Vertex Explainable AI の詳細については、以下をご覧ください。

データの準備

データ準備には、次のベスト プラクティスをおすすめします。

データを処理するための推奨方法は、使用するフレームワークとデータ型によって異なります。このセクションでは、一般的なシナリオに対する推奨事項の概要を説明します。

BigQuery を使用して構造化データと半構造化データを処理する

BigQuery は、未処理の構造化データまたは半構造化データの保存に使用します。BigQuery ML を使用してモデルを構築する場合は、BigQuery に組み込まれている変換をデータの前処理に使用します。AutoML を使用している場合は、AutoML に組み込まれている変換をデータの前処理に使用します。カスタムモデルを構築する場合は、BigQuery 変換を使用するのが最も費用対効果の高い方法になります。

大規模なデータセットの場合、BigQuery でパーティショニングの使用を検討してください。この方法により、クエリのパフォーマンスと費用対効果を向上させることができます。

Dataflow を使用してデータを処理する

大量のデータを処理する場合は、Apache Beam プログラミング モデルを使用する Dataflow の使用を検討してください。Dataflow を使用すると、非構造化データを TFRecord などのバイナリデータ形式に変換できます。これにより、トレーニング プロセス中にデータ取り込みのパフォーマンスを向上させることができます。

サーバーレス Spark データ処理に Dataproc を使用する

または、Apache Spark のコードベースとスキルに投資している場合は、Dataproc の使用を検討してください。メモリに収まる小さなデータセットには、1 回限りの Python スクリプトを使用します。

Cloud SQL で表現できない変換やストリーミングを目的とした変換が必要な場合は、Dataflow と pandas ライブラリを組み合わせて使用できます。

ML メタデータでマネージド データセットを使用する

データを ML 用に前処理した後、Vertex AI でのマネージド データセットの使用を検討できます。マネージド データセットを使用すると、データとカスタム トレーニング モデルを明確にリンクできるほか、記述統計を提供したり、データをトレーニング セット、テストセット、検証セットに自動または手動で分割したりすることもできます。

マネージド データセットは必須ではなく、トレーニング コード内のデータの分割をさらに細かく制御したい場合や、データとモデル間のリネージがアプリケーションに重要でない場合には使用を避けることも考えられます。

詳細については、データセットカスタム トレーニング アプリケーションでマネージド データセットを使用するをご覧ください。

ML トレーニング

ML トレーニングには、次のベスト プラクティスをおすすめします。

ML トレーニングでは、運用化されたトレーニングとは、繰り返しをトラッキングしてモデル トレーニングを繰り返し可能にし、パフォーマンスを管理するプロセスを指します。Vertex AI Workbench インスタンスは、小規模なデータセットの反復開発を行う際に簡便に使用できますが、再現可能かつ大規模なデータセットに拡張できるように、コードを運用することをおすすめします。このセクションでは、トレーニング ルーティンを運用化するためのツールとベスト プラクティスについて説明します。

マネージド サービスでコードを実行する

Vertex AI Training サービスでコードを実行するか、Vertex AI Pipelines でオーケストレートすることをおすすめします。必要に応じて、Deep Learning VM ImageDeep Learning ContainersCompute Engine でコードを直接実行できます。ただし、自動スケーリングやバースト機能などの Vertex AI の機能を使用する場合は、このアプローチはおすすめしません。

トレーニング パイプラインを使用してジョブ実行を運用化する

Vertex AI でトレーニング ジョブの実行を運用化するには、トレーニング パイプラインを作成します。トレーニング パイプラインは一般的な ML パイプラインとは異なり、トレーニング ジョブをカプセル化します。トレーニング パイプラインの詳細については、トレーニング パイプラインの作成REST リソース: projects.locations.trainingPipelines をご覧ください。

トレーニングのチェックポイントを使用して、テストの現在の状態を保存する

このドキュメントの ML ワークフローでは、インタラクティブにトレーニングしていないことを前提としています。モデルが失敗し、チェックポイントが設定されていない場合、モデルがメモリ内にないため、トレーニング ジョブまたはパイプラインが終了し、データが失われます。この状況を回避するには、状態を失わないように常にトレーニング チェックポイントを使用するようにします。

トレーニングのチェックポイントを Cloud Storage に保存することをおすすめします。テストやトレーニングの実行ごとに異なるフォルダを作成します。

チェックポイントの詳細については、TensorFlow Core 用のトレーニング チェックポイントPyTorch で一般的なチェックポイントを保存して読み込むML の設計パターンをご覧ください。

Cloud Storage でサービスを提供するモデル アーティファクトを準備する

カスタム トレーニングされたモデルまたはカスタム コンテナの場合は、本番環境で使用しているリージョン エンドポイントとリージョンが一致する Cloud Storage バケットにモデル アーティファクトを保存する必要があります。詳細については、バケットのリージョンをご覧ください。

Cloud Storage では、オブジェクトのバージョニングがサポートされています。偶発的なデータの損失や破損を防ぐには、Cloud Storage でオブジェクトのバージョニングを有効にします。

Cloud Storage バケットを同じ Google Cloud プロジェクトに保存します。Cloud Storage バケットが別の Google Cloud プロジェクトにある場合、モデル アーティファクトを読み取るには、Vertex AI にアクセス権を付与する必要があります。

Vertex AI のビルド済みコンテナを使用する場合は、モデル アーティファクトのファイル名が以下の例と完全一致することを確認してください。

  • TensorFlow SavedModel: saved_model.pb
  • Scikit-learn: model.joblib
  • XGBoost: model.bst
  • PyTorch: model.pth

1 つ以上のモデル アーティファクト形式でモデルを保存する方法については、予測に使用するモデル アーティファクトのエクスポートをご覧ください。

新しい特徴値を定期的に計算する

多くの場合、モデルでは、Vertex AI Feature Store から生成された特徴のサブセットが使用されます。Vertex AI Feature Store の特徴は、すでにオンラインで提供する準備ができています。データレイクからデータを取り込むことでデータ サイエンティストが作成した新しい特徴については、対応するデータ処理と特徴量エンジニアリング ジョブ(または Dataflow)をスケジューリングし、特徴の更新の必要性とオンライン サービス提供または一括サービス提供のための Vertex AI Feature Store への取り込みに基づいて、新しい特徴量を必要な頻度で計算することをおすすめします。

モデルのデプロイとサービング

モデルのデプロイとサービングには、次のベスト プラクティスをおすすめします。

モデルのデプロイとサービングとは、モデルを本番環境に投入することです。トレーニング ジョブの出力は Cloud Storage に保存された 1 つ以上のモデル アーティファクトです。このファイルを Model Registry にアップロードして、予測処理に使用できます。予測のサービス提供には次の 2 つのタイプがあります。バッチ予測ではデータのバッチを定期的にスコア付けし、オンライン予測はライブ アプリケーションの準リアルタイムのスコア付けに使用します。どちらの方法でも、クラウドでホストされている ML モデルに入力データを渡し、各データ インスタンスについて推定を取得することによって、トレーニング モデルから予測を取得できます。詳細については、バッチ予測の取得カスタム トレーニング モデルからオンライン予測を取得するをご覧ください。

クライアントとモデルサーバー間のピアツーピア リクエストのレイテンシを短縮するには、Vertex AI プライベート エンドポイントを使用します。これらは、予測リクエストを行うアプリケーションとそのサービスを提供するバイナリが同じローカル ネットワーク内にある場合に特に役立ちます。インターネット ルーティングのオーバーヘッドを回避し、Virtual Private Cloud を使用してピアツーピア接続を確立できます。

必要なマシンの数とタイプを指定する

予測に使用するモデルをデプロイするには、さまざまな中央処理装置(CPU)の仮想マシン(VM)のタイプや画像処理装置(GPU)のタイプなど、モデルに適したハードウェアを選択します。詳細については、マシンタイプ、スケールティアの指定をご覧ください。

モデルへの入力を計画する

モデルをデプロイするだけでなく、入力をモデルに渡す方法を決定する必要があります。バッチ予測を使用している場合は、データレイクまたは Vertex AI Feature Store Batch Serving API からデータを取得できます。オンライン予測を使用している場合は、入力インスタンスをサービスに送信すると、レスポンスで予測が返されます。詳細については、レスポンス本文の詳細をご覧ください。

オンライン予測のためにモデルをデプロイする場合は、モデルのエンドポイントに渡す必要がある入力や特徴を提供するための低レイテンシでスケーラブルな方法が必要です。そのためには、多数の Google Cloud上のデータベース サービスのいずれかを使用するか、Vertex AI Feature Store の オンライン サービング API を使用します。オンライン予測エンドポイントを呼び出すクライアントは、特徴サービス提供ソリューションを呼び出して特徴の入力を取得し、それらの入力で予測エンドポイントを呼び出すことができます。モデルを段階的に置き換えるなど、同じエンドポイントに複数のモデルをサービングできます。また、デプロイメント間でリソースを共有して、テスト環境と本番環境など、複数のエンドポイントにモデルをデプロイすることもできます。

ストリーミング取り込みにより、特徴値をリアルタイムで更新できます。この方法は、オンライン サービングで最新の利用可能なデータを優先する場合に役立ちます。たとえば、ストリーミング イベントデータを取り込むことができ、数秒以内に Vertex AI Feature Store のストリーミング取り込みによってそのデータを、オンライン サービングのシナリオで使用できるようにします。

さらに、カスタム予測ルーチンを使用して、モデルサーバーとの間の入力(リクエスト)と出力(レスポンス)の処理やフォーマットをカスタマイズできます。

自動スケーリングをオンにする

オンライン予測サービスを使用する場合、ほとんどの場合は、最小ノード数と最大ノード数を指定して自動スケーリングを有効にすることをおすすめします。詳細については、カスタム トレーニング モデルの予測を取得するをご覧ください。高可用性のサービスレベル契約(SLA)を確保するには、少なくとも 2 つのノードで自動スケーリングを設定します。

スケーリング オプションの詳細については、ML 予測のスケーリングをご覧ください。

ML ワークフローのオーケストレーション

ML ワークフローのオーケストレーションには、次のベスト プラクティスをおすすめします。

Vertex AI では、必要に応じて必要な頻度でモデルを再トレーニングできるフルマネージド サービスの Vertex AI Pipelines を使用して ML ワークフローを自動化する ML ワークフロー オーケストレーションを提供します。再トレーニングを行うことで、モデルの変更に適応し、時間の経過に伴ってパフォーマンスを維持できますが、最適なモデルの再トレーニング サイクルの選択時にデータがどの程度変化するかを考慮してください。

ML オーケストレーション ワークフローは、モデルを設計および構築し、本番環境に配置し、ML モデルで何が機能していて何が機能していないかを特定するお客様に最適です。テストに使用するコードは、ML ワークフローの他の箇所で一部を変更すると効果的です。自動化された ML ワークフローを操作するには、Python に精通し、コンテナなどの基本的なインフラストラクチャを理解し、ML とデータ サイエンスの知識を持っていることが必要です。

Vertex AI Pipelines を使用して ML ワークフローをオーケストレートする

各データ処理、トレーニング、評価、テスト、デプロイを手動で開始することもできますが、Vertex AI Pipelines を使用してフローをオーケストレートすることをおすすめします。詳細については、MLOps レベル 1: ML パイプラインの自動化をご覧ください。

Vertex AI Pipelines は、Kubeflow、TensorFlow Extended(TFX)、Airflow によって生成された DAG の実行をサポートします。

柔軟なパイプライン構築のために Kubeflow Pipelines を使用する

Kubeflow Pipelines SDK は、マネージド パイプラインを作成するほとんどのユーザーに推奨されます。Kubeflow Pipelines は柔軟性が高く、コードを使用してパイプラインを作成できます。さらに、 Google Cloud パイプライン コンポーネントを提供しているため、AutoML などの Vertex AI 機能をパイプラインに組み込むことができます。Kubeflow Pipelines の詳細については、Kubeflow PipelinesVertex AI Pipelines をご覧ください。

分散 ML ワークフローに Ray on Vertex AI を使用する

Ray は、Python のスケーラブルなオープンソースの分散コンピューティング フレームワークを介して ML ワークフローをスケーリングするための、統一された汎用分散フレームワークを提供します。このフレームワークは、ML エコシステムにさまざまな分散フレームワークが存在することによる課題(複数のモードのタスク並列処理、スケジューリング、リソース管理に対処する必要があるなど)の解決に役立ちます。Ray on Vertex AI を使用して、Vertex AI でアプリケーションを開発できます。

アーティファクトの整理

アーティファクトの整理には、次のベスト プラクティスをおすすめします。

アーティファクトは、ML ワークフローの各ステップから出力されます。標準化された方法で整理することをおすすめします。

ML モデルのアーティファクトを整理する

アーティファクトを次の場所に保存します。

ストレージのロケーション アーティファクト
ソース管理リポジトリ
  • Vertex AI Workbench インスタンス
  • パイプラインのソースコード
  • 前処理関数
  • モデルのソースコード
  • モデル トレーニング パッケージ
  • サービス提供関数
テストと ML メタデータ
  • テスト
  • パラメータ
  • ハイパーパラメータ
  • メタパラメータ
  • 指標
  • データセット アーティファクト
  • モデルのアーティファクト
  • パイプライン メタデータ
Model Registry
  • トレーニング済みモデル
Artifact Registry
  • パイプライン コンテナ
  • カスタム トレーニング環境
  • カスタム予測環境
Vertex AI Inference
  • デプロイされるモデル

パイプラインの定義とトレーニング コードのためにソース管理リポジトリを使用する

ソース管理を使用して、ML パイプラインとそれらのパイプライン用に構築するカスタム コンポーネントをバージョン管理できます。Artifact Registry を使用すると、Docker コンテナ イメージを公開することなく、保存、管理、保護できます。

モデルのモニタリング

モデルを本番環境にデプロイした後、パフォーマンスをモニタリングして、モデルが期待どおりに機能していることを確認する必要があります。Vertex AI では、次の 2 つの方法で ML モデルをモニタリングできます。

  • スキュー検出: この方法では、モデルのトレーニングと本番環境のデータの間の歪み度を確認します。
  • ドリフト検出: このタイプのモニタリングでは、本番環境データのブレを探します。ドリフトは、入力の統計特性と、モデルが予測しようとしているターゲットが、予期しないあり方で時間の経過とともに変化した場合に発生します。これによって、時間の経過とともに予測の精度が低下する可能性があるため、問題が発生します。

モデルのモニタリングは、数値特徴やカテゴリ特徴などの構造化データでは機能しますが、画像などの非構造化データに対しては機能しません。詳細については、モデルの特徴のスキューまたはドリフトのモニタリングをご覧ください。

スキュー検出とドリフト検出を使用する

できる限りスキュー検出を使用します。これは、本番環境データがトレーニング データから逸脱していることを知ることは、モデルが本番環境で想定どおりに機能しないことを示す強力な指標であるためです。スキュー検出の場合は、モデルのトレーニングに使用したトレーニング データへのポインタを指定して、モデル モニタリング ジョブを設定します。

トレーニング データへのアクセス権がない場合は、ドリフト検出を有効にして、時間の経過とともに入力が変化したときに通知されるようにします。

ドリフト検出を使用して、本番環境データが時間の経過とともに逸脱しているかどうかをモニタリングします。ドリフト検出の場合は、モニタリングする特徴と対応するしきい値を有効にして、アラートをトリガーします。

アラートのしきい値を微調整する

アラートに使用するしきい値を調整して、データにスキューやドリフトが発生したときに把握できるようにします。アラートのしきい値は、ユースケース、ユーザーの専門知識、初期モデル モニタリング指標によって決まります。モニタリングを使用してダッシュボードを作成する方法や、指標に基づいてアラートを構成する方法については、Cloud Monitoring の指標をご覧ください。

特徴アトリビューションを使用してデータドリフトやスキューを検出する

Vertex Explainable AI の特徴アトリビューションを使用して、モデル性能の低下の早期インジケーターとしてデータのドリフトまたはスキューを検出できます。たとえば、トレーニング データとテストデータで予測を行うためにモデルが最初に 5 つの特徴を利用していたものの、本番環境に移行する際にまったく別の特徴を利用するようになった場合、モデル性能の低下を検出するために特徴アトリビューションが役立ちます。

これは特に、従来のスキュー法とドリフト法では比較するのが難しいエンベディングや時系列などの複雑な特徴タイプに有効です。Vertex Explainable AI を使用すると、特徴アトリビューションによって、モデルのパフォーマンスが低下しているかどうかを把握できます。

BigQuery を使用してモデルのモニタリングをサポートする

BigQuery ML モデル モニタリングは、ML モデルのパフォーマンスの経時的な追跡と評価に役立つツールと機能のセットです。モデルのモニタリングは、実際のアプリケーションでモデルの精度と信頼性を維持するために不可欠です。次の問題をモニタリングすることをおすすめします。

  • データスキュー: この問題は、トレーニング データとサービング データで特徴値の分布が異なる場合に発生します。モデルのトレーニング中に保存されるトレーニング統計により、元のデータがなくてもスキュー検出が可能になります。
  • データドリフト: 実際のデータは時間の経過とともに変化することがよくあります。モデル モニタリングは、モデルに本番環境で提供される入力データ(サービング データ)と、トレーニングに使用されたデータ(トレーニング データ)の差異が大きくなり始めたタイミングを特定するのに役立ちます。このドリフトにより、パフォーマンスが低下する可能性があります。
  • 高度なデータスキューまたはデータドリフト: スキューまたはドリフトの詳細な統計情報を必要とする場合は、高度なデータスキューまたはデータドリフトのモニタリングを行います。

次のステップ