Menulis komponen untuk menampilkan link Konsol Google Cloud
Umumnya, pada saat menjalankan komponen, Anda tidak hanya ingin melihat link ke tugas komponen yang diluncurkan, tetapi juga link ke resource cloud yang mendasarinya, seperti tugas prediksi batch Vertex atau tugas dataflow.
Proto gcp_resource
adalah parameter khusus yang dapat Anda gunakan di dalam komponen untuk memungkinkan Konsol Google Cloud memberikan tampilan yang disesuaikan dari log dan status resource di dalam konsol Vertex AI Pipelines.
Menampilkan parameter gcp_resource
Menggunakan komponen berbasis container
Pertama, Anda harus menentukan parameter gcp_resource
di dalam komponen, seperti yang ditunjukkan dalam contoh file component.py
berikut ini:
Python
Untuk mempelajari cara menginstal atau mengupdate Vertex AI SDK untuk Python, lihat Menginstal Vertex AI SDK untuk Python. Untuk mengetahui informasi selengkapnya, lihat Dokumentasi referensi Python API.
Selanjutnya, di dalam container, instal paket Pipeline Components Google Cloud:
pip install --upgrade google-cloud-pipeline-components
Selanjutnya, dalam kode Python, tentukan resource sebagai parameter gcp_resource
:
Python
Untuk mempelajari cara menginstal atau mengupdate Vertex AI SDK untuk Python, lihat Menginstal Vertex AI SDK untuk Python. Untuk mengetahui informasi selengkapnya, lihat Dokumentasi referensi Python 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))
Menggunakan komponen Python
Atau, Anda dapat menampilkan parameter output gcp_resources
seperti yang biasa Anda lakukan terhadap parameter output string:
@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
Nilai resource_type
yang didukung
Anda dapat menetapkan resource_type
sebagai string arbitrer, namun hanya jenis berikut ini yang memiliki link di dalam Konsol Google Cloud:
- BatchPredictionJob
- BigQueryJob
- CustomJob
- DataflowJob
- HyperparameterTuningJob
Menulis komponen untuk membatalkan resource yang mendasarinya
Saat tugas pipeline dibatalkan, perilaku default-nya adalah agar resource Google Cloud yang mendasarinya tetap berjalan. Tugas tersebut tidak dibatalkan secara otomatis. Untuk mengubah perilaku ini, Anda harus memasang pengendali SIGTERM ke tugas pipeline tersebut. Tempat yang baik untuk melakukan ini adalah sebelum terjadinya loop polling untuk tugas yang dapat berjalan untuk waktu yang lama.
Pembatalan telah diimplementasikan pada beberapa Pipeline Components Google Cloud, termasuk:
- Tugas prediksi batch
- Tugas ML BigQuery
- Tugas kustom
- Tugas batch Dataproc Serverless
- Tugas penyesuaian hyperparameter
Untuk informasi selengkapnya, termasuk kode contoh yang menunjukkan cara untuk memasang pengendali SIGTERM, lihat link GitHub berikut ini:
- 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
Pertimbangkan hal berikut ini saat menerapkan pengendali SIGTERM:
- Penerapan pembatalan hanya berfungsi setelah komponennya berjalan selama beberapa menit. Hal ini biasanya disebabkan oleh tugas startup latar belakang yang perlu diproses sebelum pengendali sinyal Python dipanggil.
- Beberapa resource Google Cloud mungkin tidak menerapkan pembatalan. Misalnya, membuat atau menghapus Endpoint atau Model Vertex AI dapat membuat operasi yang berjalan lama yang menerima permintaan pembatalan melalui REST API-nya, tetapi tidak menerapkan operasi pembatalan itu sendiri.