Scrivere un componente per mostrare un Google Cloud link alla console
È normale che, quando esegui un componente, tu voglia visualizzare non solo il link al job del componente in fase di avvio, ma anche il link alle risorse cloud sottostanti, come i job di previsione in batch di Vertex AI o i job di Dataflow.
Il gcp_resource proto è un parametro speciale che puoi utilizzare nel componente per consentire alla Google Cloud console di fornire una visualizzazione personalizzata dei log e dello stato della risorsa nella console di Gemini Enterprise Agent Platform 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 Python, consulta Installare l'SDK Vertex AI Python. Per ulteriori informazioni, consulta la Python documentazione di riferimento dell'API.
Poi, all'interno del container, 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 Python, consulta Installare l'SDK Vertex AI Python. Per ulteriori informazioni, consulta la Python documentazione di riferimento dell'API.
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 stringa:
@dsl.component(
base_image='python:3.9',
packages_to_install=['google-cloud-pipeline-components==2.22.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
Valori resource_type supportati
Puoi impostare resource_type su una stringa arbitraria, ma solo i seguenti tipi hanno link nella Google Cloud console:
- BatchPredictionJob
- BigQueryJob
- CustomJob
- DataflowJob
- HyperparameterTuningJob
Scrivere un componente per annullare le risorse sottostanti
Quando un job della pipeline viene annullato, il comportamento predefinito è che le risorse sottostanti Google Cloud continuino a essere eseguite. Non vengono annullate automaticamente. Per modificare questo comportamento, devi collegare un gestore SIGTERM al job della pipeline. Un buon punto per farlo è subito prima di un loop di polling per un job che potrebbe essere eseguito a lungo.
L'annullamento è stato implementato in diversi Google Cloud componenti della pipeline, tra cui:
- Job di previsioni in batch
- Job BigQuery ML
- Job personalizzato
- Job batch di Managed Service for Apache Spark
- Job di ottimizzazione degli iperparametri
Per ulteriori informazioni, incluso il 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.22.0/components/google-cloud/google_cloud_pipeline_components/container/utils/execution_context.py
- https://github.com/kubeflow/pipelines/blob/google-cloud-pipeline-components-2.22.0/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. In genere, questo è dovuto alle attività di avvio in background che devono essere elaborate prima che vengano chiamati i gestori di segnali Python.
- Alcune Google Cloud risorse potrebbero non avere l'annullamento implementato. Ad esempio, la creazione o l'eliminazione di un endpoint o di un modello di Gemini Enterprise Agent Platform potrebbe creare un'operazione a lunga esecuzione che accetta una richiesta di annullamento tramite la sua API REST, ma non implementa l'operazione di annullamento stessa.