crea un'applicazione di addestramento Python per un container predefinito

Prima di poter eseguire l'addestramento personalizzato con un container predefinito, crea un'origine Python di distribuzione che contiene la tua applicazione di addestramento e caricarla in un a cui può accedere il tuo progetto Google Cloud.

Alternative alla creazione di una distribuzione di origine

Questa guida illustra come creare manualmente una distribuzione di origine e il relativo caricamento in Cloud Storage. Prima di seguire la guida, considera le seguenti flussi di lavoro alternativi, cosa che potrebbe essere più comoda 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 le parte di questa guida.

Prima di iniziare

Prima di preparare l'applicazione di addestramento per l'esecuzione nel cloud, completa segui questi passaggi:

  1. Sviluppa la tua applicazione di addestramento utilizzando un framework di machine learning (ML) disponibile in uno dei container predefiniti di Vertex AI per addestramento. Assicurati che il tuo corso di addestramento che l'applicazione soddisfi il codice di addestramento requisiti.

    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.

  2. 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 bucket Google Cloud, richiede una configurazione aggiuntiva al di fuori nell'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.

  3. Conoscere tutte le librerie Python da cui dipende l'applicazione di addestramento, che si tratti di dipendenze personalizzate o liberamente disponibili 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:

  • Creare un modulo in una di queste distribuzioni di origine che funga 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 le che segue per ottenere 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 denominato task.py che funga da per il tuo codice di addestramento.

  • Per supportare trainer/task.py, crea eventuali moduli Python aggiuntivi da includere nel pacchetto trainer/ e crea eventuali altre sottodirectory con del codice aggiuntivo che vuoi inserire nella directory principale del progetto.

  • Crea una __init__.py in ogni sottodirectory per trasformarla in un pacchetto.

Il resto della guida presuppone che il codice sia organizzato in base a queste alla struttura del centro di costo.

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

  1. Crea un file setup.py che indichi a Setuptools come creare l'origine distribuzione dei contenuti. Un setup.py di base include quanto segue:

    • Importa istruzioni 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 dell'origine distribuzione dei contenuti.

      • install_requires impostata su un elenco di dipendenze richieste da la tua applicazione, con i requisiti di versione, come 'docutils>=0.3'.

      • packages impostato su find_packages(). Questo indica a Setuptools includi tutte le sottodirectory della directory superiore che contengono un __init__.py come pacchetti.

      • 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 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 container molte dipendenze Python comuni già installate. Controlla le dipendenze incluso nel container predefinito che intendi utilizzare per l'addestramento e prendi nota delle eventuali dipendenze è già installata. Devi completare solo i seguenti passaggi per e dipendenze che non sono già installate nel container predefinito.

Potresti dover aggiungere due tipi di dipendenze:

  • Dipendenze standard, ovvero pacchetti di distribuzione comuni disponibili PyPI
  • Dipendenze personalizzate, come i 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 del suo Script setup.py. Vertex AI utilizza pip per installare l'addestramento sulle repliche che alloca per il job. La pip install cerca le dipendenze configurate e le installa.

L'esempio seguente mostra un setup.py simile a quello di un 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 della tua applicazione passando i relativi percorsi come della configurazione del job. Devi avere l'URI della distribuzione di origine ciascuna dipendenza. Le dipendenze personalizzate devono essere Percorso di 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 URI Cloud Storage di queste dipendenze insieme all'addestramento in packageUris .

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 è trainer.task. Quindi, se utilizzi l'API Vertex AI per avviare di addestramento, imposta la classe moduleName campo a trainer.task.

Fai riferimento alla guida Python per pacchi per ulteriori informazioni sui moduli.

Carica la distribuzione di origine su Cloud Storage

Puoi utilizzare lo strumento gsutil per caricare l'origine distribuzione e qualsiasi dipendenza personalizzata in un bucket Cloud Storage. Per esempio:

gsutil 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 Il progetto Google Cloud può accedere.

Per scoprire altri modi per caricare la distribuzione di origine in Cloud Storage, leggi Caricamento oggettiin Cloud Storage documentazione.

Passaggi successivi