Utilizza i componenti della pipeline di Google Cloud

Quando utilizzi i componenti della pipeline di Google Cloud (GCPC), puoi utilizzare le seguenti e le funzionalità di Google Cloud 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 l'account di servizio 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ù su usando un account di servizio personalizzato e configurare un account di servizio. per l'uso con Vertex AI Pipelines.

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

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, risorse e dati create da Vertex AI Pipelines e dai componenti di pipeline di Google Cloud vengono protette. Ad esempio, quando utilizzi Controlli di servizio VPC per proteggere i seguenti artefatti non possono lasciare il tuo perimetro di servizio:

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

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

Configurazione del peering di rete VPC

Puoi configurare i componenti della pipeline di Google Cloud per il peering con un Virtual Private Cloud fornendo parametri. Ad esempio, puoi utilizzare il seguente codice per specificare un 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 stai utilizzando Vertex AI.
  • NETWORK: la rete VPC, ad esempio "projects/12345/global/networks/myVPC".

Scopri di più su 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 rest utilizzando chiavi di crittografia. gestiti da Google. Se hai requisiti normativi o di conformità specifici alle chiavi che proteggono i tuoi dati, puoi utilizzare i cluster chiavi di crittografia (CMEK) per le tue risorse. Prima di iniziare a utilizzare di crittografia gestite dal cliente, scopri di più vantaggi di CMEK su Vertex AI e le risorse attualmente supportate da CMEK.

Configurazione del componente con CMEK

Dopo aver creato un keyring e la chiave Cloud Key Management Service, e concedi a Vertex AI le autorizzazioni di crittografia e decriptazione per la tua chiave, puoi creare un nuovo componente supportato da CMEK specificando la tua chiave come uno dei i parametri create. 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 della tua CMEK. Per ulteriori informazioni sui keyring, vedi Risorse di Cloud KMS.
  • KEY_NAME: il nome della chiave CMEK.

Nota:componenti di Google Cloud diversi da quelli di Vertex AI potrebbero richiedere autorizzazioni aggiuntive. Ad esempio, un modello BigQuery potrebbe richiedere l'autorizzazione per la crittografia e la decriptazione. Inoltre, la posizione della chiave CMEK deve corrispondere a quella della del componente. Ad esempio, se un componente di BigQuery carica i dati da un set di dati basato su località con più regioni negli Stati Uniti, anche la chiave CMEK deve trovarsi nella località US (più regioni).

Consumo o produzione artefatti nel componente

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

Questa pagina mostra come utilizzare e produrre questi artefatti.

Consuma un artefatto ML

Consuma un artefatto nel componente YAML

I metadati dell'artefatto possono fungere da input per un componente. Per preparare un l'artefatto da consumare come input, devi estrarlo e inserirlo in un componente YAML.

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

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

Per lo schema completo dei metadati dell'artefatto, vedi File artifact_types.py nel repository GitHub di Kubeflow.

Consuma 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 gli artefatti di Vertex ML Metadata tipi, consulta Addestrare un modello di classificazione utilizzando dati tabulari e Vertex AI AutoML.

crea un artefatto ML

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

Utilizza un nodo di importazione

Nell'esempio seguente viene creato un nodo di importazione che registra un nuovo artefatto a Vertex ML Metadata. Il nodo dell'importatore prende i dati URI e metadati come primitive e le 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 output di Vertex ML Metadata artefatto 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 basato su container artifact_types.py in una classe di utenza.

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