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, ModelUploadOp
menghasilkan artefak google.VertexModel
yang dapat digunakan oleh
ModelDeployOp
komponen. 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 atribut
artifact_types.py
utilitas.
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])