Crea un'applicazione di addestramento Python per un container predefinito

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 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:

  1. 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 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.

  2. Crea un bucket Cloud Storage nello stesso progetto Google Cloud in cui prevedi di utilizzare Vertex AI. Archivierà l'applicazione di addestramento in questo 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 le migliori prestazioni, assicurati che il bucket Cloud Storage si trovi nella posizione in cui prevedi di utilizzare Vertex AI.

  3. Devi conoscere tutte le librerie Python di cui dipende la tua applicazione di addestramento, indipendentemente dal fatto 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 accesso per l'addestramento.

    Se utilizzi l'API Vertex AI per avviare l'addestramento personalizzato, specificalo nel pythonModule campo.

A condizione che soddisfi questi requisiti, puoi strutturare la tua domanda di formazione come preferisci. Tuttavia, ti consigliamo di creare una singola distribuzione di codice di origine Python organizzando il codice nella seguente struttura (utilizzata di frequente nei sample di Vertex AI):

  • Utilizza una directory del progetto principale contenente il file setup.py. Per indicazioni sui contenuti di questo file, consulta la sezione seguente.

  • Nella directory del progetto principale, crea una sottodirectory denominata trainer/ che funge da pacchetto principale per il codice di addestramento.

  • In trainer/, crea un modulo denominato task.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 pacchetto trainer/ 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 esula in gran parte dall'ambito di questa documentazione. Per comodità, questa sezione fornisce una panoramica dell'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.

  1. Crea un file setup.py che indichi a Setuptools come creare la distribuzione di origine. Un setup.py di base include:

    • Dichiarazioni di importazione per setuptools.find_packages e setuptools.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 della distribuzione di origine.

      • install_requires impostato su un elenco di dipendenze richieste dalla tua applicazione, con i requisiti della versione, ad esempio 'docutils>=0.3'.

      • packages impostato su find_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 su True.

    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.'
    )
    
  2. Esegui il seguente comando per creare una distribuzione di 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 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, ad esempio pacchetti sviluppati autonomamente o quelli 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'applicazione di addestramento sulle repliche allocate per il tuo 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 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 da poter avere le proprie dipendenze standard nei propri script setup.py.

Ogni URI incluso è il percorso di una distribuzione di origine, formattato come tarball (.tar.gz) o come wheel (.whl). Vertex AI installa ogni dipendenza utilizzando pip install su ogni replica allocata per il 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 accesso dell'applicazione. Il servizio di addestramento esegue il modulo chiamando Python, proprio come faresti in locale.

Ad esempio, se segui la struttura consigliata di una sezione precedente, il tuo 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 ulteriori informazioni sui moduli, consulta la guida di Python ai pacchetti.

Carica la distribuzione di origine su Cloud Storage

Puoi utilizzare l'interfaccia a riga di comando gcloud per caricare la distribuzione di origine e eventuali 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 progetto Google Cloud.

Per scoprire altri modi per caricare la distribuzione di origine su Cloud Storage, consulta Caricare oggetti nella documentazione di Cloud Storage.

Passaggi successivi