こんにちは、皆さん!今日は、私が最近取り組んだ「AutoML(Vertex AI)」を使って作成したツールを、実際にアプリ化・製品化する方法について詳しくお話ししたいと思います。AutoMLは、機械学習の知識がなくても、データをインプットするだけで簡単に高精度なモデルを構築できる素晴らしいツールですが、作成したモデルをどうやって実際のアプリケーションに組み込むかは、別の課題です。
今回の記事では、Google CloudのVertex AIを使って作成した機械学習モデルを、Webアプリケーションに組み込み、製品化する流れを解説していきます。
AutoML(Vertex AI)とは?
まず、簡単にVertex AIについて説明します。Vertex AIは、Google Cloudが提供する機械学習プラットフォームで、AutoML機能を使うことで、特別な機械学習の知識がなくてもモデルを作成できるサービスです。私たちは、Vertex AIのAutoMLを使って、画像分類や自然言語処理、テーブルデータの予測など、多様なタスクに適したモデルを構築できます。
しかし、作成したモデルを実際にユーザーが使える形にするには、アプリケーションへの統合が必要です。ここからは、その手順を具体的に見ていきましょう。
手順1: Vertex AIでモデルを作成
最初に、Vertex AIを使ってモデルを作成します。これはGoogle Cloudのコンソール上で簡単に行えます。
Google Cloudにログイン Google Cloudのアカウントにログインし、Vertex AIダッシュボードにアクセスします。
データセットの準備 AutoMLに学習させたいデータセットをGoogle Cloud Storageにアップロードします。
モデルのトレーニング データセットをアップロードしたら、Vertex AIのAutoML機能を使って、モデルのトレーニングを行います。以下は、PythonでGoogle Cloud SDKを使用してモデルをトレーニングするコードの一例です。
from google.cloud import aiplatform # プロジェクトとロケーションの設定 project_id = 'your-project-id' location = 'us-central1' dataset_id = 'your-dataset-id' # Vertex AI クライアントの初期化 aiplatform.init(project=project_id, location=location) # AutoMLモデルのトレーニング model = aiplatform.AutoMLImageTrainingJob( display_name='my_image_model', dataset=dataset_id, model_type='CLOUD', ) model.run()
トレーニングが完了したら、モデルが作成されます。このモデルをAPIとして公開し、アプリケーションで使う準備が整います。
手順2: モデルのデプロイ
次に、作成したモデルをデプロイ(API化)して、外部アプリケーションから利用できるようにします。デプロイもVertex AIのダッシュボードから簡単に行えますが、Python SDKを使っても同様に実行可能です。
# モデルをデプロイ model.deploy( endpoint='your-endpoint-id', deployed_model_display_name='my_deployed_model', machine_type='n1-standard-4', )
これで、モデルがエンドポイントにデプロイされ、APIとしてアクセスできるようになります。このエンドポイントにリクエストを送ることで、モデルに予測を依頼できます。
手順3: Webアプリケーションへの組み込み
次に、このAPIを使って、Webアプリケーションに組み込んでいきます。ここでは、PythonのFlaskフレームワークを使ってシンプルなWebアプリを作成し、ユーザーがアップロードしたデータをもとにモデルに予測させる例を見ていきます。
まず、Flaskを使った基本的なWebアプリケーションを作成します。
from flask import Flask, request, jsonify from google.cloud import aiplatform app = Flask(__name__) @app.route('/predict', methods=['POST']) def predict(): # アップロードされたデータを取得 data = request.get_json() # Vertex AIのエンドポイントを呼び出して予測 endpoint = aiplatform.Endpoint(endpoint_name='your-endpoint-id') prediction = endpoint.predict(instances=[data]) return jsonify({'prediction': prediction.predictions}) if __name__ == '__main__': app.run(debug=True)
上記のコードは、ユーザーからのリクエストを受け取り、Vertex AIのAPIを呼び出して予測結果を返す非常にシンプルなものです。このアプリケーションを実行することで、AutoMLで作成したモデルを使用してリアルタイムで予測を行うことができるようになります。
実行結果例:
$ curl -X POST -H "Content-Type: application/json" -d '{"input": "sample_data"}' http://localhost:5000/predict { "prediction": [0.87] }
手順4: フロントエンドとの統合
WebアプリケーションにバックエンドのAPIが用意できたら、フロントエンドを統合してユーザーが使いやすいインターフェースを提供します。例えば、HTMLとJavaScriptを使ってシンプルなUIを作成し、ユーザーが画像やテキストをアップロードして予測結果を得られるページを作成します。
以下は、簡単なHTMLとJavaScriptで作成したフロントエンドの例です。
<!DOCTYPE html> <html> <head> <title>AutoML Prediction</title> </head> <body> <h1>Predict with AutoML Model</h1> <form id="uploadForm"> <input type="file" id="fileInput" /> <button type="submit">Predict</button> </form> <script> document.getElementById('uploadForm').addEventListener('submit', function(event) { event.preventDefault(); var formData = new FormData(); formData.append('file', document.getElementById('fileInput').files[0]); fetch('/predict', { method: 'POST', body: formData }) .then(response => response.json()) .then(data => { alert('Prediction: ' + data.prediction); }); }); </script> </body> </html>
このようにして、ユーザーは簡単にファイルをアップロードし、モデルからの予測結果をリアルタイムで得ることができます。
まとめ
今回は、AutoML(Vertex AI)を使って作成したモデルをWebアプリケーションに組み込んで製品化する方法を解説しました。AutoMLは非常に強力なツールであり、特別な機械学習の知識がなくても高精度なモデルを作成できます。しかし、作成したモデルを実際のアプリケーションに統合し、ユーザーに使ってもらうためには、API化やWebアプリケーションとの連携が重要です。
このプロセスを通じて、機械学習モデルの活用方法が広がり、実際のビジネスや日常生活で役立つアプリケーションを作成できるようになります。私も最初はAutoMLの使い方に戸惑いましたが、実際に手を動かしてみることで、その便利さと可能性を強く感じました。皆さんもぜひ挑戦してみてください!
それでは、また次回の記事でお会いしましょう!