AIの開発や本番環境への導入が少ないコードで簡単にできる「Vertex AI」がGoogle Cloudで一般提供開始、実際に使ってみた

Googleがオンラインイベント「Google I/O 2021」の中で、AIの開発や運用を容易に行えるようにする機械学習プラットフォームの「Vertex AI」を発表しました。
Vertex Ai | Vertex AI | Google Cloud
https://cloud.google.com/vertex-ai
Google Cloud launches Vertex AI, unified platform for MLOps | Google Cloud Blog
https://cloud.google.com/blog/products/ai-machine-learning/google-cloud-launches-vertex-ai-unified-platform-for-mlops
Googleによると、Vertex AIを利用すると競合に比べて80%近く少ないコード量で機械学習を行うことが可能になるとのこと。コードの行数が減らせるだけでなく、大規模な機械学習モデルの構築から訓練、本番リリースという一連の流れが簡素化されているため、ユーザーがより素早く市場の変化に対応して新たなモデルをリリースできます。
また、機械学習プロジェクトにおいてはよく人材確保の難しさが問題点として取り上げられますが、Vertex AIを利用するとデータの管理やプロトタイプ作成、実験、モデルのデプロイや解釈、本番環境での監視といった行為を機械学習のトレーニングを受けていない人でも行うことが可能で、機械学習エンジニアが居なくても問題ないとのこと。逆に一流の機械学習エンジニアがチューニングしたモデルを取り込むこともでき、あらゆるレベルのエンジニアに対応したプラットフォームとなっています。

Vertex AIはすでにGoogle Cloud Platform上で利用可能になっており、利用を考えている人向けに「Google Cloudで機械学習を行うためのベストプラクティス」「Vertex AIについてのドキュメント」や、Vertex AI内部で利用されているAutoMLというサービスでどんなことができるのかが分かりやすく書かれた「AutoML 初心者向けガイド」が用意されています。
◆実際に使ってみた
手元にたまたまCygamesのスマートフォン向けゲーム「ウマ娘 プリティーダービー」に登場するキャラクターの切り抜きとラベルデータがあったので、早速使い勝手を試してみました。

Vertex AIはGoogle Cloud Platformのメニューの「人工知能」セクションの一番上にありました。まずはダッシュボードを開き、「ENABLE VERTEX AI API」をクリックしてVertex AIを有効化した後に「データセットを作成」に進みます。

データセット名にはランダムな数字がデフォルトで設定されていました。データタイプと目標については、今回は「画像」の「画像分類(単一ラベル)」を選択。リージョンはアイオワかオランダの2択になっていたので、アイオワに設定して「作成」をクリック。

データセットが作成されました。続いて教師データを追加するように指示されます。既存のラベルを活用したいため、パソコンからアップロードは選択せずに、インポートファイルを用意することに。

インポートファイルを利用する方法では、Cloud Storageにある画像しか利用できないようだったので、先にバケットを作成してアップロードしておきます。

CSV形式でファイルのパスとラベルを並べたインポートファイルも用意しました。

先ほどのデータセット画面に戻り、「パソコンからインポートファイルをアップロード」を選択し、用意したインポートファイルをアップロードします。

インポート中。

しばらくすると、インポートが終わったというメールが届きました。

画像がどうラベル付けされているのかが表示されました。

このままトレーニングを行いたかったのですが、分析タブを確認してみると、トレーニングに進むためにはそれぞれのラベルに対して10枚以上の画像が必要とのこと。一部のラベルで画像データが足りていませんでした。

本来なら追加のデータをアップロードするべきなのですが、今回はテストレビューのためラベルを削除して対応します。

すると「新しいモデルをトレーニング」ボタンが出現。クリックします。

トレーニングの設定を変更できますが、今回はすべて既定の値を利用します。

モデルの詳細も特に変更なし。

「コンピューティングと料金」では、モデルのトレーニングにかける予算を設定可能です。最低8ノード時間から最高800ノード時間までだったため、今回は一番低い8ノード時間で設定します。記事作成時点の料金表によれば、画像のトレーニングでは1ノード時間あたり3.15ドル(約340円)とのことなので、約3000円の予算を設定したことに。なお、「Enable early stopping」を有効にしておくと、モデルが改善されなくなった時点でトレーニングおよび課金が停止するとのこと。

トレーニングの様子は「トレーニング」タブで確認できます。今回は23分39秒でトレーニングが完了しました。モデル名をクリックして詳細を確認します。

詳細画面はこんな感じ。モデルの様々な指標が確認できます。

ラベルをクリックすると、どんなデータの時に間違えたのかを個別に確認できました。

「デプロイとテスト」タブにて「エンドポイントへのデプロイ」をクリックし、名前とノード数を設定して「デプロイ」をクリックすればデプロイ完了。記事作成時点の料金表によると、今回は画像の分類タスクを1ノードでデプロイしたので1時間ごとに1.25ドル(約140円)の料金が発生するとのことです。

後はエンドポイントに画像データを送るだけでAIが画像を分類してくれます。結局、今回はコードを1行も書かずにそれなりの精度が出る分類AIを作成できました。機械学習について一切知識が無くてもボタンをクリックしていけばそれなりのものができるため、「機械学習を使って何かをする」ことの敷居がかなり低くなっています。
なお、Vertex AIでは今回行ったような「アップロードしたデータでモデルをトレーニングしてデプロイ」という流れをパイプラインとして保存でき、データが更新されるたびに自動でモデルも更新されるように設定することが可能だったり、用意されているモデル以外にも自作のカスタムモデルを利用できたりと、かなり高性能なプラットフォームなのは間違いなさそうです。
・関連記事
猫語の翻訳システム開発現場から機械学習やニューラルネットワークを学べるパズルシミュレーションゲーム「while True: learn()」レビュー - GIGAZINE
成功した機械学習モデル150個を分析してわかったことまとめ、Booking.comの場合 - GIGAZINE
1億7000万円ものコストダウンを機械学習で達成したDropbox、一体どんな方法を取ったのか? - GIGAZINE
機械学習に特化した第4世代プロセッサ「TPU v4」をGoogleが発表、前世代の2倍以上のパフォーマンスに - GIGAZINE
Twitterが機械学習アルゴリズムを改善するためのイニシアチブを発表 - GIGAZINE
機械学習のアルゴリズムはドーパミン神経によって脳にも実装されていることが判明 - GIGAZINE
・関連コンテンツ
in レビュー, ネットサービス, ウェブアプリ, Posted by log1d_ts
You can read the machine translated English article 'Vertex AI', which can be easily develop….