はい。App Engine を使用して、Google Cloud Machine Learningと通信できます (以降、「Google Cloud Machine Learning 」と呼びCloudML
ます)。
Python から CloudML と通信するには、任意の Google サービスで使用できるGoogle API クライアント ライブラリを使用できます。このクライアント ライブラリは App Engine でも使用できます。これに関する具体的なドキュメントもここにあります。
App Engine でテストする前に、まずローカルで API クライアントを試してみることをお勧めします。この回答の次の部分では、このクライアント ライブラリをローカルで使用するか、App Engine で使用するかを区別しません。
あなたがやりたい2つの異なる種類の操作について言及しましたCloudML
:
- モデルを新しいデータで更新する
- トレーニング済み/デプロイ済みのモデルから予測を取得する
1. 新しいデータでモデルを更新する
新しいデータでモデルを更新することは、実際には 2 つのステップに相当します。最初に新しいデータでモデルをトレーニングし (を使用して、または使用せずにCloudML
)、次にこの新しくトレーニングしたモデルを にデプロイしCloudML
ます。
App Engine の API クライアント ライブラリを使用して両方のステップを実行できますが、複雑さを軽減するために、予測クイックスタートに従うことから始める必要があると思います。これにより、新しくトレーニングおよびデプロイされたモデルが作成され、関連するさまざまな手順を理解できるようになります。
関連する概念と手順を理解すると、新しいデータをGCSに保存し、クイックスタートのさまざまな gcloud コマンドを、API クライアント ライブラリで実行できるそれぞれの API 呼び出しに置き換えることができることがわかります (ドキュメント) 。 .
2. デプロイされたモデルから予測を取得する
デプロイされたモデルがある場合 (そうでない場合は、前のステップのリンクに従ってください)、簡単に通信しCloudML
て、1) バッチ予測または 2) オンライン予測(後者はアルファ版です) を取得できます。あなたは App Engine を使用しているため、オンライン予測 (結果をすぐに取得する) の使用に関心があると思います。これを行うために必要な最小限のコード:
from oauth2client.client import GoogleCredentials
from googleapiclient import discovery
projectID = 'projects/<your_project_id>'
modelName = projectID+'/models/<your_model_name>'
credentials = GoogleCredentials.get_application_default()
ml = discovery.build('ml', 'v1beta1', credentials=credentials)
# Create a dictionary with the fields from the request body.
requestDict = {"instances":[
{"image": [0.0,..., 0.0, 0.0], "key": 0}
]}
# Create a request to call projects.models.create.
request = ml.projects().predict(
name=modelName,
body=requestDict)
response = request.execute()
{"image": <image_array>, "key": <key_id>}
前の手順のリンクを介して、デプロイされたモデルに対して定義した入力形式を使用します。これはresponse
、モデルの期待される出力を含んで返されます。