Creazione di un'applicazione di addestramento Python per un container predefinito

Prima di poter eseguire l'addestramento serverless di Vertex AI con un container predefinito, devi creare una distribuzione di origine Python che contenga l'applicazione di addestramento e caricarla in un bucket Cloud Storage a cui il tuo Google Cloud progetto può accedere.

Alternative alla creazione di una distribuzione di origine

Questa guida illustra la creazione manuale di una distribuzione di origine e il suo caricamento in Cloud Storage. Prima di seguire la guida, prendi in considerazione i seguenti flussi di lavoro alternativi, che potrebbero essere più convenienti in alcuni casi:

Se nessuna delle opzioni precedenti è adatta al tuo caso d'uso o se preferisci pacchettizzare manualmente l'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:

  1. Sviluppa l'applicazione di addestramento utilizzando un framework di machine learning (ML) disponibile in uno dei container predefiniti di Agent Platform per l'addestramento. Assicurati che l'applicazione di addestramento soddisfi i requisiti del codice di addestramento.

    Se stai scrivendo l'applicazione di addestramento da zero, ti consigliamo che organizzi il codice in base alla struttura dell'applicazione descritta in una sezione successiva di questo documento.

  2. Crea un bucket Cloud Storage nello stesso Google Cloud progetto in cui prevedi di utilizzare Agent Platform. In questo bucket memorizzerai l'applicazione di addestramento. (Sebbene sia possibile utilizzare un bucket in un diverso Google Cloud bucket, questa operazione richiede una configurazione aggiuntiva al di fuori dell' ambito di questa guida.)

    Per ottenere prestazioni ottimali, assicurati che il bucket Cloud Storage si trovi in posizione dove prevedi di utilizzare Agent Platform.

  3. Conosci tutte le librerie Python da cui dipende l'applicazione di addestramento, sia che si tratti di dipendenze personalizzate sia che siano disponibili senza costi tramite PyPI.

Struttura dell'applicazione

Quando esegui l'addestramento serverless 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 Agent Platform per avviare l'addestramento serverless, specifica questi valori nel packageUris campo.

  • Crea un modulo in una di queste distribuzioni di origine che funga da punto di ingresso per l'addestramento.

    Se utilizzi l'API Agent Platform per avviare l'addestramento personalizzato, specifica questo valore nel pythonModule campo.

Se soddisfi questi requisiti, puoi strutturare l'applicazione di addestramento nel modo che preferisci. Tuttavia, ti consigliamo di creare una singola distribuzione di origine Python organizzando il codice nella seguente struttura (che viene spesso utilizzata negli esempi di Agent Platform):

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

  • Nella directory di 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 tutti i moduli Python aggiuntivi che vuoi nel pacchetto trainer/ e crea tutte le sottodirectory aggiuntive con quel codice aggiuntivo che vuoi nella directory di progetto principale.

  • Crea un __init__.py file in ogni sottodirectory per trasformarla in 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 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 Agent Platform. 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 file setup.py di base include quanto segue:

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

      • install_requires impostato su un elenco di dipendenze richieste da l'applicazione, con requisiti di versione, ad esempio 'docutils>=0.3'.

      • packages impostato su find_packages(). In questo modo, Setuptools include 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 dell'applicazione Python

Le dipendenze sono pacchetti che import nel codice. L'applicazione potrebbe avere molte dipendenze necessarie per il suo funzionamento.

Per ogni replica nel job di addestramento serverless, 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 prendi nota di eventuali dipendenze non ancora installate. Devi completare i seguenti passaggi solo per le dipendenze non ancora installate nel container predefinito.

Esistono due tipi di dipendenze che potresti dover aggiungere:

  • Dipendenze standard, ovvero pacchetti di distribuzione comuni disponibili su PyPI
  • Dipendenze personalizzate, ad esempio pacchetti sviluppati da te o interni a un'organizzazione.

Le sezioni seguenti descrivono la procedura per ogni tipo.

Dipendenze standard (PyPI)

Puoi specificare le dipendenze standard dell'applicazione come parte dello script setup.py. Agent Platform utilizza pip per installare l'applicazione di addestramento sulle repliche che alloca per il job. Il pip install comando cerca le dipendenze configurate e le installa.

L'esempio seguente mostra un file setup.py simile a quello di una sezione precedente. Tuttavia, questo file setup.py indica ad Agent Platform 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. Ti serve l'URI della distribuzione di origine di ogni dipendenza. Le dipendenze personalizzate devono trovarsi in una località Cloud Storage. Agent Platform uses pip install per installare le dipendenze personalizzate, quindi queste possono avere dipendenze standard proprie negli script setup.py.

Ogni URI incluso è il percorso di una distribuzione di origine, formattata come un file tar (.tar.gz) o come una wheel (.whl). Agent Platform installa ogni dipendenza utilizzando pip install su ogni replica che alloca per il job di addestramento.

Se utilizzi l'API Agent Platform per avviare l'addestramento serverless, specifica gli URI Cloud Storage di 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. Il servizio di addestramento esegue il modulo richiamando Python, proprio come faresti in locale.

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. Quindi, se utilizzi l'API Agent Platform per avviare l'addestramento personalizzato , imposta il moduleName campo su trainer.task.

Per ulteriori informazioni sui moduli, consulta la guida di Python ai pacchetti.

Caricare la distribuzione di origine in Cloud Storage

Puoi utilizzare gcloud CLI per caricare la distribuzione di origine e tutte 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 il tuo Google Cloud progetto può accedere.

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

Passaggi successivi