Wenn Sie Google Cloud Pipeline Components (GCPC, Google Cloud Pipeline Components) verwenden, können Sie Ihre Komponenten und Artefakte mit den folgenden Gemini Enterprise Agent Platform und Google Cloud Features sichern.
Dienstkonto für eine Komponente angeben
Wenn Sie eine Komponente verwenden, können Sie optional ein Dienstkonto angeben.
Ihre Komponente wird gestartet und verfügt über die Berechtigungen dieses Dienstkontos.
Sie können mit dem folgenden Code beispielsweise das Dienstkonto einer ModelDeploy-Komponente angeben:
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")
Dabei gilt:
- SERVICE_ACCOUNT_ID: Die ID für das Dienstkonto.
- PROJECT_ID: ID des Projekts
Weitere Informationen zur Verwendung eines benutzerdefinierten Dienstkontos und zum Konfigurieren eines Dienstkontos für die Verwendung mit Vertex AI-Pipelines
Mit VPC Service Controls Daten-Exfiltration verhindern
VPC Service Controls können Ihnen helfen, das Risiko einer Daten-Exfiltration aus Vertex AI-Pipelines zu reduzieren. Wenn Sie VPC Service Controls zum Erstellen eines Dienstperimeters verwenden, werden Ressourcen und Daten, die von Vertex AI-Pipelines und den Google Cloud Pipeline Components erstellt werden, automatisch geschützt. Wenn Sie beispielsweise VPC Service Controls zum Schutz von Vertex AI verwenden, können die folgenden Artefakte Ihren Dienstperimeter nicht verlassen:
- Trainingsdaten für ein AutoML-Modell
- Von Ihnen erstellte Modelle
- Ergebnisse einer Batch-Vorhersageanfrage
Weitere Informationen zu VPC Service Controls mit Gemini Enterprise Agent Platform.
VPC-Netzwerk-Peering einrichten
Um Google Cloud Pipeline Components für das Peering mit einer Virtual Private Cloud zu konfigurieren, müssen Sie zusätzliche
Parameter angeben. Mit dem folgenden Code können Sie beispielsweise ein VPC-Netzwerk für eine EndpointCreate-Komponente angeben:
endpoint_create_op = EndpointCreateOp(
project="PROJECT_ID",
location="REGION",
display_name="endpoint-display-name",
network="NETWORK")
Dabei gilt:
- PROJECT_ID: Die ID des Projekts.
- REGION: Die Region, in der Sie Gemini Enterprise Agent Platform verwenden.
- NETWORK: Das VPC-Netzwerk, z. B.
"projects/12345/global/networks/myVPC".
Weitere Informationen zum VPC-Netzwerk-Peering in Gemini Enterprise Agent Platform.
Kundenverwaltete Verschlüsselungsschlüssel (Customer Managed Encryption Keys, CMEK) verwenden
Standardmäßig verschlüsseltDaten im inaktiven Zustand automatisch mit von Google verwalteten Verschlüsselungsschlüsseln. Google Cloud Wenn Sie bestimmte Compliance- oder behördlichen Anforderungen in Bezug auf die Schlüssel zum Schutz Ihrer Daten haben, können Sie für Ihre Ressourcen kundenverwaltete Verschlüsselungsschlüssel (Customer-Managed Encryption Keys, CMEK) verwenden. Bevor Sie kundenverwaltete Verschlüsselungsschlüssel verwenden, sollten Sie sich mit den Vorteilen von CMEK in Gemini Enterprise Agent Platform und mit den aktuellen von CMEK unterstützten Ressourcenvertraut machen.
Komponente mit CMEK konfigurieren
Nachdem Sie einen Schlüsselbund und einen Schlüssel in
Cloud Key Management Service,
erstellt und Gemini Enterprise Agent Platform-Berechtigungen zum Verschlüsseln und Entschlüsseln Ihres Schlüssels gewährt haben,
können Sie eine neue CMEK-unterstützte Komponente erstellen. Geben Sie dazu Ihren Schlüssel als einen der
Erstellungsparameter an. Mit dem folgenden Code können Sie beispielsweise einen Schlüssel für eine ModelBatchPredict-Komponente angeben:
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")
Dabei gilt:
- PROJECT_ID: Ihre Google Cloud Projekt-ID
- LOCATION_ID: Eine gültige Standort- oder Regions-ID, z. B.
us-central1. - KEY_RING_NAME: Der Name des Schlüsselbunds für Ihren CMEK. Weitere Informationen zu Schlüsselbunden finden Sie unter Cloud KMS-Ressourcen.
- KEY_NAME: Der Name des CMEK-Schlüssels.
Hinweis: Google Cloud Für Komponenten, die keine Gemini Enterprise Agent Platform-Komponenten sind, sind möglicherweise zusätzliche Berechtigungen erforderlich. Beispielsweise kann eine BigQuery -Komponente die Berechtigung zum Verschlüsseln und Entschlüsseln erfordern. Darüber hinaus muss der Standort des CMEK-Schlüssels mit dem Standort der Komponente übereinstimmen. Wenn eine BigQuery-Komponente beispielsweise Daten aus einem Dataset lädt, das sich am multiregionalen Standort „US“befindet, muss sich der CMEK-Schlüssel ebenfalls am multiregionalen Standort „US“ befinden.
Artefakte in Ihrer Komponente nutzen oder erstellen
Das Google Cloud SDK definiert eine Reihe von ML-Metadaten-Artefakttypen, die als Komponenteneingabe und -ausgabe dienen. Einige Google Cloud Pipeline Components nutzen diese Artefakte als Eingabe oder erstellen sie als Ausgabe.
Auf dieser Seite wird gezeigt, wie Sie diese Artefakte nutzen und erstellen.
ML-Artefakt nutzen
Artefakt in Komponenten-YAML verwenden
Die Metadaten des Artefakts können als Eingabe für eine Komponente verwendet werden. Um das Artefakt für die Nutzung als Eingabe vorzubereiten, müssen Sie es extrahieren und in eine YAML-Komponentendatei einfügen.
Beispielsweise generiert die ModelUploadOp
Komponente ein google.VertexModel Artefakt, das von einer
ModelDeployOp
Komponente genutzt werden kann. Verwenden Sie den folgenden Code in einer YAML-Komponentendatei, um eine Gemini Enterprise Agent Platform-Model-Ressource aus den Eingaben (Referenz) abzurufen:
"model": "',"{{$.inputs.artifacts['model'].metadata['resourceName']}}", '"'
Das vollständige Schema der Artefaktmetadaten finden Sie im Kubeflow-GitHub-Repository in der
artifact_types.py Datei.
Artefakt in einer einfachen Python-Komponente verwenden
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"]
Ein Beispiel für die Nutzung der Vertex ML Metadata-Artefakte finden Sie unter Klassifizierungsmodell mit tabellarischen Daten und Agent Platform AutoML trainieren.
ML-Artefakt erstellen
Die folgenden Codebeispiele zeigen, wie Sie ein Vertex ML-Metadatenartefakt erstellen, das von einer GCPC-Komponente als Eingabe akzeptiert wird.
Importer-Knoten verwenden
Im folgenden Beispiel wird ein Importer-Knoten erstellt, der einen neuen Artefakteintrag in Vertex ML Metadata registriert. Der Importer-Knoten verwenden den URI und die Metadaten des Artefakts als Primitive und verpackt sie in einem Artefakt.
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'])
Funktionsbasierte Python-Komponenten verwenden
Im folgenden Beispiel wird gezeigt, wie ein Vertex ML-Metadatenartefakt direkt aus einer Python-Komponente ausgegeben wird.
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'])
Eigene containerbasierte Komponente verwenden
Das folgende Beispiel zeigt, wie Sie mithilfe der Dienstprogrammklasse artifact_types.py ein Artefakt VertexBatchPredictionJob als Ausgabe aus einer containerbasierten Komponente generieren.
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])