G-gen の佐々木です。当記事では Google Cloud (旧称 GCP) の統合された機械学習プラットフォームである Vertex AI を解説します。
- Vertex AI とは
- AutoMLとは
- Vertex AI における AutoML
- カスタムトレーニング
- トレーニング方法の選択
- モデル作成、予測に使用するツール
- Vertex AI に統合されたその他のツール
- 生成 AI 関連機能
Vertex AI とは
Vertex AI は、Google Cloud で機械学習ワークロードを構築するためのツールを統合したプロダクトです。
Vertex AI では、トレーニング用データの管理から機械学習モデルのトレーニング、作成したモデルのデプロイまでを一気通貫で行うことができるほか、機械学習の開発、運用に役立つ様々なツールが提供されます。
モデル作成には AutoML の仕組みを利用することもでき、トレーニングデータをアップロードするだけでモデルの作成を行うことも可能です。
AutoMLとは
AutoML (Automated Machine Learning) は Google Cloud に特有の用語ではなく、機械学習モデルの反復的な学習を自動化する仕組みを指します。
機械学習では、コンピュータの処理能力を活かして大量のデータを解析し、その規則性や関連性を自動で発見、学習させることで、未知のデータに対して高い精度で予測を行うことができる モデル を作成します。
しかし、モデル作成時の以下のような作業については、予測精度に大きな影響を及ぼすにもかかわらず自動化することが難しく、基本的にはモデル開発者の手に委ねられることになります。
- 学習アルゴリズムの選択(ex. ランダムフォレスト、ロジスティック回帰、サポートベクターマシン ...)
- ハイパーパラメータのチューニング(ex. ペナルティ、コストパラメータ ...)
- 学習データの前処理
これらは開発者個人の知識と経験に大きく左右される、機械学習の導入における高いハードルとなります。このような人力で行う必要があるタスクについては、主に以下のような課題があります。
- ハイパーパラメータのチューニングやデータ前処理には試行錯誤が必要であり、非常に時間がかかる。
- モデルの作成が終わったあとも、予測精度を保つために一定期間で再学習を行う必要がある(再度、試行錯誤しなければならない)。
- そもそも機械学習を扱えるエンジニアがいない。
また、「時間をかけてモデルを開発したが、期待していたよりも予測精度が低く、そもそも機械学習に向いている課題ではないことがわかった。」といったことも起こり得るでしょう。
AutoML では、上記の人力によるタスクも含めたモデルの作成工程がすべて自動化され、トレーニング用のデータを用意するだけで、一定程度に高精度なモデルを作成することができます。
これにより、機械学習を扱えるエンジニアがいなくても簡単にモデルを作成することができるほか、目の前の課題に対して機械学習を用いた PoC を気軽に行うことができるようになります。
Vertex AI における AutoML
AutoML を使用したモデル作成
Vertex AI における AutoML (以降、当記事内の「 AutoML 」は Vertex AI における AutoML を指します) では、トレーニング用のデータを Google Cloud にアップロードするだけで、モデルを作成することができます。
AutoML におけるモデル作成の工程は以下の通りです(参考)。
工程 | 説明 |
---|---|
①マネージドデータセットの作成 | トレーニングデータのソースを指定し、マネージドデータセットとして定義します。 |
②モデルのトレーニング | トレーニングデータとして使用するマネージドデータセットを選択すると、AutoML がモデルを作成します。 |
③モデルのデプロイ(任意) | モデルをデプロイし、オンライン予測のためのエンドポイントを作成します。 |
また、AutoML で作成することができるモデルのタイプは以下の通りです(参考)。
データの種類 | モデルのタイプ |
---|---|
画像 | 分類 / オブジェクト検出 |
表形式 | 回帰 / 分類 / 予測 |
テキスト | 分類 / エンティティ抽出 / 感情分析 |
動画 | 分類 / オブジェクトトラッキング / 動作認識 |
AutoML によるトレーニングの料金
AutoML を使用したモデルのトレーニングでは、トレーニングの際に Google Cloud 上で実行される、コンピューティングノードの使用時間に応じて課金されます。
データの種類ごとのトレーニング料金は以下の通りです(参考)。
データの種類 | 料金 |
---|---|
画像 | $ 3.465 / 時間 |
表形式 | $ 21.252 / 時間 |
テキスト | $ 3.30 / 時間 |
動画 | $ 3.234 / 時間(分類 / オブジェクトトラッキング) $ 3.300 / 時間(動作認識) |
カスタムトレーニング
カスタムトレーニングを使用したモデル作成
AutoML によって目的のモデルが作成できない場合、もしくはモデルの開発環境や工程を細かく制御したい場合、カスタムトレーニングによってモデルを作成することになります。
カスタムトレーニングではモデルのトレーニングを実行するコード(トレーニングコード)をユーザー側で用意し、以下のリソースを作成して、Google Cloud のインフラストラクチャ上でモデルのトレーニングを行います。
リソース名 | 説明 |
---|---|
カスタムジョブ | トレーニングコードを実行するジョブ。 |
ハイパーパラメータ調整ジョブ | 様々なハイパーパラメータのセットを使用してトレーニングコードのトライアルを実行し、最適なハイパーパラメータの組み合わせを検出するジョブ。 |
トレーニングパイプライン | カスタムジョブまたはハイパーパラメータ調整ジョブを実行し、作成されたモデルを出力するパイプライン。 |
カスタムトレーニングの料金
カスタムトレーニングの実行には、Google Cloud のプロジェクトで起動される Compute Engine VM が使用されます。
カスタムトレーニングでは、Compute Engine のマシンタイプごとに設定されたコンピューティングリソースの料金、アクセラレータやディスクの使用に応じた料金が発生します(参考)。
トレーニング方法の選択
AutoML とカスタムトレーニングを比較する場合、モデル作成の手軽さと自由度の高さがトレードオフとなります(参考)。
まずは AutoML の使用を検討し、AutoML でモデルの精度が上がらなかったり、AutoML を使用できない要件があったりする場合にカスタムトレーニングを使用するとよいでしょう。
AutoML | カスタムトレーニング | |
---|---|---|
データサイエンスの専門知識 | 不要。 | 必要。 トレーニングコードの開発や、特徴量エンジニアリングなどのデータ準備を行う必要がある。 |
プログラミングスキル | 不要。 | 必要。 トレーニングコードを開発する必要がある。 |
モデルのトレーニングに要する時間 | 開発やデータ準備の必要がないため、短め。 | トレーニングコードの開発やデータ準備を行う必要があるため、AutoML と比べると長め。 |
機械学習の目標に関する制限 | AutoML で定義されている目標 のいずれかをターゲットにする必要がある。 | なし。 |
パフォーマンス最適化のためのハイパーパラメータ調整 | できない。 自動でハイパーパラメータ調整が行われる。 |
できる。 |
トレーニング環境の制御 | 制御できる要素が少ない。 トレーニングに使用するノード時間と早期停止 ( Early stopping ) の指定のみ可能。 |
制御できる要素が多い。 開発環境として使用する Compute Engine VM のマシンタイプ、ディスクサイズ、機械学習フレームワーク、ノード数などの要素を指定できる。 |
データサイズの制限 | 制限あり。 Vertex AI で管理される マネージドデータセット を使用する必要があるが、データの種類によってサイズの制限がある(参考)。 (例)表形式データの CSV ファイルの場合:最大 100 GB |
制限なし。 マネージドデータセットを使用する場合のみ AutoMLと同様の制限あり。 |
モデル作成、予測に使用するツール
Vertex AI を用いてモデルを作成する際に使用するツールと、作成したモデルを用いて予測を行う際に使用するツールを解説します。
Datasets
Datasets では、機械学習モデルのために収集したデータを マネージドデータセット として追加し、一元的に管理することが可能です。
データセットのソースとしては、たとえば表形式データであれば、ローカル PC もしくは Cloud Storage にある CSV ファイル、BigQuery のテーブル、ビューから選択することができます。
データセットはデータソースの URI を持ち、トレーニングの際にデータソースからデータがインポートされます。ローカル PC からデータをインポートした場合は、データは Cloud Storage に格納され、データセットにはその URI の情報が渡されます。
AutoML を使用する場合、まずマネージドデータセットを作成し、それをトレーニング時に読み込む必要があります。
Training
Training では、AutoML によるトレーニング、もしくはカスタムトレーニングを実行し、機械学習モデルを作成することができます。
作成したモデルは Vertex AI Model Registry で一元管理されます。
Vertex Explainable AI を使用することで、トレーニングで作成したモデルの 特徴アトリビューション の情報を得ることができます。
特徴アトリビューションは、各特徴(表形式データの場合はそれぞれの列)が予測にどの程度影響を及ぼしたかを可視化することができます。現在は表形式データ、画像データのモデルにおいてのみ使用することが可能となっています。
Vertex AI Model Registry
Vertex AI Model Registry では、作成した機械学習モデルを一元管理できるビューが提供されます。
ここでは Vertex AI で作成したモデルのほか、BigQuery ML や Google Cloud 以外でトレーニングしたモデルをインポートし、バージョニング等の管理をすることができます。
Vertex AI Model Registry で管理しているモデルは、TensorFlow のパッケージとしてエクスポートすることができ、Google Cloud 以外の場所にもデプロイすることが可能です。
Endpoints
Endpoints では、作成したモデルをデプロイし、オンライン予測のリクエストを処理するエンドポイントを生成することができます。
1つのエンドポイントに対して複数のモデルをデプロイすることもでき、モデルごとにトラフィック転送の割合を指定できます。
これを利用することで、モデルの新しいバージョンをデプロイする際、同じエンドポイントにデプロイしてトラフィックの一部を割り当てることで、エンドポイントを新たに生成することなく、モデルをカナリアリリースすることも可能となります。
また、デプロイしたモデルに Vertex AI Model Monitoring を使用することで、オンライン予測の入力データから トレーニング / サービング スキュー や 予測ドリフト をモニタリングすることができます。
モニタリング対象 | 説明 |
---|---|
トレーニング / サービング スキュー | 本番環境での特徴データの分布が、モデルのトレーニングに使用された特徴データの分布と異なることで、モデルの予測パフォーマンスが低下する現象。 |
予測ドリフト | 本番環境において、特徴データの分布が時間の経過とともに大きく変化してしまい、モデルの予測パフォーマンスが低下する現象。 |
Batch predictions
Batch predictions では、モデルをデプロイすることなく、非同期リクエストによるバッチ予測を行うことができます。
エンドポイントを使用したオンライン予測とは異なり、1 回のリクエストで複数の予測用データを処理することができます。
バッチ予測では、モデルのタイプ(画像・動画・表形式など)に応じて、予測用データのソースと予測結果の出力先を選択します。
たとえば表形式データの予測では、データソースとしてローカルにある CSV ファイル、Cloud Storage にある CSV ファイル、BigQuery のテーブルやビューを選択でき、出力先には Cloud Storage 、BigQuery を選択できます。
Vertex AI に統合されたその他のツール
Vertex AI に統合されている、モデル作成の効率化やモデル品質の継続的な改善のためのツールを、概要レベルで解説します。
Vertex AI Workbench
Vertex AI Workbench では、機械学習モデルを作成するための Jupyter Notebook ベースの開発環境が提供されます。
開発環境は マネージドノートブック と ユーザー管理のノートブック の 2 種類から選択することができます。
いずれのタイプも JupyterLab でパッケージ化されており、TensorFlow や PyTorth などの機械学習フレームワークがプリインストールされています。
Vertex AI Workbench を利用することで、BigQuery や Cloud Storage のデータへのアクセス、BigQuery のクエリ発行、Vertex AI パイプラインの構築と実行など、モデル作成に関する様々なタスクをすべてノートブック上で行うことができます。
Vertex AI Feature Store
Vertex AI Feature Store では、機械学習に用いる特徴量を一元化して管理するためのリポジトリが提供されます。
特徴量を一元的に管理することで、組織内のモデル開発者ごとに特徴量の計算方法が異なったり、特徴量の情報が分散してしまったりすることを防ぎ、特徴量の共有・再利用を促すことができます。
また、Feature Store では特徴量の分布変化が監視され、トレーニング / サービング スキュー や 予測ドリフト の回避に役立てることができます。
Vertex AI Labeling tasks(非推奨)
※注意:現在は非推奨の機能であり、2024年7月1日以降は使用できません。
Vertex AI Labeling tasks では、トレーニングデータに対するラベル付与(大量の画像データに対して「dog」、「cat」などの正解ラベルを付与するなど)をタスク化し、Google Cloud の担当者にラベル付けを依頼することができます。
ラベル付与を Google Cloud にアウトソースすることで、ラベル付与作業を効率化し、またトレーニングデータの品質を高めることができます。
Vertex AI Pipelines
Vertex AI Pipelines では、データの前処理、データ変換、モデルのトレーニングなどをコンポーネントとしてパイプラインを構成し、オーケストレートします。
パイプラインは Kubeflow Pipelines SDK または TensorFlow Extended を使用して構築された、コンテナベースの機械学習ワークフローです(参考)。
Vertex ML Metadata や Vertex AI Model Monitoring などと併用することで、パイプラインを用いたモデルの迅速かつ継続的なデプロイと、モニタリングを通じたモデルの品質維持、改善による MLOps を実践することができます。
Vertex ML Metadata
Vertex ML Metadata では、機械学習ワークフローによって生成されるデータセットやモデルなどのアーティファクト、実行、イベント、コンテキストなどの Metadata リソース に対して付与されるメタデータを、メタデータストア によって管理します。
各 Metadata リソースには ID や リージョンのほか、作成日、更新日、保存場所、リソースの作成に使用された要素 などの Key-Value 形式のメタデータが付与され、モデルの リネージ の分析や、実行されたパイプラインの追跡を行うことができます(参考)。
Vertex AI Experiments
Vertex AI Experiments では、モデルのトレーニングにおける入力(各種パラメータ)や出力(モデル精度の指標)、使用されたデータセットなどの組み合わせを 「実行」 という 1 つの単位として、複数の 実行 を 1 つの 「テスト」 としてまとめて追跡し、それぞれの 実行 を比較することで、最適なモデルの選択に役立てることができます。
また、Vertex AI Pipelines との統合により、複数のパイプラインの 実行 を比較することも可能です。
テストの追跡、可視化には Vertex ML Metadata と、マネージドな TensorBoard のインスタンスである Vertex AI TensorBoard が使用されます。
Vertex AI Vizier
Vertex AI Vizier では、複雑な機械学習モデルのトレーニングにおいて、既知の目的関数(モデル予測で最大化 / 最小化したい関数。予測と正解のズレを表す 評価関数 など)がない場合や、目的関数を使用したモデルの評価が困難な場合に、ハイパーパラメータを自動で最適化する ブラックボックス最適化 が提供されます。
Vertex AI Matching Engine
Vertex AI Matching Engine は、YouTube や Google 画像検索、Google Play などのサービスでレコメンデーションや情報検索を提供している 類似ベクトル検索機能 を、自前で開発することなくシステムに組み込むことができるサービスです(参考)。
Vertex AI Model Garden
Vertex AI Model Garden は様々な事前構築済み機械学習モデルのカタログで、様々なタスク、データセットに対応した 100 以上のモデルが Google や Google パートナーによって提供されています。
Model Garden で利用可能なモデルは以下の 3 カテゴリに分類されます。
これらのモデルは、タスクに合わせてカスタマイズできるものや、特定のタスクであればそのまま使用できるものがあります。
カテゴリ | 説明 |
---|---|
Foundation models(基本モデル) | 事前トレーニングされた大規模モデルで、Generative AI Studio、Vertex AI API、Vertex AI SDK for Python を使用することで、特定のタスクに合わせてカスタマイズできる。 |
Fine-tunable models(ファインチューニング可能なモデル) | カスタムノートブックやパイプラインを使用してファインチューニングができるモデル。 |
Task-specific solutions(タスク固有のソリューション) | すぐに使用することができる事前構築済みモデル。独自のデータを使用してカスタマイズできるものを含む。 |
Colab Enterprise
Colab Enterprise は、Vertex AI に統合されたマネージドな Google Colaboratory 環境で、インフラストラクチャの管理をせずにノートブックで作業することができます。
ランタイム という単位でノートブック内のコードを実行する仮想環境(VM)を作成し、マシンタイプに応じた時間料金が発生します。ランタイムは使用していないときに自動でシャットダウンし、コストを節約することができます。
また、ノートブックで Duet AI によるコード補完を利用することができます。
生成 AI 関連機能
Google Cloud は Generative AI (生成 AI) に関するプロダクトを Vertex AI ブランドに統合しました。これらのプロダクトを利用することで、機械学習に関する専門知識がなくても、生成 AI を組み込んだアプリケーションを容易に構築することができます。
Vertex AI Generative AI Studio
Vertex AI Generative AI Studio は、Google が提供する生成 AI モデルをコンソール上でプロトタイピング、テストすることができるツールです。
言語・音声・画像の 3 種類のモデルを使用することができ、言語モデルにおいてはユーザー固有のタスクに合わせた独自のプロンプトを設計し、ユースケースにモデルを適応させることができます。
モデルの種類 | 説明 |
---|---|
言語モデル | 大規模言語モデル(LLM)を使用して、入力に応じたテキスト応答を出力できる。応答の形式や質はプロンプト設計やパラメータの調整によって変更できる。 |
音声モデル | アップロードした音声ファイルのテキスト変換や、テキストの音声ファイル変換(読み上げ)ができる。 |
画像モデル | アップロードした画像からの説明の取得や、プロンプトからの画像生成ができる。 |
Generative AI Studio で利用できる言語モデルの詳細、プロンプト設計の例などは以下の記事で解説しています。
また言語モデルでは、ストリーム応答を使用することで、コンソール上だけではなく REST API やクライアントライブラリからプロンプトを送信し、大規模言語モデルからの応答を取得することができます。
Vertex AI Search and Conversation
Vertex AI Search and Conversation(旧称:Generative AI App Builder)では、機械学習の専門知識を持っていない開発者ても、生成 AI による検索やチャットアプリケーションを構築することができます。
Vertex AI Search と Vertex AI Conversation の 2 種類のツールがあります。
Vertex AI Search
Vertex AI Search(旧称:Enterprise Search)では、Vertex AI に備わっている検索エンジンをもとに、生成 AI を搭載した検索エンジンを迅速に構築することができます。
検索対象とするデータとして、Web ページ、構造化データ(JSON レコード)、非構造化データ(HTML、テキストが埋め込まれた PDF、TXT 形式のファイル)から選択することができます。たとえば、自社のウェブサイトや、Cloud Storage に格納したテキストファイルや PDF ファイルを対象とする検索を行い、その結果を要約しつつ出典を示すようなアプリケーションを簡単に構築することができます。
Vertex AI Conversation
Vertex AI Conversation は、音声とテキストの両方をサポートするマルチモーダルなモデルをベースとした chatbot や voicebot の構築を支援するツールです。Vertex AI Search 同様、自社のウェブサイトや Cloud Storage に格納したデータを使用して、ユースケースに適応させた chatbot を簡単に構築することができます。
佐々木 駿太 (記事一覧)
G-gen最北端、北海道在住のクラウドソリューション部エンジニア
2022年6月にG-genにジョイン。Google Cloud Partner Top Engineer 2024に選出。好きなGoogle CloudプロダクトはCloud Run。
趣味はコーヒー、小説(SF、ミステリ)、カラオケなど。
Follow @sasashun0805