Alternative alla creazione di una distribuzione delle fonti
Questa guida illustra la creazione manuale di una distribuzione dell'origine e il caricamento in Cloud Storage. Prima di seguire la guida, prendi in considerazione i seguenti workflow alternativi, che potrebbero essere più pratici in alcuni casi:
Se vuoi eseguire l'addestramento utilizzando il codice sul tuo computer locale e ridurre al minimo la quantità di lavoro di packaging manuale, ti consigliamo di utilizzare la funzionalità di packaging automatico di Google Cloud CLI. Questa funzionalità ti consente di creare un'immagine container Docker, eseguirne il push su 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 packaging automatico, devi installare Docker sul tuo computer locale. Questa opzione ti consente solo di creare una risorsa
CustomJob
, non una risorsaTrainingPipeline
oHyperparameterTuningJob
. (Scopri di più sulle differenze tra le risorse di 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
della gcloud CLI per inserire il codice in un container ed eseguirlo in 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 unico 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 automaticamente pacchettizzato come distribuzione di origine e caricato in Cloud Storage.Per la massima flessibilità, puoi creare manualmente un'immagine container personalizzata ed eseguirne il push in Artifact Registry.
Se nessuna delle opzioni precedenti si adatta al tuo caso d'uso o se preferisci creare manualmente il pacchetto dell'applicazione di addestramento 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:
Sviluppa l'applicazione di addestramento utilizzando un framework di machine learning (ML) disponibile in uno dei container predefiniti di Vertex AI per l'addestramento. Assicurati che la tua richiesta di addestramento soddisfi i requisiti del codice di addestramento.
Se stai scrivendo l'applicazione di addestramento da zero, ti consigliamo di organizzare il codice in base alla struttura dell'applicazione descritta in una sezione successiva di questo documento.
Crea un bucket Cloud Storage nello stesso progetto Google Cloud in cui prevedi di utilizzare Vertex AI. In questo bucket archivierai l'applicazione di addestramento. Sebbene sia possibile utilizzare un bucket in un bucketGoogle Cloud diverso, ciò richiede una configurazione aggiuntiva al di fuori dell'ambito di questa guida.
Per ottenere le prestazioni migliori, assicurati che il bucket Cloud Storage si trovi nella posizione in cui prevedi di utilizzare Vertex AI.
Conosci tutte le librerie Python da 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, specifica questi valori nel campo
packageUris
.Crea un modulo in una di queste distribuzioni di origine che funge da punto di ingresso per l'addestramento.
Se utilizzi l'API Vertex AI per avviare l'addestramento personalizzato, specificarlo nel campo
pythonModule
.
Se soddisfi questi requisiti, puoi strutturare la tua applicazione di addestramento nel modo che preferisci. Tuttavia, ti consigliamo di creare una singola distribuzione di origine Python organizzando il codice nella seguente struttura (utilizzata spesso negli esempi di Vertex AI):
Utilizza 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.All'interno di
trainer/
, crea un modulo denominatotask.py
che funge da punto di ingresso per il codice di addestramento.Per supportare
trainer/task.py
, crea tutti i moduli Python aggiuntivi che vuoi nel pacchettotrainer/
e crea tutte le sottodirectory aggiuntive con il codice aggiuntivo che vuoi nella directory principale del progetto.Crea un file
__init__.py
in ogni sottodirectory per trasformarla in un pacchetto.
Il resto di questa guida presuppone che il codice sia organizzato in base a questa struttura.
Crea una distribuzione dell'origine
La creazione di distribuzioni di origine Python è un argomento ampio che esula in gran parte dall'ambito di questa documentazione. Per comodità, questa sezione fornisce una panoramica sull'utilizzo di Setuptools per creare una distribuzione di origine da utilizzare con Vertex AI. Esistono altre librerie che puoi utilizzare per fare la stessa cosa.
Crea un file
setup.py
che indica a Setuptools come creare la distribuzione dell'origine. Unsetup.py
di base include:Importa estratti conto per
setuptools.find_packages
esetuptools.setup
.Una chiamata a
setuptools.setup
con (almeno) questi parametri impostati:name
impostato sul nome della distribuzione di origine.version
impostato sul numero di versione di questa build della distribuzione dell'origine.install_requires
impostato su un elenco di dipendenze richieste dalla tua applicazione, con requisiti di versione, come'docutils>=0.3'
.packages
impostato sufind_packages()
. Setuptools include tutte le sottodirectory della directory principale che contengono un file__init__.py
come pacchetti.include_package_data
impostato suTrue
.
L'esempio seguente mostra un file
setup.py
di base per un'applicazione di allenamento: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 dell'origine,
dist/trainer-0.1.tar.gz
:python setup.py sdist --formats=gztar
Dipendenze delle applicazioni Python
Le dipendenze sono pacchetti che import
nel codice. La tua applicazione potrebbe
avere molte dipendenze necessarie per il suo funzionamento.
Per ogni replica nel job di addestramento personalizzato, il codice viene eseguito in un container con molte dipendenze Python comuni già installate. Controlla le dipendenze incluse nel container predefinito che prevedi di utilizzare per l'addestramento e annota le dipendenze non ancora installate. Devi completare i seguenti passaggi solo per le dipendenze che non sono già installate nel container precompilato.
Esistono due tipi di dipendenze che potresti dover aggiungere:
- Dipendenze standard, ovvero pacchetti di distribuzione comuni disponibili su PyPI
- Dipendenze personalizzate, come pacchetti sviluppati personalmente o interni a un'organizzazione.
Le sezioni seguenti descrivono la procedura per ogni tipo.
Dipendenze standard (PyPI)
Puoi specificare le dipendenze standard della tua applicazione come parte del relativo script setup.py
. Vertex AI utilizza pip
per installare l'applicazione di 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
indica 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 della tua applicazione passando i relativi percorsi
nell'ambito della configurazione del job. Devi disporre dell'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 proprie negli script setup.py
.
Ogni URI che includi è il percorso di una distribuzione di origine, formattato come
file tar (.tar.gz
) o come wheel (.whl
). Vertex AI installa ogni
dipendenza utilizzando pip install
su ogni replica
che alloca per il job di addestramento.
Se utilizzi l'API Vertex AI per avviare l'addestramento personalizzato, specifica gli URI Cloud Storage di queste dipendenze insieme all'applicazione di addestramento nel campo packageUris
.
Moduli Python
L'applicazione può contenere più moduli (file Python). Devi identificare il modulo che contiene il punto di ingresso dell'applicazione. Il servizio di addestramento esegue il modulo richiamando Python, proprio come faresti localmente.
Ad esempio, se segui la struttura consigliata in 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
. Pertanto, se utilizzi l'API Vertex AI per avviare l'addestramento personalizzato, imposta il campo moduleName
su trainer.task
.
Per saperne di più sui moduli, consulta la guida di Python ai pacchetti.
Carica la distribuzione dell'origine su Cloud Storage
Puoi utilizzare gcloud CLI per caricare la distribuzione dell'origine e le dipendenze personalizzate in 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 progettoGoogle Cloud .
Per scoprire altri modi per caricare la distribuzione dell'origine in Cloud Storage, leggi Caricamento di oggetti nella documentazione di Cloud Storage.
Passaggi successivi
- Scopri di più sui requisiti aggiuntivi del codice 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.