Puoi utilizzare il comando gcloud ai custom-jobs local-run
per creare un Docker
dell'immagine container in base al codice di addestramento
dal computer locale. Questa funzionalità offre vari vantaggi:
Consente di creare un'immagine container con poche conoscenze di Docker. Non devi e scrivere personalmente il Dockerfile. In seguito puoi eseguire il push di questa immagine Artifact Registry e utilizzarlo per il container personalizzato addestramento.
Per casi d'uso avanzati, potrebbe comunque essere utile scrivere Dockerfile.
L'immagine container può eseguire un'applicazione di addestramento Python o uno script Bash.
Puoi usare uno script Bash per eseguire codice di addestramento scritto in un'altra programmazione (purché specifichi anche un'immagine container di base che supporti il in un'altra lingua).
L'esecuzione in locale di un container permette di eseguire il codice di addestramento in modo simile su come viene eseguito su Vertex AI.
L'esecuzione in locale del codice è utile per eseguire il debug dei problemi con il codice prima di eseguire l'addestramento personalizzato su Vertex AI.
Prima di iniziare
Configura lo sviluppo di Vertex AI completamente gestito di Google Cloud.
Se utilizzi Linux, configura Docker in modo da poterlo eseguire senza
sudo
.Il comando
local-run
richiede questa configurazione per utilizzare Docker.
Usa il comando local-run
Esegui questo comando per creare un'immagine container basata sul tuo addestramento ed esegui un container in locale:
gcloud ai custom-jobs local-run \
--executor-image-uri=BASE_IMAGE_URI \
--local-package-path=WORKING_DIRECTORY \
--script=SCRIPT_PATH \
--output-image-uri=OUTPUT_IMAGE_NAME
Sostituisci quanto segue:
BASE_IMAGE_URI: l'URI di un'immagine Docker da utilizzare come base del containerizzato. Scegli un'immagine di base che includa le dipendenze necessarie per il tuo di addestramento personalizzato.
Puoi utilizzare l'URI di un addestramento predefinito container o qualsiasi altro valore sarebbe valido per un Dockerfile
FROM
istruzioni; ad esempio un'immagine Docker disponibile pubblicamente in Artifact Registry che hai a cui accedono.WORKING_DIRECTORY: la directory di livello più basso nel file system che contenga tutto il codice di addestramento e le dipendenze locali necessarie per l'addestramento.
Per impostazione predefinita, il comando copia solo la directory superiore del file specificato dal flag
--script
(vedi la seguente voce dell'elenco) nel Docker risultante dell'immagine. L'immagine Docker non include necessariamente tutti i file all'interno WORKING_DIRECTORY; per personalizzare i file da includere, consulta di questo documento sull'inclusione delle dipendenze.Se ometti il flag
--local-package-path
(e questo segnaposto), il valore Il comandolocal-run
utilizza la directory di lavoro attuale per questo valore.SCRIPT_PATH: il percorso relativo a WORKING_DIRECTORY nel tuo file locale di addestramento, allo script che rappresenta il punto di ingresso del codice di addestramento. Può essere uno script Python (che termina con
.py
) o uno script Bash.Ad esempio, se vuoi eseguire
/hello-world/trainer/task.py
e WORKING_DIRECTORY è/hello-world
, poi usatrainer/task.py
per questo valore.Se specifichi uno script Python, l'immagine di base deve avere Python e se specifichi uno script bash, l'immagine di base deve avere Bash installato. (tutti i container di addestramento predefiniti e molti altri le immagini Docker disponibili includono entrambe le dipendenze.)
Usa
--python-module
anziché--script
Se ometti il flag
--script
(e SCRIPT_PATH), devi: usa invece il flag--python-module
per specificare il nome di un modulo Python in WORKING_DIRECTORY affinché venga eseguito come punto di ingresso per l'addestramento. Per esempio, invece di--script=trainer/task.py
, potresti specificare--python-module=trainer.task
.In questo caso, il container Docker risultante carica il codice come modulo piuttosto che come script. Ti consigliamo di utilizzare questa opzione se lo script del punto di ingresso importa altre Moduli Python in WORKING_DIRECTORY.
OUTPUT_IMAGE_NAME: un nome per l'immagine Docker creata da il comando. Puoi utilizzare qualsiasi valore accettato dai
-t
didocker build
.Se prevedi di eseguire in un secondo momento il push dell'immagine ad Artifact Registry, ti consigliamo per utilizzare un nome immagine che soddisfi i requisiti di Artifact Registry. In alternativa, puoi contrassegnare l'immagine con nomi aggiuntivi in un secondo momento.
Se ometti il flag
--output-image-uri
(e questo segnaposto), il valore Il comandolocal-run
contrassegna l'immagine con un nome basato sull'ora corrente e nome file dello script del punto di ingresso.
Il comando crea un'immagine container Docker in base alla tua configurazione. Dopo il giorno creando l'immagine, il comando visualizza il seguente output:
A training image is built.
Starting to run ...
Il comando quindi utilizza immediatamente questa immagine container per eseguire un container dal computer locale. All'uscita del container, il comando visualizza quanto segue :
A local run is finished successfully using custom image: OUTPUT_IMAGE_NAME
Opzioni aggiuntive
Le seguenti sezioni descrivono ulteriori opzioni che puoi utilizzare per personalizzare
il comportamento del comando local-run
.
Installa le dipendenze
Il codice di addestramento può basarsi su qualsiasi dipendenza installata nell'immagine di base
Ad esempio, container di addestramento predefinito
includono molte librerie Python per il machine learning), nonché eventuali file
che includi nell'immagine Docker creata dal comando local-run
.
Se specifichi uno script con il flag --script
o --python-module
, il comando copia la directory superiore dello script (e le relative sottodirectory)
nell'immagine Docker. Ad esempio, se specifichi
--local-package-path=/hello-world
e --script=trainer/task.py
, poi
il comando copia /hello-world/trainer/
nell'immagine Docker.
Puoi anche includere dipendenze Python aggiuntive o file arbitrari da file system completando i passaggi aggiuntivi descritti in uno dei seguenti sezioni:
- Utilizzo di un file
requirements.txt
per le dipendenze Python - Utilizzo di un file
setup.py
per le dipendenze Python - Specifica delle singole dipendenze PyPI
- Specifica delle dipendenze Python locali
- Includi altri file
Installa dipendenze Python aggiuntive
Puoi includere ulteriori dipendenze Python nell'immagine Docker in diversi modi:
Usa un file requirements.txt
Se nella directory di lavoro è presente un file denominato requirements.txt
, allora
Il comando local-run
lo considera come un requisiti pip
e lo utilizza per installare le dipendenze Python nell'immagine Docker.
Usa un file setup.py
Se nella directory di lavoro è presente un file denominato setup.py
, allora
Il comando local-run
lo considera come un Python setup.py
, copia il file nell'immagine Docker ed esegue pip install
nella directory dell'immagine Docker
che contiene il file.
Ad esempio, puoi aggiungere una install_requires
a setup.py
per installare le dipendenze Python nel
Docker.
Specifica le singole dipendenze PyPI
Puoi usare il flag --requirements
per installare dipendenze specifiche
PyPI nell'immagine Docker. Ad esempio:
gcloud ai custom-jobs local-run \
--executor-image-uri=BASE_IMAGE_URI \
--local-package-path=WORKING_DIRECTORY \
--script=SCRIPT_PATH \
--output-image-uri=OUTPUT_IMAGE_NAME \
--requirements=REQUIREMENTS
Sostituisci REQUIREMENTS con un elenco separato da virgole di Python requisito specifici.
Specifica dipendenze Python locali aggiuntive
Puoi utilizzare il flag --extra-packages
per installare specifici modelli Python
delle dipendenze. Queste dipendenze Python devono trovarsi nella directory di lavoro e
ciascuna dipendenza deve essere in un formato
pip install
supporta; ad esempio, una ruota
o un origine Python
distribuzione dei contenuti.
Ad esempio:
gcloud ai custom-jobs local-run \
--executor-image-uri=BASE_IMAGE_URI \
--local-package-path=WORKING_DIRECTORY \
--script=SCRIPT_PATH \
--output-image-uri=OUTPUT_IMAGE_NAME \
--extra-packages=LOCAL_DEPENDENCIES
Sostituisci LOCAL_DEPENDENCIES con un elenco di valori locali separati da virgole percorsi dei file, espressi in relazione alla directory di lavoro.
Includi altri file
Per copiare directory aggiuntive nell'immagine Docker (senza installarle come
(dipendenze Python), puoi usare il flag --extra-dirs
. Puoi specificare solo
all'interno della directory di lavoro. Ad esempio:
gcloud ai custom-jobs local-run \
--executor-image-uri=BASE_IMAGE_URI \
--local-package-path=WORKING_DIRECTORY \
--script=SCRIPT_PATH \
--output-image-uri=OUTPUT_IMAGE_NAME \
--extra-dirs=EXTRA_DIRECTORIES
Sostituisci EXTRA_DIRECTORIES con un elenco di valori locali separati da virgole delle directory di lavoro, espresse in relazione alla directory di lavoro.
Argomenti dell'applicazione di addestramento
Se lo script del punto di ingresso per l'applicazione di addestramento prevede
puoi specificare questi argomenti quando esegui il comando local-run
. Questi argomenti
non vengono salvati nell'immagine Docker; piuttosto che vengano passati come argomenti
l'immagine viene eseguita come container.
Per trasmettere argomenti allo script del punto di ingresso, passa l'argomento --
seguito da
gli argomenti dello script al comando local-run
dopo tutte le altre
e i flag facoltativi.
Immagina ad esempio uno script da eseguire localmente con il seguente comando:
python /hello-world/trainer/task.py \
--learning_rate=0.1 \
--input_data=gs://BUCKET/small-dataset/
Quando utilizzi il comando local-run
, puoi usare i seguenti flag per eseguire
nello script nel container con gli stessi argomenti:
gcloud ai custom-jobs local-run \\
--executor-image-uri=BASE_IMAGE_URI \
--local-package-path=/hello-world \
--script=/trainer/task.py \
--output-image-uri=OUTPUT_IMAGE_NAME \
-- \
--learning_rate=0.1 \
--input_data=gs://BUCKET/small-dataset/
Accelera l'addestramento dei modelli con le GPU
Se alla fine vuoi eseguire il deployment dell'immagine Docker creata dal comando local-run
a Vertex AI e utilizzare le GPU per
addestramento, quindi assicurati di
scrivi codice di addestramento che sfrutta
GPU e utilizzano
Immagine Docker abilitata per GPU per il valore del flag --executor-image-uri
. Per
puoi utilizzare uno degli strumenti di addestramento predefiniti
immagini container che supportano le GPU.
Se il tuo computer locale esegue Linux e dispone di GPU, puoi anche configurare
local-run
per utilizzare le tue GPU quando esegue un container in locale. Questo è
facoltativo, ma può essere utile se vuoi testare il funzionamento del codice di addestramento
con le GPU. Segui questi passaggi:
Installa NVIDIA Container Toolkit (
nvidia-docker
) sul computer locale, se non l'hai ancora fatto.Specifica il flag
--gpu
quando esegui il comandolocal-run
. Ad esempio:gcloud ai custom-jobs local-run \ --executor-image-uri=BASE_IMAGE_URI \ --local-package-path=WORKING_DIRECTORY \ --script=SCRIPT_PATH \ --output-image-uri=OUTPUT_IMAGE_NAME \ --gpu
Specifica un account di servizio personalizzato
Per impostazione predefinita, quando il comando local-run
esegue il codice di addestramento in un container locale,
monta le credenziali Google Cloud disponibili nel tuo ambiente locale
tramite Credenziali predefinite dell'applicazione
(ADC) nel container,
che il codice di addestramento possa utilizzare ADC per l'autenticazione con
e credenziali. In altre parole, le credenziali disponibili da ADC nel tuo account
sono disponibili anche da ADC per il tuo codice quando esegui il comando local-run
.
Puoi utilizzare lo strumento gcloud auth application-default login
comando per utilizzare l'utente
ADC oppure puoi impostare una variabile di ambiente nella shell per utilizzare
per ADC.
Se vuoi che il container venga eseguito con credenziali Google Cloud diverse da disponibili da ADC nella shell locale:
Crea o seleziona un servizio account con le autorizzazioni a cui vuoi che abbia accesso il tuo codice di addestramento.
Scaricare un account di servizio chiave per questo servizio sul tuo computer locale.
Quando esegui il comando
local-run
, specifica--service-account-key-file
flag. Ad esempio:gcloud ai custom-jobs local-run \ --executor-image-uri=BASE_IMAGE_URI \ --local-package-path=WORKING_DIRECTORY \ --script=SCRIPT_PATH \ --output-image-uri=OUTPUT_IMAGE_NAME \ --service-account-key-file=KEY_PATH
Sostituisci KEY_PATH con il percorso della chiave dell'account di servizio nel file system locale. Deve essere assoluto o relativo al lavoro attuale della tua shell, non è relativa alla directory specificata Flag
--local-package-path
.
Nel container risultante, il codice di addestramento può utilizzare ADC per l'autenticazione le credenziali dell'account di servizio specificate.
Confronto con l'addestramento su Vertex AI
Quando esegui l'addestramento personalizzato su Vertex AI, Vertex AI utilizza l'agente di servizio del codice personalizzato Vertex AI per progetto per impostazione predefinita. Puoi anche collegare un altro servizio personalizzato per l'addestramento personalizzato.
Quando utilizzi il comando local-run
, non puoi eseguire l'autenticazione come agente di servizio del codice personalizzato Vertex AI.
ma puoi creare un account di servizio con autorizzazioni simili e usarlo
a livello locale.
Passaggi successivi
Scopri di più sui requisiti per la formazione Google Cloud.
Scopri come eseguire il push dell'immagine Docker in Artifact Registry e Usalo come container personalizzato per l'addestramento su Vertex AI.