Google Cloud で機械学習を実装するためのベスト プラクティス

Last reviewed 2022-12-15 UTC

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

次の図は、このドキュメントで扱う ML ワークフローの段階の概要を示しています。これには、次のものが含まれます。

  1. ML の開発
  2. データ処理
  3. 運用化されたトレーニング
  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 ワークフローのオーケストレーション
アーティファクトの整理
モデルのモニタリング

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

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

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 インスタンスの概要をご覧ください。

チームメンバーごとに 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 トレーニング用に最適化された形式とストレージ(稼働中のソースとは別)に変換します。Vertex AI で使用するトレーニング データの準備の詳細については、Vertex AI で使用するトレーニング データを準備するをご覧ください。

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

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

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

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

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

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

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

データ管理を有効にするには、Cloud Storage バケットとディレクトリを使用してシャードをグループ化します。詳細については、Cloud Storage とはをご覧ください。

非構造化データに Vertex AI Data Labeling を使用する

特に非構造化データに関しては、人力でデータにラベルを付けることが必要になる場合があります。この作業には Vertex AI Data Labeling を使用します。独自のラベラーを採用し、Google Cloud のソフトウェアを使用してこのラベラーの動作を管理することも、Google の社内ラベラーをタスクに使用することもできます。詳細については、データのラベル付けのリクエストをご覧ください。

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

構造化データを使用してモデルをトレーニングする場合は、そのモデルをトレーニングする場所にかかわらず、次の手順に従います。

  1. Vertex AI Feature Store を検索して、既存の特徴が要件を満たしているかどうかを判断します。

    1. Vertex AI Feature Store を開いて、ユースケースに関連する特徴や、モデルに渡すシグナルに対応する特徴がすでに存在するかどうかを確認します。

    2. 使用したい特徴が Vertex AI Feature Store にある場合は、Vertex AI Feature Store のバッチ サービング機能を使用してトレーニング ラベル用にその特徴を取得します。

  2. 新しい特徴を作成します。Vertex AI Feature Store に必要な特徴がない場合は、データレイクのデータを使用して新しい特徴を作成します。

    1. データレイクから未加工データを取得し、必要な特徴の処理とエンジニアリングを実行するスクリプトを作成します。

    2. Vertex AI Feature Store から取得した特徴値と、データレイクから作成した新しい特徴値を結合します。これらの特徴値を結合すると、トレーニング データセットが生成されます。

    3. 新しい特徴の更新された値を計算する定期的なジョブを設定します。ある特徴が有用であると判断し、本番環境で使用する場合、必要な頻度でジョブを定期的にスケジュールして特徴の更新された値を計算し、Vertex AI Feature Store に取り込みます。新しい特徴を Vertex AI Feature Store に追加すると、(オンライン予測のユースケース用に)その特徴をオンライン サービングするためのソリューションが自動的に作成され、その特徴を組織内の他のユーザーと共有できるようになります。そうしたユーザーはその特徴を独自の ML モデルに活用できます。

詳細については、Vertex AI Feature Store をご覧ください。

ブロック ストレージにはデータを保存しない

ネットワーク ファイル システムなどのブロック ストレージや、仮想マシン(VM)のハードディスクにはデータを保存しないでください。これらのツールは Cloud Storage や BigQuery よりも管理が難しく、パフォーマンスの調整が課題になります。同様に、Cloud SQL などのデータベースからデータを直接読み込まないようにしてください。代わりに、BigQuery と Cloud Storage にデータを保存します。詳細については、Cloud Storage のドキュメントと BigQuery のデータの読み込みの概要をご覧ください。

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

モデルを開発する際に Vertex AI TensorBoard を使用して、ハイパーパラメータなどに基づいて特定のテストを見つけて比較します。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 変換を使用するのが最も費用対効果の高い方法になります。

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

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

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

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

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

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

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

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

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

運用化されたトレーニング

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

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

Vertex AI Training サービスまたは Vertex AI Pipelines でコードを実行することをおすすめします。

必要に応じて、Deep Learning Virtual Machine のコンテナ内や Compute Engine 上でコードを直接実行できます。ただし、Vertex AI のマネージド サービスの方がより費用対効果に優れた自動スケーリングとバースト機能提供するため、この方法はおすすめしません。

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

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

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

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

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

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

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 または model.pkl

  • XGBoost: model.bst

  • PyTorch: model.pth

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

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

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

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

モデルのデプロイとサービングとは、モデルを本番環境に投入することです。トレーニング ジョブの出力は Cloud Storage に保存された 1 つ以上のモデル アーティファクトです。このファイルを Vertex AI 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 ワークフロー オーケストレーション

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

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

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

各データ処理、トレーニング、評価、テスト、デプロイを手動で開始することもできますが、Vertex AI Pipelines を使用してフローをオーケストレートすることをおすすめします。

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

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

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

アーティファクトの整理

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

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

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

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

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

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

モデルのモニタリング

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

  • スキュー検出: この方法では、モデルのトレーニングと本番環境のデータの間の歪み度を確認します。

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

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

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

できる限り、スキュー検出を使用してください。本番環境データがトレーニング データから逸脱しているかどうかを知ることは、モデルが本番環境で想定どおりに機能しているかどうかを把握するのに大いに役立ちます。スキュー検出の場合は、モデルのトレーニングに使用したトレーニング データへのポインタを指定して、モデル モニタリング ジョブを設定します。

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

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

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

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

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

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

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

次のステップ