Utilizza i componenti di pipeline di Google Cloud

Quando utilizzi Google Cloud Pipeline Componenti (GCPC), puoi usare le seguenti funzionalità di Vertex AI e Google Cloud per proteggere i tuoi componenti e gli artefatti.

Specifica un account di servizio per un componente

Quando utilizzi un componente, puoi specificare facoltativamente un account di servizio. Il componente viene avviato e agisce con le autorizzazioni di questo account di servizio. Ad esempio, puoi utilizzare il seguente codice per specificare l'account di servizio di un componente 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")

Sostituisci quanto segue:

  • SERVICE_ACCOUNT_ID: l'ID dell'account di servizio.
  • PROJECT_ID: l'ID del progetto.

Scopri di più sull'utilizzo di un account di servizio personalizzato e sulla configurazione di un account di servizio da utilizzare con Vertex AI Pipelines.

Utilizzare i Controlli di servizio VPC per prevenire l'esfiltrazione di dati

I Controlli di servizio VPC possono aiutarti a ridurre il rischio di esfiltrazione di dati da Vertex AI Pipelines. Quando utilizzi Controlli di servizio VPC per creare un perimetro di servizio, le risorse e i dati creati da Vertex AI Pipelines e dai componenti di pipeline di Google Cloud vengono protetti automaticamente. Ad esempio, quando utilizzi Controlli di servizio VPC per proteggere la pipeline, i seguenti artefatti non possono uscire dal perimetro di servizio:

  • Dati di addestramento per un modello AutoML
  • I modelli che hai creato
  • Risultati di una richiesta di previsione batch

Scopri di più sui Controlli di servizio VPC con Vertex AI.

Configurazione del peering di rete VPC

Puoi configurare i componenti di pipeline di Google Cloud per il peering con un Virtual Private Cloud fornendo parametri aggiuntivi. Ad esempio, puoi utilizzare il seguente codice per specificare una rete VPC per un componente EndpointCreate:

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

Sostituisci quanto segue:

  • PROJECT_ID: l'ID del progetto.
  • REGION: la regione in cui utilizzi Vertex AI.
  • NETWORK: la rete VPC, ad esempio "projects/12345/global/networks/myVPC".

Scopri di più sul peering di rete VPC in Vertex AI.

Utilizzo delle chiavi di crittografia gestite dal cliente (CMEK)

Per impostazione predefinita, Google Cloud cripta automaticamente i dati quando sono inattivi utilizzando chiavi di crittografia gestite da Google. Se hai requisiti normativi o di conformità specifici relativi alle chiavi per la protezione dei dati, puoi utilizzare chiavi di crittografia gestite dal cliente (CMEK) per le tue risorse. Prima di iniziare a utilizzare le chiavi di crittografia gestite dal cliente, scopri i vantaggi di CMEK su Vertex AI e le attuali risorse supportate da CMEK.

Configurazione del componente con CMEK

Dopo aver creato un keyring e una chiave in Cloud Key Management Service e aver concesso le autorizzazioni di crittografia e decriptazione a Vertex AI per la tua chiave, puoi creare un nuovo componente supportato da CMEK specificando la chiave come uno dei parametri di creazione. Ad esempio, puoi utilizzare il seguente codice per specificare una chiave per un componente 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")

Sostituisci quanto segue:

  • PROJECT_ID: l'ID del tuo progetto Google Cloud.
  • LOCATION_ID: un identificatore di località o regione valido, ad esempio us-central1.
  • KEY_RING_NAME: il nome del keyring per la tua CMEK. Per ulteriori informazioni sui keyring, consulta Risorse Cloud KMS.
  • KEY_NAME: il nome della chiave CMEK.

Nota: i componenti di Google Cloud che non sono componenti di Vertex AI potrebbero richiedere autorizzazioni aggiuntive. Ad esempio, un componente di BigQuery potrebbe richiedere un'autorizzazione di crittografia e decriptazione. Inoltre, la posizione della chiave CMEK deve corrispondere a quella del componente. Ad esempio, se un componente BigQuery carica i dati da un set di dati che si trova nella località con più regioni negli Stati Uniti, la chiave CMEK deve essere basata anche nella località degli Stati Uniti multiregionale.

Utilizza o produci artefatti nel tuo componente

L'SDK Google Cloud Pipeline Componenti definisce un insieme di tipi di artefatto dei metadati ML che fungono da input e output del componente. Alcuni componenti di pipeline di Google Cloud utilizzano questi artefatti come input o li producono come output.

Questa pagina mostra come utilizzare e produrre questi artefatti.

Consumare un artefatto ML

Utilizza un artefatto nel componente YAML

I metadati dell'artefatto possono fungere da input per un componente. Per preparare un artefatto da utilizzare come input, devi estrarlo e inserirlo in un file YAML dei componenti.

Ad esempio, il componente ModelUploadOp genera un artefatto google.VertexModel che può essere utilizzato da un componente ModelDeployOp. Usa il seguente codice in un file YAML del componente per recuperare una risorsa Model di Vertex AI dagli input (riferimento):

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

Per lo schema completo dei metadati dell'artefatto, consulta il file artifact_types.py nel repository GitHub di Kubeflow.

Utilizza un artefatto in un componente Python leggero

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"]

Per un esempio di come utilizzare i tipi di artefatti di Vertex ML Metadata, consulta Addestrare un modello di classificazione utilizzando dati tabulari e AutoML di Vertex AI.

crea un artefatto ML

I seguenti esempi di codice mostrano come creare un artefatto Vertex ML Metadata che un componente GCPC possa accettare come input.

Utilizza un nodo di importazione

L'esempio seguente crea un nodo Importer che registra una nuova voce artefatto in Vertex ML Metadata. Il nodo dell'importatore prende l'URI e i metadati dell'artefatto come primitive e li pacchettizza in un artefatto.

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'])

Utilizza i componenti basati su funzioni Python

L'esempio seguente mostra come generare un artefatto Vertex ML Metadata direttamente da un componente 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'])

Utilizza il tuo componente basato su container

L'esempio seguente mostra come generare un artefatto VertexBatchPredictionJob come output da un componente basato su container utilizzando la classe di utilità 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])