Scrivi un componente per mostrare un link alla console Google Cloud
Quando esegui un componente, è normale voler vedere non solo il link al job del componente che viene lanciato, ma anche il link alle risorse cloud sottostanti, come i job di previsione batch o di flusso di dati di Vertex.
gcp_resource
proto è un parametro speciale che puoi utilizzare nel componente per consentire alla console Google Cloud di fornire una visualizzazione personalizzata dei log e dello stato della risorsa nella console Vertex AI Pipelines.
Output del parametro gcp_resource
Utilizzo di un componente basato su container
Innanzitutto, devi definire il parametro gcp_resource
nel componente, come mostrato nel seguente file component.py
di esempio:
Python
Per scoprire come installare o aggiornare l'SDK Vertex AI per Python, consulta Installare l'SDK Vertex AI per Python. Per ulteriori informazioni, consulta documentazione di riferimento dell'API Python.
Poi, all'interno del contenitore, installa il pacchetto Google Cloud Pipeline Components:
pip install --upgrade google-cloud-pipeline-components
Poi, nel codice Python, definisci la risorsa come parametro gcp_resource
:
Python
Per scoprire come installare o aggiornare l'SDK Vertex AI per Python, vedi Installare l'SDK Vertex AI per Python. Per ulteriori informazioni, consulta documentazione di riferimento dell'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))
Utilizzo di un componente Python
In alternativa, puoi restituire il parametro di output gcp_resources
come faresti con qualsiasi parametro di output di stringa:
@dsl.component(
base_image='python:3.9',
packages_to_install=['google-cloud-pipeline-components==2.16.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
Valori resource_type
supportati
Puoi impostare resource_type
come stringa arbitraria, ma solo i seguenti tipi hanno link nella console Google Cloud:
- BatchPredictionJob
- BigQueryJob
- CustomJob
- DataflowJob
- HyperparameterTuningJob
Scrivi un componente per annullare le risorse sottostanti
Quando un job della pipeline viene annullato, il comportamento predefinito è che le risorse Google Cloud sottostanti continuino a funzionare. Non vengono annullati automaticamente. Per modificare questo comportamento, devi associare un gestore SIGTERM al job della pipeline. Un buon punto per farlo è appena prima di un loop di polling per un job che potrebbe essere eseguito per molto tempo.
L'annullamento è stato implementato su diversi componenti della pipeline di Google Cloud, tra cui:
- Job di previsione batch
- Job BigQuery ML
- Job personalizzato
- Job batch Dataproc Serverless
- Job di ottimizzazione degli iperparametri
Per maggiori informazioni, incluso un codice campione che mostra come collegare un gestore SIGTERM, consulta i seguenti link GitHub:
- https://github.com/kubeflow/pipelines/blob/google-cloud-pipeline-components-2.16.1/components/google-cloud/google_cloud_pipeline_components/container/utils/execution_context.py
- https://github.com/kubeflow/pipelines/blob/google-cloud-pipeline-components-2.16.1/components/google-cloud/google_cloud_pipeline_components/container/v1/gcp_launcher/job_remote_runner.py#L124
Tieni presente quanto segue quando implementi il gestore SIGTERM:
- La propagazione dell'annullamento funziona solo dopo che il componente è in esecuzione da alcuni minuti. Questo accade in genere a causa di attività di avvio in background che devono essere elaborate prima che vengano chiamati i gestori degli indicatori di Python.
- L'annullamento potrebbe non essere implementato per alcune risorse Google Cloud. Ad esempio, la creazione o l'eliminazione di un endpoint o di un modello Vertex AI potrebbe creare un'operazione a lunga esecuzione che accetta una richiesta di annullamento tramite la relativa API REST, ma non implementa l'operazione di annullamento stessa.