Utilizza i componenti della pipeline Google Cloud

Quando utilizzi Google Cloud i componenti della pipeline (GCPC), puoi utilizzare la piattaforma agentica Gemini Enterprise e Google Cloud le seguenti funzionalità per proteggere i componenti e gli artefatti.

Specificare un account di servizio per un componente

Quando utilizzi un componente, puoi facoltativamente specificare 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 il 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 del account di servizio.
  • PROJECT_ID: l'ID del progetto.

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

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

I Controlli di servizio VPC possono aiutarti a mitigare il rischio di esfiltrazione di dati da Vertex AI Pipelines. Quando utilizzi i Controlli di servizio VPC per creare un perimetro di servizio, le risorse e i dati che vengono creati da Vertex AI Pipelines e dai Google Cloud componenti della pipeline vengono protetti automaticamente. Ad esempio, quando utilizzi i 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
  • Modelli creati
  • Risultati di una richiesta di previsioni in batch

Scopri di più sui Controlli di servizio VPC con la piattaforma agentica Gemini Enterprise.

Configurare il peering di rete VPC

Puoi configurare i componenti della pipeline per il peering con un cloud privato virtuale fornendo parametri aggiuntivi. Google Cloud 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 la piattaforma agentica Gemini Enterprise.
  • NETWORK: la rete VPC, ad esempio "projects/12345/global/networks/myVPC".

Scopri di più sul peering di rete VPC nella piattaforma agentica Gemini Enterprise.

Utilizzare le chiavi di crittografia gestite dal cliente (CMEK)

Per impostazione predefinita, Google Cloud cripta automaticamente i dati at-rest utilizzando le chiavi di crittografia gestite da Google. Se hai requisiti di conformità o normativi specifici relativi alle chiavi che proteggono i tuoi dati, puoi utilizzare le 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 sulla piattaforma agentica Gemini Enterprise e le risorse attualmente supportate da CMEK.

Configurare il componente con CMEK

Dopo aver creato un keyring e una chiave in Cloud Key Management Service, e aver concesso alla piattaforma agentica Gemini Enterprise le autorizzazioni di crittografia e decrittografia per la 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' Google Cloud ID progetto.
  • LOCATION_ID: un identificatore di località o regione valido, ad esempio us-central1.
  • KEY_RING_NAME: il nome del keyring per CMEK. Per ulteriori informazioni sui keyring, consulta Risorse Cloud KMS.
  • KEY_NAME: il nome della chiave CMEK.

Nota: Google Cloud i componenti che non sono componenti della piattaforma agentica Gemini Enterprise potrebbero richiedere autorizzazioni aggiuntive. Ad esempio, un componente BigQuery potrebbe richiedere l'autorizzazione di crittografia e decrittografia. Inoltre, la località della chiave CMEK deve essere la stessa del componente. Ad esempio, se un componente BigQuery carica dati da un set di dati basato nella località multiregionale US, anche la chiave CMEK deve essere basata nella località multiregionale US.

Utilizzare o produrre artefatti nel componente

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

Questa pagina mostra come utilizzare e produrre questi artefatti.

Utilizzare un artefatto ML

Utilizzare un artefatto in YAML del componente

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 del componente.

Ad esempio, il ModelUploadOp componente genera un artefatto google.VertexModel che può essere utilizzato da un ModelDeployOp componente. Utilizza il seguente codice in un file YAML del componente per recuperare una risorsa Model della piattaforma agentica Gemini Enterprise dagli input (riferimento):

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

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

Utilizzare 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 types, consulta Addestrare un modello di classificazione utilizzando dati tabulari e AutoML della piattaforma agentica.

Creare un artefatto ML

Gli esempi di codice seguenti mostrano come creare un artefatto di Vertex ML Metadata che un componente GCPC può accettare come input.

Utilizzare un nodo di importazione

L'esempio seguente crea un nodo di importazione che registra una nuova voce di artefatto in Vertex ML Metadata. Il nodo di importazione accetta l'URI e i metadati dell'artefatto come primitive e li inserisce 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'])

Utilizzare componenti basati su funzioni Python

L'esempio seguente mostra come generare un artefatto di 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'])

Utilizzare il proprio componente basato su container

L'esempio seguente mostra come generare un VertexBatchPredictionJob artefatto come output da un componente basato su container utilizzando la artifact_types.py classe di utilità.

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