Menggunakan Komponen Pipeline Google Cloud

Saat menggunakan Komponen Pipeline Google Cloud (GCPC), Anda dapat menggunakan fitur Vertex AI dan Google Cloud berikut untuk mengamankan komponen dan artefak Anda.

Menentukan akun layanan untuk komponen

Saat menggunakan komponen, Anda dapat menentukan akun layanan secara opsional. Komponen Anda akan diluncurkan dan berfungsi dengan izin akun layanan ini. Misalnya, Anda dapat menggunakan kode berikut untuk menentukan akun layanan dari komponen ModelDeploy:

model_deploy_op = ModelDeployOp(model=training_job_run_op.outputs["model"],
    endpoint=endpoint_op.outputs["endpoint"],
    automatic_resources_min_replica_count=1,
    automatic_resources_max_replica_count=1,
    service_account="SERVICE_ACCOUNT_ID@PROJECT_ID.iam.gserviceaccount.com")

Ganti kode berikut:

  • SERVICE_ACCOUNT_ID: ID untuk akun layanan.
  • PROJECT_ID: ID project.

Pelajari lebih lanjut cara menggunakan akun layanan kustom dan mengonfigurasi akun layanan untuk digunakan dengan Vertex AI Pipelines.

Menggunakan Kontrol Layanan VPC untuk mencegah pemindahan data yang tidak sah

Kontrol Layanan VPC dapat membantu Anda mengurangi risiko pemindahan data yang tidak sah dari Vertex AI Pipelines. Saat Anda menggunakan Kontrol Layanan VPC untuk membuat perimeter layanan, resource dan data yang dibuat oleh Vertex AI Pipelines dan Komponen Pipeline Google Cloud akan otomatis dilindungi. Misalnya, saat Anda menggunakan Kontrol Layanan VPC untuk melindungi pipeline, artefak berikut tidak dapat keluar dari perimeter layanan Anda:

  • Data pelatihan untuk model AutoML
  • Model yang Anda buat
  • Hasil dari permintaan prediksi batch

Pelajari lebih lanjut tentang Kontrol Layanan VPC dengan Vertex AI.

Menyiapkan Peering Jaringan VPC

Anda dapat mengonfigurasi Komponen Pipeline Google Cloud untuk melakukan peering dengan Virtual Private Cloud dengan memberikan parameter tambahan. Misalnya, Anda dapat menggunakan kode berikut untuk menentukan jaringan VPC untuk komponen EndpointCreate:

endpoint_create_op = EndpointCreateOp(
    project="PROJECT_ID",
    location="REGION",
    display_name="endpoint-display-name",
    network="NETWORK")

Ganti kode berikut:

  • PROJECT_ID: ID project.
  • REGION: Region tempat Anda menggunakan Vertex AI.
  • NETWORK: Jaringan VPC, misalnya, "projects/12345/global/networks/myVPC".

Pelajari lebih lanjut tentang Peering Jaringan VPC di Vertex AI.

Menggunakan kunci enkripsi yang dikelola pelanggan (CMEK)

Secara default, Google Cloud otomatis mengenkripsi data saat dalam penyimpanan menggunakan kunci enkripsi yang dikelola oleh Google. Jika Anda memiliki persyaratan kepatuhan atau peraturan khusus yang terkait dengan kunci yang melindungi data, Anda dapat menggunakan kunci enkripsi yang dikelola pelanggan (CMEK) untuk resource Anda. Sebelum Anda mulai menggunakan kunci enkripsi yang dikelola pelanggan, pelajari manfaat CMEK di Vertex AI dan resource yang didukung CMEK saat ini.

Mengonfigurasi komponen dengan CMEK

Setelah membuat key ring dan kunci di Cloud Key Management Service, serta memberikan izin bagi pengenkripsi dan pendekripsi Vertex AI untuk kunci Anda, Anda dapat membuat komponen baru yang didukung CMEK dengan menentukan kunci Anda sebagai salah satu parameter pembuatan. Misalnya, Anda dapat menggunakan kode berikut untuk menentukan kunci bagi komponen ModelBatchPredict:

model_batch_predict_op = ModelBatchPredictOp(project="PROJECT_ID",
    model=model_upload_op.outputs["model"],
    encryption_spec_key_name="projects/PROJECT_ID/locations/LOCATION_ID/keyRings/KEY_RING_NAME/cryptoKeys/KEY_NAME")

Ganti kode berikut:

  • PROJECT_ID: ID project Google Cloud Anda.
  • LOCATION_ID: ID lokasi atau region yang valid, misalnya, us-central1.
  • KEY_RING_NAME: Nama key ring untuk CMEK Anda. Untuk informasi selengkapnya tentang key ring, lihat resource Cloud KMS.
  • KEY_NAME: Nama kunci CMEK.

Catatan: Komponen Google Cloud yang bukan komponen Vertex AI mungkin memerlukan izin tambahan. Misalnya, komponen BigQuery mungkin memerlukan izin enkripsi dan dekripsi. Selain itu, lokasi kunci CMEK harus sama dengan lokasi komponen. Misalnya, jika komponen BigQuery memuat data dari set data yang berbasis di lokasi AS multi-region, kunci CMEK juga harus berbasis di lokasi AS multi-region.

Menggunakan atau membuat artefak di komponen Anda

Google Cloud Pipeline Components SDK menentukan sekumpulan jenis artefak metadata ML yang berfungsi sebagai input dan output komponen. Beberapa Komponen Pipeline Google Cloud menggunakan artefak ini sebagai input atau membuatnya sebagai output.

Halaman ini menunjukkan cara menggunakan dan membuat artefak tersebut.

Menggunakan artefak ML

Menggunakan artefak dalam YAML komponen

Metadata artefak dapat berfungsi sebagai input ke komponen. Untuk menyiapkan artefak yang akan digunakan sebagai input, Anda harus mengekstraknya dan memasukkannya ke dalam file YAML komponen.

Misalnya, komponen ModelUploadOp menghasilkan artefak google.VertexModel yang dapat digunakan oleh komponen ModelDeployOp. Gunakan kode berikut dalam file YAML komponen untuk mengambil resource Model Vertex AI dari input (referensi):

"model": "',"{{$.inputs.artifacts['model'].metadata['resourceName']}}", '"'

Untuk skema lengkap metadata artefak, lihat file artifact_types.py di repo GitHub Kubeflow.

Menggunakan artefak dalam komponen Python yang ringan

from kfp.dsl import Artifact, Input

@dsl.component
def classification_model_eval_metrics(
    project: str,
    location: str,  # "us-central1",
    model: Input[Artifact],
) :
   # Consumes the `resourceName` metadata
   model_resource_path = model.metadata["resourceName"]

Untuk mengetahui contoh cara menggunakan jenis artefak Vertex ML Metadata, baca artikel Melatih model klasifikasi menggunakan data tabulasi dan Vertex AI AutoML.

Membuat artefak ML

Contoh kode berikut menunjukkan cara membuat artefak Vertex ML Metadata yang dapat diterima komponen GCPC sebagai input.

Menggunakan node pengimpor

Contoh berikut membuat node Pengimpor yang mendaftarkan entri artefak baru ke Vertex ML Metadata. Node pengimpor mengambil URI dan metadata artefak sebagai primitif dan memaketkannya menjadi sebuah artefak.

from google_cloud_pipeline_components import v1
from google_cloud_pipeline_components.types import artifact_types
from kfp.components import importer_node
from kfp import dsl

@dsl.pipeline(name=_PIPELINE_NAME)
def pipeline():
  # Using importer and UnmanagedContainerModel artifact for model upload
  # component.
  importer_spec = importer_node.importer(
      artifact_uri='gs://managed-pipeline-gcpc-e2e-test/automl-tabular/model',
      artifact_class=artifact_types.UnmanagedContainerModel,
      metadata={
          'containerSpec': {
              'imageUri':
                  'us-docker.pkg.dev/vertex-ai/automl-tabular/prediction-server:prod'
          }
      })

  # Consuming the UnmanagedContainerModel artifact for the previous step
  model_upload_with_artifact_op = v1.model.ModelUploadOp(
      project=_GCP_PROJECT_ID,
      location=_GCP_REGION,
      display_name=_MODEL_DISPLAY_NAME,
      unmanaged_container_model=importer_spec.outputs['artifact'])

Menggunakan komponen berbasis fungsi Python

Contoh berikut menunjukkan cara menghasilkan output artefak Vertex ML Metadata langsung dari komponen Python.

from google_cloud_pipeline_components import v1
from kfp.components import importer_node
from kfp import dsl

@dsl.component(
    base_image='python:3.9',
    packages_to_install=['google-cloud-aiplatform'],
)
# Note currently KFP SDK doesn't support outputting artifacts in `google` namespace.
# Use the base type dsl.Artifact instead.
def return_unmanaged_model(model: dsl.Output[dsl.Artifact]):
  model.metadata['containerSpec'] = {
      'imageUri':
          'us-docker.pkg.dev/vertex-ai/automl-tabular/prediction-server:prod'
  }
  model.uri = f'gs://automl-tabular-pipeline/automl-tabular/model'

@dsl.pipeline(name=_PIPELINE_NAME)
def pipeline():

  unmanaged_model_op = return_unmanaged_model()

  # Consuming the UnmanagedContainerModel artifact for the previous step
  model_upload_with_artifact_op = v1.model.ModelUploadOp(
      project=_GCP_PROJECT_ID,
      location=_GCP_REGION,
      display_name=_MODEL_DISPLAY_NAME,
      unmanaged_container_model=unmanaged_model_op.outputs['model'])

Menggunakan komponen berbasis container Anda sendiri

Contoh berikut menunjukkan cara membuat artefak VertexBatchPredictionJob sebagai output dari komponen berbasis container menggunakan class utilitas artifact_types.py.

bp_job_artifact = VertexBatchPredictionJob(
    'batchpredictionjob', vertex_uri_prefix + get_job_response.name,
    get_job_response.name, get_job_response.output_info.bigquery_output_table,
    get_job_response.output_info.bigquery_output_dataset,
    get_job_response.output_info.gcs_output_directory)

    output_artifacts = executor_input_json.get('outputs', {}).get('artifacts', {})
    executor_output['artifacts'] = bp_job_artifact.to_executor_output_artifact(output_artifacts[bp_job_artifact.name])