Vertex AI Pipelines ti consente di orchestrare il tuo machine learning (ML) dei flussi di lavoro con un approccio serverless. Prima che Vertex AI Pipelines possa orchestrare il flusso di lavoro ML, devi descrivere il flusso di lavoro come una pipeline. ML Le pipeline sono flussi di lavoro ML portatili e scalabili basati su container e i servizi Google Cloud.
Questa guida descrive come iniziare a creare pipeline ML.
Quale SDK per le pipeline devo utilizzare?
Vertex AI Pipelines può eseguire pipeline create utilizzando uno dei seguenti SDK:
SDK Kubeflow Pipelines 1.8 o versione successiva (opzione consigliata v2)
TensorFlow Extended v0.30.0 o versioni successive
Se usi TensorFlow in un flusso di lavoro ML che elabora terabyte di dati di testo o strutturati, ti consigliamo di creare la pipeline utilizzando TFX.
- Per scoprire di più sulla creazione di una pipeline TFX, segui le Tutorial introduttivo su TFX.
- Per saperne di più sull'uso di Vertex AI Pipelines per eseguire un pipeline TFX, segui TFX Tutorial di Google Cloud.
Per altri casi d'uso, ti consigliamo di creare la pipeline utilizzando SDK Kubeflow Pipelines. Creando una pipeline con l'SDK Kubeflow Pipelines, puoi implementare il tuo flusso di lavoro creando componenti personalizzati o riutilizzando predefiniti, come i componenti della pipeline di Google Cloud. I componenti della pipeline di Google Cloud semplificano l'utilizzo dei servizi Vertex AI come AutoML nella tua pipeline.
Questa guida descrive come creare pipeline utilizzando l'SDK Kubeflow Pipelines.
Prima di iniziare
Prima di creare ed eseguire le pipeline, utilizza le seguenti istruzioni per impostare per il tuo progetto e l'ambiente di sviluppo di Google Cloud.
Per preparare il progetto Google Cloud all'esecuzione delle pipeline ML, segui le istruzioni nella guida per configurare progetto Google Cloud.
Per creare la pipeline utilizzando l'SDK Kubeflow Pipelines, installa il SDK Kubeflow Pipelines 1.8 o versioni successive.
Per utilizzare il client Python di Vertex AI nelle tue pipeline, installa il Librerie client di Vertex AI v1.7 o successive.
Per utilizzare i servizi Vertex AI nelle tue pipeline, installa il SDK dei componenti della pipeline di Google Cloud.
Inizia a creare una pipeline
Per orchestrare il flusso di lavoro ML su Vertex AI Pipelines, deve prima descrivere il flusso di lavoro come pipeline. Il seguente esempio dimostra come utilizzare i componenti della pipeline di Google Cloud con Vertex AI per creare addestrare un modello con AutoML ed eseguire il deployment del modello addestrato per le previsioni.
Prima di eseguire il seguente esempio di codice, devi configurare l'autenticazione.
Come configurare l'autenticazione
Per configurare l'autenticazione, devi creare una chiave dell'account di servizio e impostare un ambiente per il percorso della chiave dell'account di servizio.
-
Crea un account di servizio:
-
Nella console Google Cloud, vai alla pagina Crea account di servizio.
- Inserisci un nome nel campo Nome account di servizio.
- (Facoltativo) Nel campo Descrizione account di servizio, inserisci una descrizione.
- Fai clic su Crea.
- Fai clic sul campo Seleziona un ruolo. In Tutti i ruoli, seleziona Vertex AI > Utente Vertex AI.
-
Fai clic su Fine per creare l'account di servizio.
Non chiudere la finestra del browser. Lo utilizzerai nel passaggio successivo.
-
-
Crea una chiave dell'account di servizio per l'autenticazione:
- Nella console Google Cloud, fai clic sull'indirizzo email dell'account di servizio è stato creato.
- Fai clic su Chiavi.
- Fai clic su Aggiungi chiave, quindi su Crea nuova chiave.
- Fai clic su Crea. Sul computer viene scaricato un file della chiave JSON.
- Fai clic su Chiudi.
- Concedi al tuo nuovo account di servizio l'accesso all'account di servizio che utilizzi per eseguire le pipeline.
- Fai clic su per tornare alla di un elenco di account di servizio.
Fai clic sul nome dell'account di servizio che utilizzi per eseguire le pipeline. La Viene visualizzata la pagina Dettagli account di servizio.
Se hai seguito le istruzioni nella guida per la configurazione del progetto per Vertex AI Pipelines, si tratta dello stesso account di servizio che hai creato Configura un account di servizio con autorizzazioni granulari. Altrimenti, Vertex AI utilizza Account di servizio predefinito di Compute Engine per l'esecuzione delle pipeline. L'impostazione predefinita di Compute Engine l'account di servizio ha il seguente nome:
PROJECT_NUMBER-compute@developer.gserviceaccount.com
- Fai clic sulla scheda Autorizzazioni.
- Fai clic su Concedi accesso. Riquadro Aggiungi entità .
- Nella casella Nuove entità, inserisci l'indirizzo email del servizio creato in un passaggio precedente.
- Nell'elenco a discesa Ruolo, seleziona Account di servizio > Utente con account di servizio.
- Fai clic su Salva.
-
Imposta la variabile di ambiente GOOGLE_APPLICATION_CREDENTIALS al percorso del file JSON contenente la chiave dell'account di servizio. Questa variabile si applica solo alla sessione di shell corrente, quindi se apri una nuova sessione, imposta di nuovo la variabile.
Esempio: Linux o macOS
Sostituisci [PATH] con il percorso del file JSON che contiene la chiave dell'account di servizio.
export GOOGLE_APPLICATION_CREDENTIALS="[PATH]"
Ad esempio:
export GOOGLE_APPLICATION_CREDENTIALS="/home/user/Downloads/service-account-file.json"
Esempio: Windows
Sostituisci [PATH] con il percorso del file JSON che contiene la chiave dell'account di servizio e [FILE_NAME] con nome file.
Con PowerShell:
$env:GOOGLE_APPLICATION_CREDENTIALS="[PATH]"
Ad esempio:
$env:GOOGLE_APPLICATION_CREDENTIALS="C:\Users\username\Downloads\[FILE_NAME].json"
Con il prompt dei comandi:
set GOOGLE_APPLICATION_CREDENTIALS=[PATH]
Definisci il flusso di lavoro con il pacchetto DSL Kubeflow Pipelines
Il pacchetto kfp.dsl
contiene la lingua specifica del dominio (DSL) che puoi
per definire e interagire
con pipeline e componenti.
I componenti della pipeline di Kubeflow sono funzioni predefinite che creano
passaggi. Ogni componente descrive gli input, gli output e l'implementazione del
di strumento di authoring. Nell'esempio di codice riportato di seguito, ds_op
è un componente.
I componenti vengono utilizzati per creare i passaggi della pipeline. Quando viene eseguita una pipeline, vengono eseguiti man mano che i dati da cui dipendono diventano disponibili. Ad esempio, un componente di addestramento potrebbe prendere un file CSV come input e usare per addestrare un modello.
import kfp
from google.cloud import aiplatform
from google_cloud_pipeline_components.v1.dataset import ImageDatasetCreateOp
from google_cloud_pipeline_components.v1.automl.training_job import AutoMLImageTrainingJobRunOp
from google_cloud_pipeline_components.v1.endpoint import EndpointCreateOp, ModelDeployOp
project_id = PROJECT_ID
pipeline_root_path = PIPELINE_ROOT
# Define the workflow of the pipeline.
@kfp.dsl.pipeline(
name="automl-image-training-v2",
pipeline_root=pipeline_root_path)
def pipeline(project_id: str):
# The first step of your workflow is a dataset generator.
# This step takes a Google Cloud Pipeline Component, providing the necessary
# input arguments, and uses the Python variable `ds_op` to define its
# output. Note that here the `ds_op` only stores the definition of the
# output but not the actual returned object from the execution. The value
# of the object is not accessible at the dsl.pipeline level, and can only be
# retrieved by providing it as the input to a downstream component.
ds_op = ImageDatasetCreateOp(
project=project_id,
display_name="flowers",
gcs_source="gs://cloud-samples-data/vision/automl_classification/flowers/all_data_v2.csv",
import_schema_uri=aiplatform.schema.dataset.ioformat.image.single_label_classification,
)
# The second step is a model training component. It takes the dataset
# outputted from the first step, supplies it as an input argument to the
# component (see `dataset=ds_op.outputs["dataset"]`), and will put its
# outputs into `training_job_run_op`.
training_job_run_op = AutoMLImageTrainingJobRunOp(
project=project_id,
display_name="train-iris-automl-mbsdk-1",
prediction_type="classification",
model_type="CLOUD",
dataset=ds_op.outputs["dataset"],
model_display_name="iris-classification-model-mbsdk",
training_fraction_split=0.6,
validation_fraction_split=0.2,
test_fraction_split=0.2,
budget_milli_node_hours=8000,
)
# The third and fourth step are for deploying the model.
create_endpoint_op = EndpointCreateOp(
project=project_id,
display_name = "create-endpoint",
)
model_deploy_op = ModelDeployOp(
model=training_job_run_op.outputs["model"],
endpoint=create_endpoint_op.outputs['endpoint'],
automatic_resources_min_replica_count=1,
automatic_resources_max_replica_count=1,
)
Sostituisci quanto segue:
- PROJECT_ID: il progetto Google Cloud in cui viene eseguita questa pipeline.
PIPELINE_ROOT_PATH: specifica un URI Cloud Storage che l'account di servizio delle pipeline può accedere. Gli artefatti le esecuzioni della pipeline vengono archiviate nella radice della pipeline.
La radice della pipeline può essere impostata come argomento della classe
@kfp.dsl.pipeline
sulla funzione della pipeline, oppure può essere impostata quando chiamicreate_run_from_job_spec
per creare un'esecuzione della pipeline.
Compila la pipeline in un file YAML
Dopo aver definito il flusso di lavoro della pipeline, puoi proseguire con la compilazione in formato YAML. Il file YAML include tutte le informazioni per l'esecuzione della pipeline su Vertex AI Pipelines.
from kfp import compiler
compiler.Compiler().compile(
pipeline_func=pipeline,
package_path='image_classif_pipeline.yaml'
)
Invia l'esecuzione della pipeline
Dopo aver compilato il flusso di lavoro della pipeline in formato YAML, puoi utilizzare il client Python di Vertex AI per inviare ed eseguire la pipeline.
import google.cloud.aiplatform as aip
# Before initializing, make sure to set the GOOGLE_APPLICATION_CREDENTIALS
# environment variable to the path of your service account.
aip.init(
project=project_id,
location=PROJECT_REGION,
)
# Prepare the pipeline job
job = aip.PipelineJob(
display_name="automl-image-training-v2",
template_path="image_classif_pipeline.yaml",
pipeline_root=pipeline_root_path,
parameter_values={
'project_id': project_id
}
)
job.submit()
Sostituisci quanto segue:
- PROJECT_REGION: la regione in cui viene eseguita questa pipeline.
Nell'esempio precedente:
- Una pipeline Kubeflow è definita come funzione Python.
La funzione è annotata con il decorator
@kfp.dsl.pipeline
, che specifica il nome e il percorso principale della pipeline. Il percorso principale della pipeline località in cui sono archiviati gli artefatti della pipeline. - I passaggi del flusso di lavoro della pipeline vengono creati utilizzando i componenti della pipeline di Google Cloud. Utilizzando gli output di un componente
come input di un altro componente, definisci il flusso di lavoro della pipeline come
grafico. Ad esempio:
training_job_run_op
dipende dadataset
dids_op
. - La pipeline viene compilata utilizzando
kfp.compiler.Compiler
. - Puoi creare una pipeline eseguita su Vertex AI Pipelines utilizzando il client Python di Vertex AI. Quando esegui una pipeline, puoi eseguire l'override il nome e il percorso principale della pipeline. Le esecuzioni della pipeline possono essere raggruppate utilizzando il nome della pipeline. L'override del nome della pipeline può aiutarti distinguere tra esecuzioni della pipeline in produzione e sperimentali.
Per scoprire di più sulla creazione delle pipeline, leggi il post sulla creazione di Kubeflow pipeline e segui gli esempi e tutorial.
Testa una pipeline in locale (facoltativo)
Dopo aver definito le pipeline e i componenti, puoi testare il codice del componente eseguendo il codice nell'ambiente di creazione locale. Eseguendo o un componente in locale, puoi identificare potenziali problemi ed eseguirne il debug prima di creare un'esecuzione pipeline in un ambiente come Vertex AI Pipelines, Per ulteriori informazioni l'esecuzione locale di pipeline e componenti, Esecuzione locale nella documentazione di KFP.
Questa pagina mostra come definire ed eseguire una pipeline composta da due attività.
Configura il tuo ambiente locale
Installa l'ultima versione secondaria di SDK Kubeflow Pipelines (KFP) v2:
pip install --upgrade kfp>=2,<3
(Facoltativo) Installa Docker.
Utilizza il seguente esempio di codice per definire una pipeline semplice:
from kfp import dsl # Define a component to add two numbers. @dsl.component def add(a: int, b: int) -> int: return a + b # Define a simple pipeline using the component. @dsl.pipeline def addition_pipeline(x: int, y: int, z: int) -> int: task1 = add(a=x, b=y) task2 = add(a=task1.output, b=z) return task2.output
Richiama un'esecuzione locale
Inizializza una sessione locale utilizzando la funzione local.init()
. Quando utilizzi
local.init()
, l'SDK KFP esegue localmente le pipeline e i componenti quando
tu li chiami.
Quando utilizzi local.init()
, devi specificare un tipo di runner. Il tipo di runner
indica in che modo KFP deve eseguire ciascuna attività.
Utilizza l'esempio seguente per specificare il tipo di runner DockerRunner
per eseguire ogni attività in un container. Per ulteriori informazioni sui runner locali supportati
di KFP, consulta Runner locali.
nella documentazione di KFP.
from kfp import local
local.init(runner=local.DockerRunner())
pipeline_task = addition_pipeline(x=1, y=2, z=3)
Usa il seguente codice per visualizzare l'output dell'attività della pipeline al momento dell'esecuzione locale:
print(f'Result: {pipeline_task.output}')
Creazione di pipeline Kubeflow
Usa il seguente processo per creare una pipeline.
Progetta la pipeline come una serie di componenti. Per favorire la riusabilità, deve avere una singola responsabilità. Quando è possibile, progetta la tua pipeline per riutilizzare componenti comprovati come i componenti della pipeline di Google Cloud.
Crea tutti i componenti personalizzati necessari per implementare il flusso di lavoro ML usando l'SDK Kubeflow Pipelines. I componenti sono insiemi di codice autonomi che eseguire una fase del flusso di lavoro ML. Utilizza le seguenti opzioni per creare i tuoi componenti della pipeline.
Pacchettizzare il codice del componente come un'immagine container. Questa opzione ti consente di includere nella pipeline codice scritto in qualsiasi linguaggio in grado come immagine container.
Scopri come creare una pipeline Kubeflow di strumento di authoring.
Implementa il codice del componente come funzione Python autonoma e utilizza l'SDK Kubeflow Pipelines per pacchettizzare la funzione come componente. Questo semplifica la creazione dei componenti basati su Python.
Scopri come creare una build basata su funzioni Python componenti.
Crea la tua pipeline come una funzione Python.
Scopri di più sulla definizione della pipeline come Python personalizzata.
Usa il compilatore SDK Kubeflow Pipelines per compilare la pipeline.
from kfp import compiler compiler.Compiler().compile( pipeline_func=PIPELINE_FUNCTION, package_path=PIPELINE_PACKAGE_PATH)
Sostituisci quanto segue:
- PIPELINE_FUNCTION: il nome della funzione della pipeline.
- PIPELINE_PACKAGE_PATH: il percorso in cui archiviare i tuoi una pipeline compilata.
Esegui la pipeline utilizzando la console Google Cloud o Python.
Accesso alle risorse Google Cloud in una pipeline
Se non specifichi un account di servizio quando esegui una pipeline, Vertex AI Pipelines utilizza il servizio predefinito di Compute Engine l'account di servizio per eseguire la pipeline. Vertex AI Pipelines utilizza anche l'account di servizio dell'esecuzione della pipeline per autorizzare la pipeline ad accedere dell'accesso a specifiche risorse Google Cloud. L'account di servizio predefinito il ruolo Editor progetto per impostazione predefinita. Questa operazione potrebbe concedere ai tuoi l'accesso eccessivo alle risorse Google Cloud nel tuo progetto Google Cloud.
Scopri di più sull'utilizzo di Identity and Access Management per creare un account di servizio e gestire l'accesso concesso a un account di servizio.
Mantieni aggiornate le pipeline
I client SDK e le immagini container che utilizzi per creare ed eseguire le pipeline aggiornati periodicamente alle nuove versioni per applicare patch alle vulnerabilità di sicurezza e aggiungere nuove funzionalità. Per mantenere aggiornate le tue pipeline con la versione più recente, ti consigliamo di procedere nel seguente modo:
Rivedi le norme di supporto del framework Vertex AI e Elenco di framework supportati.
Iscriviti alle note di rilascio di Vertex AI e Feed RSS di PyPi.org per gli SDK che utilizzi (SDK Kubeflow Pipelines, SDK dei componenti della pipeline di Google Cloud oppure L'SDK TensorFlow Extended) per rimanere al corrente delle nuove release.
Se hai una definizione o un modello di pipeline che fa riferimento a un container con vulnerabilità di sicurezza, dovresti procedere nel seguente modo:
Installa l'ultima versione dell'SDK con la patch.
Ricrea e ricompila il modello o la definizione della pipeline.
Ricarica il modello o la definizione in Artifact Registry o Cloud Storage.
Passaggi successivi
- Leggi l'introduzione a Vertex AI Pipelines per saperne di più di più sull'orchestrazione dei flussi di lavoro ML.
- Scopri come eseguire una pipeline.
- Visualizza e analizza i risultati della pipeline viene eseguito.