Prima di poter eseguire l'addestramento personalizzato con un container predefinito, devi creare una distribuzione di codice Python contenente l'applicazione di addestramento e caricarla in un bucket Cloud Storage a cui può accedere il tuo progetto Google Cloud.
Alternative alla creazione di una distribuzione delle origini
Questa guida illustra la procedura per creare manualmente una distribuzione di origine e caricarla su Cloud Storage. Prima di seguire la guida, valuta i seguenti flussi di lavoro alternativi, che potrebbero essere più pratici in alcuni casi:
Se vuoi eseguire l'addestramento utilizzando il codice sul tuo computer locale e ridurre al massimo il lavoro di imballaggio manuale, ti consigliamo di utilizzare la funzionalità di imballaggio automatico della CLI Google Cloud. Questa funzionalità ti consente di creare un'immagine container Docker, eseguirne il push in Artifact Registry e creare una risorsa
CustomJob
basata sull'immagine container, il tutto con un unico comando. Scopri di più nella guida alla creazione di unCustomJob
.Per utilizzare il pacchettizzazione automatica, devi installare Docker sul tuo computer locale. Questa opzione ti consente di creare solo una risorsa
CustomJob
, nonTrainingPipeline
oHyperparameterTuningJob
. Scopri le differenze tra le risorse per l'addestramento personalizzato.Per personalizzare ulteriormente l'immagine container ed eseguire il codice in un container in locale prima di eseguirlo su Vertex AI, puoi utilizzare Il comando
local-run
dell'interfaccia a riga di comando gcloud CLI per containerizzare il tuo codice ed eseguire a livello locale. Poi puoi eseguire manualmente il push dell'immagine in Artifact Registry.Per utilizzare il comando
local-run
, devi installare Docker sul tuo computer locale.Se puoi scrivere il codice di addestramento in un singolo script Python, puoi utilizzare la classe
CustomJob
dell'SDK Vertex AI per Python per creare un job personalizzato o la classeCustomTrainingJob
per creare unTrainingPipeline
personalizzato. Il codice di addestramento viene pacchettizzato automaticamente come distribuzione di origine e caricato su Cloud Storage.Per la massima flessibilità, puoi creare manualmente un container personalizzato ed eseguirne il push in Artifact Registry.
Se nessuna delle opzioni precedenti è adatta al tuo caso d'uso o se preferisci impacchettare manualmente l'applicazione di formazione come distribuzione di origine, segui il resto di questa guida.
Prima di iniziare
Prima di preparare l'applicazione di addestramento per l'esecuzione nel cloud, completa i seguenti passaggi:
Sviluppare l'applicazione di addestramento utilizzando un framework di machine learning (ML) disponibile in uno dei container predefiniti per l'addestramento di Vertex AI. Assicurati che la tua applicazione di formazione soddisfi i requisiti del codice di formazione.
Se scrivi l'applicazione di addestramento da zero, ti consigliamo di il codice in base alla struttura dell'applicazione descritti nella sezione che segue di questo documento.
Crea un bucket Cloud Storage in lo stesso progetto Google Cloud in cui prevedi di utilizzare Vertex AI. Ora memorizzerai l'applicazione di addestramento di sincronizzare la directory di una VM con un bucket. Sebbene sia possibile utilizzare un bucket in un altro bucket Google Cloud, questa operazione richiede una configurazione aggiuntiva al di fuori dell'ambito di questa guida.
Per ottenere prestazioni ottimali, assicurati che il bucket Cloud Storage sia in La località in cui prevedi di utilizzare Vertex AI.
Devi conoscere tutte le librerie Python di cui dipende la tua applicazione di addestramento, che si tratti di dipendenze personalizzate o disponibili gratuitamente tramite PyPI.
Struttura dell'applicazione
Quando esegui l'addestramento personalizzato utilizzando un container predefinito, devi specificare il codice di addestramento in base ai seguenti requisiti:
Fornisci il codice come una o più distribuzioni di origine Python.
Se utilizzi l'API Vertex AI per avviare l'addestramento personalizzato, specificali nel Campo
packageUris
:Crea un modulo in una di queste distribuzioni di origine che funge da punto di accesso per l'addestramento.
Se utilizzi l'API Vertex AI per avviare specificalo nel
pythonModule
.
Se soddisfi questi requisiti, puoi strutturare la tua formazione dell'applicazione nel modo che desideri. Tuttavia, ti consigliamo di creare un'unica Distribuzione del codice sorgente Python organizzando il codice nella seguente struttura (opzione spesso utilizzata nei campioni di Vertex AI):
Usa una directory di progetto principale contenente il file
setup.py
. Consulta la sezione seguente per indicazioni sui contenuti di questo file.All'interno della directory principale del progetto, crea una sottodirectory denominata
trainer/
che funge da pacchetto principale per il codice di addestramento.In
trainer/
, crea un modulo denominatotask.py
che funge da punto di ingresso per il codice di addestramento.Per supportare
trainer/task.py
, crea eventuali moduli Python aggiuntivi che vuoi nel pacchettotrainer/
e eventuali sottodirectory aggiuntive con il codice aggiuntivo che vuoi nella directory del progetto principale.Crea un
__init__.py
file in ogni sottodirectory per creare un pacchetto.
Il resto di questa guida presuppone che il codice sia organizzato in base a questa struttura.
Creare una distribuzione di origine
La creazione di distribuzioni di codice sorgente Python è un argomento ampio, che esulano dall'ambito di questa documentazione. Per praticità, questa sezione fornisce una panoramica sull'utilizzo di Setuptools per creare un'origine da usare con Vertex AI. Esistono altre librerie usare per fare la stessa cosa.
Crea un file
setup.py
che indichi a Setuptools come creare la distribuzione di origine. Unsetup.py
di base include:Dichiarazioni di importazione per
setuptools.find_packages
esetuptools.setup
.Una chiamata a
setuptools.setup
con almeno i seguenti parametri impostati:name
impostato sul nome della distribuzione di origine.version
impostato sul numero di versione di questa build dell'origine distribuzione dei contenuti.install_requires
impostato su un elenco di dipendenze richieste dalla tua applicazione, con i requisiti della versione, ad esempio'docutils>=0.3'
.packages
impostato sufind_packages()
. Questo indica a Setuptools di includere come pacchetti tutte le sottodirectory della directory principale che contengono un file__init__.py
.include_package_data
impostato suTrue
.
L'esempio seguente mostra un file
setup.py
di base per un'applicazione di addestramento:from setuptools import find_packages from setuptools import setup setup( name='trainer', version='0.1', packages=find_packages(), include_package_data=True, description='My training application.' )
Esegui questo comando per creare una distribuzione di origine,
dist/trainer-0.1.tar.gz
:python setup.py sdist --formats=gztar
Dipendenze dell'applicazione Python
Le dipendenze sono pacchetti che import
nel codice. La tua applicazione potrebbe
ha molte dipendenze necessarie per farla funzionare.
Per ogni replica nel job di addestramento personalizzato, il codice viene eseguito in un contenitore con molte dipendenze Python comuni già installate. Controlla le dipendenze incluse nel container predefinito che prevedi di utilizzare per l'addestramento e prendi nota di eventuali dipendenze non ancora installate. Devi completare i seguenti passaggi solo per le dipendenze non già installate nel contenitore precompilato.
Potresti dover aggiungere due tipi di dipendenze:
- Dipendenze standard, ovvero pacchetti di distribuzione comuni disponibili su PyPI
- Dipendenze personalizzate, come i pacchetti sviluppati da te o interni a un'organizzazione.
Le sezioni seguenti descrivono la procedura per ciascun tipo.
Dipendenze standard (PyPI)
Puoi specificare le dipendenze standard dell'applicazione nell'ambito dello script setup.py
. Vertex AI utilizza pip
per installare l'addestramento
sulle repliche che alloca per il job. Il comando
pip install
cerca le dipendenze configurate e le installa.
L'esempio seguente mostra un setup.py
simile a quello di una sezione precedente. Tuttavia, questo setup.py
dice a Vertex AI di installare
some_PyPI_package
quando installa l'applicazione di addestramento:
from setuptools import find_packages
from setuptools import setup
REQUIRED_PACKAGES = ['some_PyPI_package>=1.0']
setup(
name='trainer',
version='0.1',
install_requires=REQUIRED_PACKAGES,
packages=find_packages(),
include_package_data=True,
description='My training application.'
)
Dipendenze personalizzate
Puoi specificare le dipendenze personalizzate dell'applicazione passando i relativi percorsi come parte della configurazione del job. Devi avere l'URI della distribuzione di origine di ogni dipendenza. Le dipendenze personalizzate devono trovarsi in una posizione Cloud Storage. Vertex AI utilizza
pip install
per installare dipendenze personalizzate, in modo che possano avere dipendenze standard
nei rispettivi script setup.py
.
Ogni URI che includi è il percorso di una distribuzione di origine, formattato come
tarball (.tar.gz
) o come ruota (.whl
). Vertex AI installa ogni
utilizzando pip install
su ogni replica
allocato per il tuo job di addestramento.
Se utilizzi l'API Vertex AI per avviare l'addestramento personalizzato, specifica gli URI di Cloud Storage per queste dipendenze insieme all'applicazione di addestramento nel packageUris
campo.
Moduli Python
L'applicazione può contenere più moduli (file Python). Devi identificare il modulo che contiene il punto di ingresso dell'applicazione. La formazione esegue il modulo richiamando Python, così come lo eseguiresti in locale.
Ad esempio, se segui la struttura consigliata di una sezione precedente,
il modulo principale è task.py
. Poiché si trova all'interno di un pacchetto di importazione (directory con un file __init__.py
) denominato trainer
, il nome completo di questo modulo è trainer.task
. Quindi, se utilizzi l'API Vertex AI per avviare
l'addestramento, imposta moduleName
campo a trainer.task
.
Per ulteriori informazioni sui moduli, consulta la guida di Python ai pacchetti.
Carica la distribuzione di origine su Cloud Storage
Puoi utilizzare gcloud CLI per caricare il codice sorgente distribuzione e qualsiasi dipendenza personalizzata a un bucket Cloud Storage. Ad esempio:
gcloud storage cp dist/trainer-0.1.tar.gz CLOUD_STORAGE_DIRECTORY
Sostituisci CLOUD_STORAGE_DIRECTORY con l'URI (che inizia con gs://
e termina con /
) di una directory Cloud Storage in un bucket a cui può accedere il tuo
progetto Google Cloud.
Per scoprire altri modi per caricare la distribuzione di origine in Cloud Storage, leggi Caricamento oggettiin Cloud Storage documentazione.
Passaggi successivi
- Scopri di più sul codice di addestramento di addestramento per l'addestramento personalizzato.
- Scopri come creare un job di addestramento personalizzato o una pipeline di addestramento personalizzato che utilizza la tua applicazione di addestramento.