Écrire un composant pour afficher un lien Google Cloud Console
Lors de l'exécution d'un composant, il est courant de voir non seulement le lien vers le job de composant lancé, mais également le lien vers les ressources cloud sous-jacentes, telles que les jobs de prédiction par lot Vertex ou les jobs Dataflow.
Le proto gcp_resource
est un paramètre spécial que vous pouvez utiliser dans votre composant pour permettre à Google Cloud Console d'offrir une vue personnalisée des journaux et de l'état de la ressource dans la console Vertex AI Pipelines.
Générer le paramètre gcp_resource
Utiliser un composant basé sur un conteneur
Tout d'abord, vous devez définir le paramètre gcp_resource
dans votre composant, comme indiqué dans cet exemple de fichier component.py
:
Python
Pour savoir comment installer ou mettre à jour le SDK Vertex AI pour Python, consultez la section Installer le SDK Vertex AI pour Python. Pour en savoir plus, consultez la documentation de référence de l'API Python.
Ensuite, à l'intérieur du conteneur, installez le package des composants du pipeline Google Cloud :
pip install --upgrade google-cloud-pipeline-components
Ensuite, dans le code Python, définissez la ressource en tant que paramètre gcp_resource
:
Python
Pour savoir comment installer ou mettre à jour le SDK Vertex AI pour Python, consultez la section Installer le SDK Vertex AI pour Python. Pour en savoir plus, consultez la documentation de référence de l'API Python.
from google_cloud_pipeline_components.proto.gcp_resources_pb2 import GcpResources
from google.protobuf.json_format import MessageToJson
dataflow_resources = GcpResources()
dr = dataflow_resources.resources.add()
dr.resource_type='DataflowJob'
dr.resource_uri='https://dataflow.googleapis.com/v1b3/projects/[your-project]/locations/us-east1/jobs/[dataflow-job-id]'
with open(gcp_resources, 'w') as f:
f.write(MessageToJson(dataflow_resources))
Utiliser un composant Python
Vous pouvez également renvoyer le paramètre de sortie gcp_resources
comme vous le feriez pour n'importe quel paramètre de sortie de chaîne :
@dsl.component(
base_image='python:3.9',
packages_to_install=['google-cloud-pipeline-components==2.14.1'],
)
def launch_dataflow_component(project: str, location:str) -> NamedTuple("Outputs", [("gcp_resources", str)]):
# Launch the dataflow job
dataflow_job_id = [dataflow-id]
dataflow_resources = GcpResources()
dr = dataflow_resources.resources.add()
dr.resource_type='DataflowJob'
dr.resource_uri=f'https://dataflow.googleapis.com/v1b3/projects/{project}/locations/{location}/jobs/{dataflow_job_id}'
gcp_resources=MessageToJson(dataflow_resources)
return gcp_resources
Valeurs resource_type
compatibles
Vous pouvez définir resource_type
sur une chaîne arbitraire, mais seuls les types suivants possèdent des liens dans Google Cloud Console :
- BatchPredictionJob
- BigQueryJob
- CustomJob
- DataflowJob
- HyperparameterTuningJob
Écrire un composant pour annuler les ressources sous-jacentes
Lorsqu'un job de pipeline est annulé, le comportement par défaut consiste à maintenir l'exécution des ressources Google Cloud sous-jacentes. Elles ne sont pas automatiquement annulées. Pour modifier ce comportement, vous devez associer un gestionnaire SIGTERM au job de pipeline. Il est recommandé d'effectuer cette opération juste avant une boucle d'interrogation pour un job susceptible de s'exécuter sur une longue période.
L'annulation a été mise en œuvre dans plusieurs composants du pipeline Google Cloud, y compris :
- Job de prédiction par lot
- Job BigQuery ML
- Job personnalisé
- Job par lot Dataproc sans serveur
- Job de réglage des hyperparamètres
Pour en savoir plus et obtenir un exemple de code montrant comment associer un gestionnaire SIGTERM, consultez les liens GitHub suivants :
- https://github.com/kubeflow/pipelines/blob/google-cloud-pipeline-components-2.14.1/components/google-cloud/google_cloud_pipeline_components/container/utils/execution_context.py
- https://github.com/kubeflow/pipelines/blob/google-cloud-pipeline-components-2.14.1/components/google-cloud/google_cloud_pipeline_components/container/v1/gcp_launcher/job_remote_runner.py#L124
Tenez compte des points suivants lorsque vous mettez en œuvre votre gestionnaire SIGTERM :
- La propagation des annulations ne fonctionne qu'après quelques minutes d'exécution du composant. Cela est généralement dû à des jobs de démarrage en arrière-plan qui doivent être traités avant l'appel des gestionnaires de signaux Python.
- L'annulation peut ne pas être mise en œuvre pour certaines ressources Google Cloud. Par exemple, la création ou la suppression d'un point de terminaison ou d'un modèle Vertex AI peut créer une opération de longue durée qui accepte une demande d'annulation via son API REST, mais ne met pas en œuvre l'opération d'annulation proprement dite.