Google Cloud で機械学習モデルを使うときの方針
はじめに
こんにちは、クラウドエース株式会社の技術本部に所属している池上有希乃です。
Google Cloud では様々な機械学習プロダクトが利用可能ですが、選択肢が多いので「どういった方針で、どのプロダクトを利用すればいいか」と迷ってしまうときがあります。そこで、この記事では Google Cloud で機械学習モデルを使う際のガイドをしていこうと思います。
Google Cloud の機械学習オプション選定のフローチャート
機械学習モデルの選定のフローチャートといえば scikit-learn の "Choosing the right estimator" が有名です。このフローチャートはよく出来ていますが、Google Cloud では LLM などの生成 AI に対応していたり、解決したい問題さえわかっていればモデルの選定をせずにモデルを構築することの出来る AutoML というプロダクトがあったりしてさらに選択肢が多いので、この記事では Google Cloud に特化したフローチャートを示します。
フローチャートは、訓練データを用いない (学習済みモデルを使って推論結果だけを得たい) 場合と、訓練データを用いる (カスタマイズしたモデルを使いたい) 場合の 2 種類を示します。
それぞれの機械学習オプションでできることは、Google Cloud の機械学習オプション の項に記しています。
訓練データを用いない場合のフローチャート
まず最初に、訓練データを用いない場合について検討するのが定石です。事前学習済みモデルで問題が解決するのであれば、それに越したことはありません。まずはこちらから検討していきましょう。
このチャートでは、事前構築済み API と BigQuery ML、Model Garden、そして Vertex AI Studio で問題解決ができるかを焦点にしています。
訓練データを用いる場合のフローチャート
上記のフローチャートの選択肢で問題解決出来ない場合には、訓練データを用いるケースについて検討します。
このチャートでは、Vertex AI Studio と Model Garden, AutoML, BigQuery ML, そしてカスタム トレーニングで問題解決が出来るかを焦点にしています。
Google Cloud の機械学習オプション
上記のフローチャートを使うには、事前構築済み API や BigQuery ML などではどういうことが出来るのかを知っている必要があります。そこで、このセクションでは各機械学習オプションについてざっと説明します。
事前構築済み API
事前構築済み API は、 Google Cloud があらかじめ構築した機械学習モデルを利用して予測するものです。こちらは大きく分けて自然言語処理系と画像処理系の 2 つに分類することが出来ます。
自然言語処理系
- Cloud Natural Language
- Cloud Translation
- 機械翻訳
- 100以上の言語ペアをサポートする 事前トレーニング済みカスタムモデルと、翻訳に特化したLLMによる適応型翻訳が利用可能です。
-
言語の検出
- テキスト文字列がどの言語であるか識別 (e.g., 「こんにちは」なら日本語、「Hello」なら英語と識別) します。
- 機械翻訳
-
Cloud Speech-to-Text (音声認識)
- 音声データをテキストとして文字起こしします。
-
Cloud Text-to-Speech (音声合成)
- テキストまたは音声合成マークアップ言語 (SSML; Speech Synthesis Markup Language) による入力データを人間の自然な音声に変換します。
画像処理系
- Cloud Vision API
-
光学式文字認識 (OCR)
- 画像や PDF, TIFF といった非構造データからテキストを抽出します。
-
クロップヒント検出
- 画像の重要な領域を検出して、画像の重要な部分の切り抜きを行う際のヒントを得ることが出来ます。
-
顔検出
- 画像に含まれる複数の人物の顔を検出し、さらに感情や "wearing headwear" (帽子をかぶっている) など、関連する属性についても識別します。
-
画像プロパティの検出
- ドミナント カラーなど、画像の一般的特性を検出します。
-
ラベル検出
- 画像内のエンティティについての情報を、幅広いカテゴリにわたって検出、抽出します。
-
ランドマーク検出
- よく知られている自然のランドマークや人工建造物を画像から検出します。
-
ロゴ検出
- よく知られている商品のロゴを画像から検出します。
-
オブジェクト検出
- 画像内のオブジェクトを検出するものですが、ラベル検出と違って画像内で目立っているオブジェクトとそれほど目立たないオブジェクトの両方が識別されます。また、オブジェクトが含まれている領域の境界ボックス (boundary box) の情報も付与されます。
-
セーフサーチ検出
- アダルトコンテンツや暴力的コンテンツなど、画像に含まれる不適切なコンテンツを検出します。
-
ウェブ検出
- 画像に対するウェブ参照 (エンティティ名、完全一致画像 URL、部分一致 URL、画像が一致するページの情報、類似の画像 URL、最良の推測ラベル) を検出します。 一言で表現すれば、Google 画像検索を API として呼び出せるようなイメージです。
-
光学式文字認識 (OCR)
Model Garden
Model Garden は、様々な機械学習モデルを簡単に利用できるサービスです。まるで庭の中にさまざまな種類の植物があるように、Model Garden では、画像認識、自然言語処理、音声認識など多岐にわたる機械学習モデルがあり、それらを探索・選択・利用することができます。LLM などの生成モデルも利用可能です。Google 製以外のモデルも利用可能なため、様々なモデル活用を Google Cloud だけで完結したいケースにおすすめです。
利用できるモデルがたくさんあるので、ここでは代表的なモデルに絞って紹介します。
- 基盤モデル
- 特定のタスクに合わせてさらにチューニングまたはカスタマイズできる事前トレーニング済みマルチタスク モデルです。Google 製 (Gemini, Gemma)、Meta 製 (Llama)、Anthropic 製 (Claude)、Mistral AI 製 (Mistral, Mixtral)、Stability.ai 製 (Stable Diffusion)、その他 Hugging Face で提供されているオープンモデルなどがあります。生成モデルが多い印象です。
- ファインチューニング可能なモデル
- カスタム ノートブックまたはパイプラインでさらにファインチューニングできるモデルです。こちらも、Google 製 (Gemini, Gemma)、Meta 製 (Llama)、Mistral AI 製 (Mistral, Mixtral)、Stability.ai 製 (Stable Diffusion)、その他オープンモデルなどが利用可能です。こちらは、分類モデルや物体検出モデルなど、基盤モデルよりも目的に特化しているモデルが多い印象です。
- タスク特有のモデル
- こちらは、名前のとおり上記のファインチューニング可能なモデルよりもさらにタスクに特化したモデルが多い印象です。たとえば、動画から人物や車両を検出するモデルや、動画内の人物の顔や体にぼかしを入れるモデルなど具体的なタスクに特化したモデルです。
AutoML
AutoML は、機械学習の専門知識がなくても、高品質な機械学習モデルを簡単に構築することができます。学習用データの傾向から自動的に最適なモデルを選択し、トレーニングします。
- テキストデータ
- 単一ラベル分類
- ドキュメントのカテゴリ分類などに向いています。各データにつきラベルが 1 つしか付かないことを前提としています。
- マルチラベル分類
- ドキュメントのカテゴリ分類などに向いています。各データにラベルが複数付く可能性を考慮します。
- エンティティの抽出
- 固有表現 (固有名詞など) を抽出するタスクに向いています。レビューコメントから商品名を抽出するといったユースケースが考えられます。
- 感情分析
- テキストの内容がポジティブかネガティブかを数値化するタスクに向いています。
- 単一ラベル分類
- 画像データ
- 単一ラベル分類
- 各画像のシングルラベルを予測します。
- マルチラベル分類
- 各画像に対応する 1 つ以上のラベルを予測します。各画像にラベルが複数付く可能性を考慮します。
- オブジェクト検出
- 画像内のオブジェクトのラベルと境界ボックスを予測します。
- セグメンテーション
- 画像内の各ピクセルのラベルを予測します。境界ボックスよりも細かい粒度の情報が必要となる場合は、こちらが向いています。
- 単一ラベル分類
- 動画データ
- 動作認識
- 動画セグメントでの操作を特定、トラック、ラベル付けします。
- 分類
- 動画セグメントのラベルを予測します。シングルラベル分類とマルチラベル分類に対応しています。
- オブジェクト トラッキング
- 動画セグメントのオブジェクトを特定、追跡 (トラック)、ラベル付けします。
- 動作認識
- 表形式データ (テーブルデータ)
- 分類モデル
- 各レコードのラベルを予測します。
- 回帰モデル
- 各レコードの数値を予測します。
- 予測モデル (時系列モデル)
- 時系列データから各レコードの将来の値を予測します。
- 分類モデル
表形式データについては、過去記事の「サービス終了する AutoML Tables の代わりに Vertex AI を使う」で、詳しく説明しています。
BigQuery ML
BigQuery ML は、様々な ML モデルと、各モデルの ML フロー全体 (特徴量の前処理、モデルの作成、ハイパーパラメータの調整、推論、評価、モデルのエクスポート、どの特徴量が推論結果に影響を与えているかの説明 (XAI) など) をサポートしています。BigQuery ML で直接作成できないモデルも、リモートモデルとして呼び出すことで BigQuery 内のデータに対して推論することが可能です。
画像や音声、PDF などのファイルは、オブジェクト テーブルを作成して読み込ませることで BigQuery ML による推論が可能となります (オブジェクト テーブルの作成方法)。
学習可能なモデル
行列分解以外は、ML.DETECT_ANOMALIES
関数による異常データの検出にも対応しています。
- 教師あり学習 (分類・回帰)
- ロジスティック回帰と線形回帰
- BigQuery ML の教師あり学習の中で最も高速に処理できます。シンプルなモデルで事足りる場合は、こちらが適しています。
- ディープ ニューラル ネットワーク (DNN)
- 多層構造のモデルなので、非線形な関係などのデータの複雑なパターンを捉えることができます。一方で、大量の学習データがないと性能を発揮しにくい点と、学習に時間がかかる点に注意する必要があります。
- ワイド&ディープ ネットワーク
- 線形モデル (ワイド) とニューラル ネットワーク (ディープ) を組み合わせることでそれぞれの弱点を補ったモデルです。スパースなデータに適しています。詳しく知りたい方は論文をご覧ください。
- ランダム フォレスト
- 複数の決定木を組み合わせることで非線形な特徴を捉えることができます。BigQuery ML の非線形モデルの中では最も高速です。
- 勾配ブースティング ツリー (XGBoost)
- 一般的にランダム フォレストよりも高い性能を発揮します。その一方で、過学習のリスクも高まるためハイパーパラメータの調整が重要となってきます。
- AutoML
- どのモデルを選べばいいかわからないときに適した選択肢です。上述の AutoML のテクノロジーで BigQuery ML 用のモデルを構築します。
- ロジスティック回帰と線形回帰
- 教師なし学習
- K 平均法 (k-means)
- データを k 種類のクラスターに自動分類するクラスタリング アルゴリズムです。
- 行列分解
- レコメンデーションの用途に適しています。
- 主成分分析 (PCA)
- 特徴量の次元削減に使えます。シンプルなアルゴリズムなので、高速にデータを処理することができます。教師あり学習の前段に使うことで、教師あり学習の処理速度が向上することがあります。
- オートエンコーダ
- 特徴量の次元削減に使えます。非線形な関係を捉えることができるため、一般的に PCA より性能が高いですが、PCA よりも処理時間がかかります。こちらも教師あり学習の前段に使うことができます。
- K 平均法 (k-means)
- 時系列モデル
- ARIMA (ARIMA_PLUS、ARIMA_PLUS_XREG)
- ARIMA モデルは統計モデルなので、時系列データに対してニューラル ネットワークよりも高速にトレーニングできます。
- ARIMA_PLUS は、過去のデータの自己相関に基づいて、一つの時系列データの未来値を予測するシンプルな単変量時系列予測モデルです。
- ARIMA_PLUS_XREG は、過去のデータの自己相関に加えて、外部変数 (説明変数; 特徴量) の影響も考慮する多変量時系列予測モデルです。
- モデル名に "PLUS" とついているのは、ハイパーパラメータ (
p, d, q
) の自動最適化、トレンドや季節変動の自動検出、休日の影響の検出・調整、欠損値の補完、外れ値対策などの様々な便利な仕組みが追加されているためです。
- ARIMA (ARIMA_PLUS、ARIMA_PLUS_XREG)
リモートモデル
-
LLM
- テキスト生成、分類、要約、質問応答などの自然言語生成タスクを実行できます。
- 事前構築済み API
- Cloud Natural Language API
- Cloud Translation API
- Cloud Vision API
-
Document AI API
- Document AI のモデルを利用して、PDF などのドキュメントからレイアウト (ドキュメントの構造) を認識し、分類・分割・エンティティ抽出が可能です。
- Speech-to-Text API
- Vertex AI でホストされているモデル
- Model Garden などで Vertex AI にデプロイされたモデルもリモートモデルとして利用可能です (チュートリアル)。
インポートされたモデル
TensorFlow (チュートリアル) や TensorFlow Lite, Open Neural Network Exchange (以降は ONNX と表記), XGBoost のモデルをインポートすることで、BigQuery ML にてそのモデルでの予測が可能となります。中でも ONNX 形式のインポートは、ONNX 形式でさえあれば scikit-learn (チュートリアル) や、PyTorch (チュートリアル) のモデルを使うことも可能です。
Vertex AI Studio
Vertex AI Studio は、生成 AI モデルをプロトタイピング、カスタマイズ (ファインチューニング、人間からのフィードバックを用いた強化学習 (RLHF))、テスト、デプロイするための Google Cloud コンソール ツールです。Vertex AI のエコシステム上でプロトタイピングからデプロイまで出来る点がメリットです。
- Gemini
- Google のマルチモーダル モデルです。マルチモーダル モデルとは、インプットにテキストだけでなく画像、動画、音声といったデータを与えることが可能なモデルのことです。
- Gemma
- Gemma は、Gemini と同じ研究・テクノロジーに基づいて構築された軽量なオープンモデルです。こちらはモデルをローカルにダウンロードして利用することも可能です。
- Imagen
- テキストから画像生成、テキストによる画像の編集、画像のアップスケール (解像度を上げる)、画像の説明テキスト生成、画像に関する質問応答などのタスクに対応したモデルです。
- Codey
- プログラムのコード生成、コード補完、コードの質問応答が可能な生成モデルです。
- Chirp
- 多言語に対応した音声認識 (Speech-to-Text) モデルです。
カスタムトレーニング
Vertex AI カスタムトレーニングは、機械学習の専門知識を持つユーザーが、高度なカスタマイズ性と柔軟性を求める場合に最適な選択肢です。最新の研究に基づいたモデルを構築したい、特定のタスクに特化したモデルを構築したい、といったケースに有効です。たとえば、Vertex AI のエコシステム上で LightGBM などを使ってモデル構築や運用をしたい、という場合はこちらがよいでしょう。
Vertex AI カスタムトレーニングは、Docker コンテナ イメージ内で実行します。Docker コンテナ イメージには、ビルド済みコンテナ イメージとカスタム コンテナ イメージが利用可能です。TensorFlow, PyTorch, scikit-learn, XGBoost を使う場合はビルド済みコンテナ イメージ、それ以外はカスタム コンテナ イメージを利用するというような使い分けを推奨します。
その他
この項目では、フローチャートに入れなかった機械学習オプションについて紹介します。
-
Dialogflow
- 高機能なチャットボットやボイスボットなどの対話システムをローコードで実現したいときはこちら。
- Vertex AI Timeseries Insights API
- Timeseries Insights API (Timeseries 分析情報 API) では、時系列データの異常検出ができます。Google Cloud サービスと統合されているフルマネージドのソリューションです。
- BigQuery DataFrames と Vertex AI Pipelines の組み合わせ (紹介記事)
- BigQuery ML を pandas ライク、scikit-learn ライクなコードで実行したいときはこちら。
- AlloyDB AI (紹介記事)
- PostgreSQL 互換 DB である AlloyDB に格納されたデータを Vertex AI でホストした機械学習モデルで推論したいときはこちら。Model Garden のモデルも使えます。ちなみに AlloyDB は、トランザクションと分析の両方を得意とするアーキテクチャとなっているため、それぞれに特化したDBを用意せずに 1 つの DB にまとめることができます。
まとめ
この記事では、Google Cloud で機械学習モデルを使う際の方針について記しました。読者の皆様が抱えている問題の解決に Google Cloud の利用が適しているかの判断材料になれば幸いです。
私感になりますが、この記事を執筆する際に調査していく中で、BigQuery ML でできることの多さに驚きました。特に、データ分析からモデルの構築・利用までの一連の流れを BigQuery 上でシームレスに行える点は、データサイエンティストにとって大きなメリットと言えるでしょう。
Discussion