É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 la tâche de composant lancée, mais également le lien vers les ressources cloud sous-jacentes, telles que les tâches de prédiction par lot Vertex ou les tâches 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.0'],
)
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
- Tâche personnalisée
- DataflowJob
- Tâche de réglage des hyperparamètres
Écrire un composant pour annuler les ressources sous-jacentes
Lorsqu'une tâche de pipeline est annulée, 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 à la tâche de pipeline. Il est recommandé d'effectuer cette opération juste avant une boucle d'interrogation pour une tâche 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 :
- Tâche de prédiction par lot
- Tâche BigQuery ML
- Custom job
- Job par lot Dataproc sans serveur
- Tâche 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.0/components/google-cloud/google_cloud_pipeline_components/container/utils/execution_context.py
- https://github.com/kubeflow/pipelines/blob/google-cloud-pipeline-components-2.14.0/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 tâches de démarrage en arrière-plan qui doivent être traitées 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.