1
votes

en utilisant add_done_callback () et response.metadata () pour automl

J'essaye d'utiliser un exemple standard pour automl. Je m'attendrais à ce que le create_model lance une opération de longue durée qui mettra à jour la réponse de l'opération une fois qu'elle est terminée, puis accède aux métadonnées (pour obtenir le model_id du modèle nouvellement formé). mais le script échoue tout de suite sur metadata = response.metadata () avec "TypeError: l'objet 'OperationMetadata' n'est pas appelable" .

J'exécute ce code dans un PythonOperator dans Airflow / google composer si cela fait une différence. Je peux voir dans l'interface utilisateur d'AutoML que le modèle démarre correctement l'entraînement.

Voici mon code, mais c'est essentiellement l'exemple d'utilisation qui se trouve dans la documentation. :

from google.cloud import automl

client = automl.AutoMlClient()

...
response = client.create_model(project_location, my_model)

def callback(operation_future):
   # Handle result.
   result = operation_future.result()

response.add_done_callback(callback)
metadata = response.metadata()

J'utilise google-cloud-automl == 0.9.0


1 commentaires

Je recommanderais d'ouvrir ceci en tant que problème à github.com/googleapis/google-cloud-python / issues .


3 Réponses :


0
votes

Est-ce que https://googleapis.dev/python/automl/ dernière / gapic / v1beta1 / tables.html aide? C'est un SDk Python écrit manuellement construit sur automl.AutoMlClient.


0 commentaires

0
votes

Je suggérerais qu'au lieu d'utiliser l'exemple que vous avez fourni ici utilisation de base qui se trouve dans la documentation: .

Il serait préférable d'utiliser les opérateurs Google Cloud AutoML Guides d'utilisation des opérateurs Google Cloud Operators .

L'utilisation des opérateurs spécifiques à auto_ml est la méthode recommandée pour l'implémentation de modèles Auto_ML dans un environnement Airflow / Composer.

Voici la référence complète de l'API pour Python Client for Cloud AutoML API


0 commentaires

1
votes

J'ai rencontré le même problème. Cet exemple dans la documentation m'a vraiment égaré. Si vous appelez la méthode result () sur la réponse, elle attendra en fait que le modèle ait fini de s'entraîner avant de renvoyer quoi que ce soit, c'est donc tout ce que vous avez à faire. Vous pouvez ensuite obtenir le model_id à partir de ce résultat.

import time
from google.cloud import automl

client = automl.AutoMlClient()

...
response = client.create_model(project_location, my_model)

model_id = response.result().name.split('/')[-1]


0 commentaires