デベロッパー

ML 入門: Vertex AI のラーニングパス

※この投稿は米国時間 2021 年 7 月 27 日に、Google Cloud blog に投稿されたものの抄訳です。

今年の Google I/O において、Google Cloud は Vertex AI というエンドツーエンドの ML プラットフォームを発表しました。次の図を見るとわかるように、Vertex AI には多くのものが含まれています。

Figure 1

図 1. Vertex AI の概要

この投稿では、ML または Vertex AI をこれからご利用になる方のために、どのツールをいつ使えばよいかの理解に役立つ ML シナリオの例をいくつか紹介します。具体的には、ML API からカスタムモデル、さらにはそれらを本番環境システムに導入するための MLOps までを見ていきます。

デモのシナリオ

最近引っ越した私は、荷物を入れる箱を準備しながら、このプロセスを ML によって効率化するにはどうすればよいかを考え始めました。箱の寸法を測り、それぞれの箱に入れる物を決めて中身を仮想的に詰めるアプリケーションがあったらどうでしょうか。あるいは、画像で示された部屋のタイプを自動的に検出してデジタル目録を作成してくれるサービスはどうでしょうか。

仮に、自分が引っ越し会社のデータ サイエンティストであり、ビジネスチームから機械学習を使用して次の課題を解決できないかという相談を受けたとします。

  1. お客様の家の写真からアイテムを認識する

  2. 場所や壊れやすさなどの基準に基づいてアイテムを 2 つのカテゴリに分類する

  3. お客様の梱包時間を節約するために箱の寸法を推定する

まず、この問題にどのようにアプローチするかを決定する必要があります。それから、どのツールが適しているかを判断します。詳しい話に入る前に、この問題の解決に使用できる Google Cloud の ML ツールについて説明しましょう。

Google Cloud での機械学習

Google Cloud Platform には、ML 知識レベルの異なるユーザーがさまざまなタイプのモデルを使用して機械学習を行えるように、機械学習ワークフロー全体をサポートするツールがいくつか用意されています。この記事でこれから構築するような機械学習プロジェクトを開始する際は、事前にいくつかの要因を評価して、次の図に示すいずれかのツールを選択します。

Choosing the right tool

図 2. 適切なツールの選択 - 図

たとえば、Google には次のようなツールがあります。

  • API による画像、動画、テキスト分析のような一般的なタスク向けの機械学習モデルにアクセスするためのトレーニング済み API

  • 機械学習モデルのトレーニング、テスト、デプロイをコーディングなしで実施するための、Vertex AI の AutoML

  • ユーザーが選択したフレームワークを使用してモデルをトレーニング、テスト、最適化、デプロイするための、Vertex AI のカスタムモデル ツール

今回はこれらのツールについて説明します。そして記事の最後に、MLOps がこのプロセスにどのように適合するかを示し、モデルのデプロイに必要なすべてのサービスを統合した信頼性の高い再現性のある機械学習パイプラインを MLOps で構築するにはどうすればよいかを明らかにします。

先に進む前にもう一つ重要な点を述べておくと、どのアプローチを使用したとしても、モデルをエンドポイントにデプロイし、SDK メソッドを介してエンドユーザーに予測を提供することができます。次の図は、Vertex AI が典型的なアプリケーション開発フレームワークにどのように適合するかを示しています。

Figure 3. Vertex AI and Application
図 3. Vertex AI とアプリケーション

これで、Vertex AI を使用してビジネスチームから求められた課題の解決に取り掛かる準備は整いました。それでは始めましょう。

オブジェクト分類用のトレーニング済み API

図 1 を今回のデモのシナリオに適用すると、最初のステップは、トレーニングに使用する一般的な家庭用品の画像が手元に十分にあるかどうかを確認することです。

この例では、トレーニング データはまだないと仮定します。このような場合に役立つのが、Google Cloud Vision API です。実際、Vision API は、オブジェクト ローカライズ機能を使用して画像内の複数のオブジェクトを検出および抽出できます。また、画像内のエンティティに関する情報をカテゴリなどの幅広いグループにわたって検出し、抽出することもできます(たとえば、ソファは家具とリビングルーム アイテムの両方として分類できます)。次に、台所の食器棚に対する API の結果を示します。

Figure 4

図 4. オブジェクト分類用のトレーニング済み API

このような機能により、抽出されたラベルを使用してアイテムの仮想カタログを作成し、梱包に必要な箱を割り出すアプリケーションを構築できます。

もちろん、API は画像を対象としたものだけではありません。Google Cloud には、動画分析音声認識テキスト分析のような一般的なタスク向けのトレーニング済み機械学習モデルにアクセスできる ML API も用意されています。

一般に、トレーニング済み API は次のような場合に使用することをおすすめします。

  • 十分なデータがない。

  • 目的の予測タスクが一般的なもので、このサービスによって提供されているラベルタイプで用が足りる。

  • トレーニング済み API を AutoML(およびカスタム)モデルと組み合わせたい。

後は単に、これらの API を REST API リクエストによって独自のアプリケーションに組み込むだけです。

これで、お客様の家の写真からアイテムを認識し、それらをいくつかのカテゴリに分類できました。しかし、詳細度をさらに高めるためにさまざまな状態で収集された画像からアイテムを認識できるモデルが必要な場合や、独自のラベルを定義したい場合はどうなるでしょうか。たとえば、この例では、壊れやすさに基づいてアイテムを分類したいという要望が出る可能性があります。画像データが手元にある場合、カスタム分類がニーズに合っているかどうかを確かめることには、試してみるだけの価値があります。特に、自分でディープ ラーニング モデルをトレーニングしたことがない人は、カスタムモデルをゼロから構築するよりもコーディング不要のアプローチを使用する方を好みます。異なるツールを評価する際のもう一つの重要な要因は、時間です。簡単にするため、このシナリオでは、ビジネスチームは直ちに結果を欲しているものとします。この場合は、Vertex AI の AutoML を使用して初期モデルを構築します。

カスタムラベル画像分類モデル用の AutoML

AutoML を使用すると、コードを記述せずに、画像、動画、テキスト、表形式のデータセットに対するモデルを Vertex AI でトレーニングできます。Vertex AI は、最先端の機械学習モデルを検索して最適なモデル アーキテクチャを探します。この画像シナリオで開発者が行わなければならないのは、分類する画像のラベル付けされた例と、ML システムに予測させるラベルを提供することだけです。それだけで、モデルのトレーニングを開始できます。トレーニングが完了したら、Vertex Explainable AI によって導き出された詳細なモデル評価指標と特徴アトリビューションにアクセスできます。モデルの妥当性が認められた場合は、Vertex AI Prediction マネージド サービスを使用してモデルをデプロイできます。

次に、このシナリオの画像データセットに対するモデルの予測結果を示します。

Figure 5

図 5. AutoML による壊れやすいアイテムの分類

この結果から、AutoML を選んだことは正しい判断のように見えます。最初の例で使用したコーヒーカップの写真では、92% の確率でコーヒーカップは壊れやすいアイテムと分類されました。次に使用した動物のぬいぐるみの写真からは、疑いなしに壊れにくいアイテムと分類されました。これはまさに求めていた機能です。

Figure 6. Classifying a non-fragile item with AutoML
図 6. AutoML による壊れにくいアイテムの分類

この課題の解決に画像を使用するためには、アイテムの幾何学的特性がアイテムの壊れやすさに大きな影響を与えるといった強い仮定が必要です。その結果として、判断の難しい厄介なケースに直面します。しかし、最終的には、お客様がアプリケーションでそのようなアイテムにラベルを付けられるようにすることで、なんとか対処できます。

ここでも一般的な基準を挙げると、AutoML の使用は次のような場合に適しています。

  • 基になるモデル アーキテクチャについて特定の要件がない

  • ベースラインとして使用する初期モデル(これが最終的に本番環境モデルになる)を短時間で開発したい

残すは最後のタスクだけです。引っ越し作業に必要な箱の少なくとも 3 つの寸法(幅×奥行き×高さ)を推定するモデルを構築します(4 つ目は重量)。この課題を解決するためのアプローチはいくつか考えられます。その一つは、3D オブジェクト検出を使用して箱のおおよそのサイズを求めることです。次に、ML パイプラインを示します。

Figure 7
図 7. 3D オブジェクト検出のネットワーク アーキテクチャと後処理

Google Research の論文に基づいて、MobileNetv2 を基に構築された、エンコーダ / デコーダ アーキテクチャを含むモデルをバックボーンとするシングルステージ モデルを構築できます。これにより、マルチタスク学習アプローチを使用して、検出および回帰と連携してオブジェクトの形状を予測することが可能になります。具体的に言うと、姿勢推定アルゴリズム(EPnP)を使用してアイテムの境界ボックスの 3D 座標を得ることができます。3D 境界ボックスの座標がわかれば、オブジェクトのサイズ(と姿勢)を計算するのは簡単です。

本記事ではこのモデルについて詳しく説明しませんが(トレーニング データと、この例では動画が必要となるため)、ご想像どおり、最後には Vertex AI でカスタムモデルのトレーニングを行います。それでは次に、その方法を見ていきます。

Vertex AI でのカスタムモデルのトレーニング

一般に、Vertex AI に用意された次のような一連のカスタムモデル開発サービスを利用します。

  • Notebooks および Deep Learning VM Image とプリインストールされた JupyterLab 環境。これらは、最も一般的なディープ ラーニング フレームワークおよびライブラリと、業界最高水準のコンピューティング能力(GPU、TPU)によって支えられています。

  • Vertex Experiments と Vertex Tensorboard、Vertex TrainingVertex Vizier。これらのサービスは、モデルテストの可視化、コンテナ技術による管理されたカスタマイズ可能な方法でのモデルのトレーニング、予測精度を最大化するためのハイパーパラメータの最適化を行います。

unnamed_4
unnamed_48

図 8. Vertex Notebooks と Vertex Training の UI

すでに述べたように、モデルのトレーニングが完了したら、Vertex AI Prediction マネージド サービスを使用してモデルを本番環境にデプロイし、必要なときにオンライン サービングまたはバッチ サービング シナリオに使用できます。また、Vertex AI Edge Manager により、エッジデプロイもサポートされています。たとえば、ネットワークが限られた場所にお住まいのお客様のためにモデルをデプロイしなければならないとします。このサービスを利用すれば、リモート エッジデバイスで Kubernetes を使用して ML モデルを提供および管理できます。その結果、応答時間が短くなり、帯域幅が節約されます。もちろん、このような場合は必ず、各モデル エンドポイントを統合された UI から追跡します。そのため、A/B テストや多腕バンディットのようなモデルのメンテナンスを実施でき、最終的にバックエンド ロジックは引っ越しアプリよりも強固なものとなります。

ここまでいろいろなプロダクトが登場したので、ここでまとめておきます。これまでに、アイテムを認識するモデル、アイテムをカテゴリに分類するモデル、箱の寸法を推定するモデルが完成しました。Vertex AI エンドポイントのおかげで、これらのモデルはエンドユーザーがすぐに使用できる状態にあります。しかし、何か見落としていないでしょうか。どうもそのように感じられます。次に、その理由を説明します。

MLOps: すべてを一つにまとめて再現可能にする

これまでは、機械学習の実務担当者が Vertex AI を使用してビジネス上の課題を解決するモデルを構築およびデプロイする方法について考えてきました。しかし、チーム全体が同じプロジェクトに取り組むとしたらどうなるでしょうか。共同作業を促進しながら再現性を保証するにはどうすればよいでしょうか。また、新しいトレーニング画像が入手されるたびに手作業でトレーニングやデプロイを繰り返さなくて済むように、これらのタスクを自動化するにはどうすればよいでしょうか。

ここで MLOps の出番となります。MLOps を使用すれば、機械学習プロセスを標準化し、その信頼性を高めることができます。Vertex AI には、この生産的パラダイムを取り入れるために必要なものがすべて揃っています。実際、このプラットフォームは、Vertex Feature StoreVertex PipelinesVertex ML MetadataVertex Model Monitoring などのマネージド サービスを使用した堅牢な MLOps アーキテクチャを備えています。

MLOps with Vertex AI
図 9. Vertex AI の MLOps

難しい話は抜きにして、早速 MLOps が今回の AutoML ユースケースにどのように適合するのかを見ていきましょう。

私が特に気に入っている Vertex AI の機能拡張の一つが、新しい python SDK です。これにより、すべての Vertex AI サービスにプログラム コードからアクセスできます。つまり、機械学習プロセスの各タスクをコードで表現し、DevOps フレームワークを使用して共有可能かつ再現可能にできます。この記事の例では、データセットの作成からモデルのデプロイまでのプロセス全体をパイプラインによって自動化できます。具体的には、Vertex Pipelines によってプロセスをコンポーネントに分解します。各コンポーネントは、それぞれ固有のアーティファクトを生成し、その他の関連するメタデータ(入力および出力)を持ちます。これらの要素(アーティファクト、リネージ、実行の追跡)には Vertex コンソールから簡単にアクセスでき、Vertex Metadata サービスによってこれらすべてを分析できます。

次に、この記事の AutoML モデルに対して私が作成した Vertex Pipelines を示します。

image_pipelines

図 10. AutoML 画像モデル用の Vertex Pipelines

Vertex Pipelines で条件付きロジックを実装することもできます。たとえば、この記事の例では、新しいデータに対するモデルのパフォーマンスが低下し始めたときに担当者がトレーニング ジョブを実施し、新しい精度をチェックして、モデルを再デプロイするかどうかを決定できるように、しきい値を設定できます。その場合は、モデルのパフォーマンスが一定のしきい値を下回ったときに、データ サイエンティストまたは機械学習エンジニアにアラートが送られます。これが、Vertex AI Model Monitoring が導入された理由です。このサービスは、データドリフトやコンセプト ドリフトのようなイベントやその他のモデル パフォーマンスに関する問題が発生したときに自動的にアラートを通知します。これにより、誰がモデルのメンテナンスを担当している場合でも、速やかに行動してインシデントを評価できます。

まとめ

新しい Vertex AI プラットフォームについてご説明してきました。この記事を書き始めたとき、私の念頭にあったのは「Vertex AI プラットフォームにこれから取り組もうとしている ML の実務担当者や開発者を手助けするにはどうすればよいか」という思いでした。

この問いに答えるため、実生活で考えられる例を取り上げ、引っ越しアプリケーションでどのように ML を活用できるかを想像しました。さらに、Vertex AI で提供される ML ツールボックスの概要を簡単に紹介し、どのツールをいつ使用するかについての基準を示しました。これらの基準を次の表にまとめます。

right tool table

図 11. 適切なツールの選択 - 基準

最後に、MLOps について紹介し、機械学習プロセスを標準化して本番環境に投入するうえで Vertex AI がどのように役立つかを説明しました。MLOps の詳細や、目的のユースケースに基づくおすすめの機能について知りたい場合は、私が最近執筆に協力したこちらの記事をお読みください。

ここまでお読みいただいた方は、Vertex AI の概要と、このプラットフォームにどのようにアプローチすればよいかについて、ご理解いただけたことと思います。次は皆様の番です。再度、ブログ投稿をお届けする予定ですが、それまでの間、Vertex AI のスタートガイドチュートリアルを読み、次の一歩を踏み出してください。そして、忘れないでください...楽しむ気持ちを持ち続けることを。

この記事の執筆に際して助力をいただいた Sara Robinson 氏と、素晴らしいフィードバックを提供していただいたその他すべての Google 社員に感謝いたします。

-Google Cloud Ivan Nardini