Oui, vous pouvez utiliser App Engine pour communiquer avec Google Cloud Machine Learning (désigné sous le nom de CloudML
à partir de maintenant).
Pour communiquer avec CloudML à partir de Python, vous pouvez utiliser la commande Bibliothèque client de l'API Google que vous pouvez utiliser avec tout service Google . Cette bibliothèque client peut également être utilisée sur App Engine, elle dispose même d'une documentation spécifique à cet effet. aquí .
Je vous recommande de commencer par expérimenter le client API localement avant de le tester sur App Engine. Pour la suite de cette réponse, je ne ferai aucune distinction entre l'utilisation de cette bibliothèque client localement ou sur App Engine.
Vous avez mentionné deux types d'opérations différentes que vous voulez faire avec CloudML
:
- Mettre à jour un modèle avec de nouvelles données
- Obtenir des prédictions à partir d'un modèle formé/déployé
1. Mettre à jour un modèle avec de nouvelles données
La mise à jour d'un modèle sur de nouvelles données correspond en fait à deux étapes. Tout d'abord, l'entraînement du modèle sur de nouvelles données (avec ou sans CloudML
) et de déployer ensuite ce modèle nouvellement formé sur CloudML
.
Vous pouvez effectuer ces deux étapes avec la bibliothèque client API d'App Engine, mais pour réduire la complexité, je pense que vous devriez commencer par suivre la procédure suivante démarrage rapide de la prédiction . Vous disposerez ainsi d'un modèle nouvellement formé et déployé et vous comprendrez les différentes étapes à suivre.
Une fois que vous serez familiarisé avec les concepts et les étapes à suivre, vous verrez que vous pouvez stocker vos nouvelles données sur GCS et remplacez les différentes commandes gcloud dans le quickstart par leurs appels API respectifs que vous pouvez faire avec la bibliothèque client API ( documentation ).
2. Obtenir des prédictions à partir d'un modèle déployé
Si vous disposez d'un modèle déployé (si ce n'est pas le cas, suivez la procédure suivante enlace de l'étape précédente), vous pouvez facilement communiquer avec CloudML
pour obtenir 1)prédictions par lots ou 2)prédictions en ligne (ce dernier est en alpha). Puisque vous utilisez App Engine, je suppose que vous êtes intéressé par l'utilisation des prédictions en ligne (obtenir des résultats immédiats). Le code minimal requis pour ce faire :
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()
Avec {"image": <image_array>, "key": <key_id>}
le format d'entrée que vous avez défini pour le modèle déployé via le lien de l'étape précédente. Ceci retournera dans response
contenant la sortie attendue du modèle.