L'utilizzo di un'immagine container personalizzata offre la massima flessibilità per l'addestramento su Gemini Enterprise Agent Platform. Per scoprire in che modo l'utilizzo di un'immagine container personalizzata differisce da un'applicazione di addestramento Python con un container predefinito, consulta Requisiti del codice di addestramento.
La guida illustra i seguenti passaggi:
- Creazione di un container personalizzato:
- Scrittura di un Dockerfile che configura il container per funzionare con Agent Platform e include le dipendenze necessarie per l'applicazione di addestramento.
- Creazione ed esecuzione del container Docker in locale.
- Push dell'immagine container in Artifact Registry.
Prima di iniziare
Per configurare un repository API Artifact Registry e configurare Docker nel tuo ambiente di sviluppo ambiente, segui la guida rapida di Artifact Registry per Docker. In particolare, assicurati di completare i seguenti passaggi della guida rapida:
- Prima di iniziare
- Scegli una shell
- Crea un repository Docker
- Configura l'autenticazione
Crea un'immagine container personalizzata
Ti consigliamo due possibili flussi di lavoro per creare un'immagine container personalizzata:
Scrivi il codice di addestramento. Poi, utilizza il comando
local-rundella gcloud CLI per creare e testare un'immagine container personalizzata basata sul codice di addestramento senza scrivere tu stesso un Dockerfile.Questo flusso di lavoro può essere più semplice se non hai familiarità con Docker. Se segui questo flusso di lavoro, puoi saltare il resto di questa sezione.
Scrivi il codice di addestramento. Poi, scrivi un Dockerfile e crea un'immagine container basata su di esso. Infine, testa il container in locale.
Questo flusso di lavoro offre maggiore flessibilità, perché puoi personalizzare l'immagine container quanto vuoi.
Il resto di questa sezione illustra un esempio del secondo flusso di lavoro.
Codice di addestramento
Puoi scrivere codice di addestramento utilizzando qualsiasi dipendenza in qualsiasi linguaggio di programmazione. Assicurati che il codice soddisfi i requisiti del codice di addestramento. Se prevedi di utilizzare l'ottimizzazione degli iperparametri, le GPU o l'addestramento distribuito, assicurati di leggere le sezioni corrispondenti di questo documento. Queste sezioni descrivono considerazioni specifiche per l'utilizzo delle funzionalità con container personalizzati.
Crea un Dockerfile
Crea un Dockerfile per specificare tutte le istruzioni necessarie per creare l'immagine container.
Questa sezione illustra la creazione di un esempio generico di Dockerfile da utilizzare per l'addestramento serverless. Per scoprire di più sulla creazione di un' immagine container, consulta la guida rapida della documentazione di Docker.
Per l'utilizzo con Agent Platform, il Dockerfile deve includere comandi che coprano le seguenti attività:
- Scegli un'immagine di base
- Installa dipendenze aggiuntive
- Copia il codice di addestramento nell'immagine
- Configura il punto di ingresso per Agent Platform per richiamare il codice di addestramento
Il Dockerfile può includere logica aggiuntiva, a seconda delle tue esigenze. Per ulteriori informazioni su ogni istruzione specifica, consulta il riferimento Dockerfile.
| Comando Dockerfile | Descrizione | Esempio/i |
|---|---|---|
FROM image:tag |
Specifica un'immagine di base e il relativo tag. | Esempi di immagini di base con tag:
|
WORKDIR /path/to/directory |
Specifica la directory dell'immagine in cui vengono eseguite le istruzioni successive sono eseguite. | /root |
|
Installa pacchetti aggiuntivi utilizzando pip.Nota: se l'immagine di base non ha |
Esempi di pacchetti:
|
COPY src/training-app.py dest/training-app.py |
Copia il codice dell'applicazione di addestramento nell'immagine. A seconda della struttura dell'applicazione di addestramento, è probabile che includa più file. | Esempi di nomi di file nell'applicazione di addestramento:
|
|
Configura il punto di ingresso per richiamare il codice di addestramento da eseguire. Quando
avvii l'addestramento serverless, puoi sostituire questo punto di ingresso specificando il campo command in ContainerSpec. Puoi anche specificare il
args campo in ContainerSpec per fornire
argomenti aggiuntivi al punto di ingresso (e sostituire l'istruzione CMD dell'immagine
container, se ne ha una). |
["python", "task.py"] |
La logica del Dockerfile può variare in base alle tue esigenze, ma in generale è simile a questa:
# Specifies base image and tag FROM image:tag WORKDIR /root # Installs additional packages RUN pip install pkg1 pkg2 pkg3 # Downloads training data RUN curl https://example-url/path-to-data/data-filename --output /root/data-filename # Copies the trainer code to the docker image. COPY your-path-to/model.py /root/model.py COPY your-path-to/task.py /root/task.py # Sets up the entry point to invoke the trainer. ENTRYPOINT ["python", "task.py"]
(Facoltativo) Modifica il Dockerfile per le VM TPU
Se vuoi eseguire l'addestramento su Agent Platform utilizzando una VM TPU, devi modificare il Dockerfile per installare versioni create appositamente delle librerie tensorflow e libtpu. Scopri di più sulla modifica del container per l'utilizzo con
una VM TPU.
Crea l'immagine container
Crea l'URI dell'immagine corretto utilizzando le variabili di ambiente, quindi crea l'immagine Docker:
export PROJECT_ID=$(gcloud config list project --format "value(core.project)")
export REPO_NAME=REPOSITORY_NAME
export IMAGE_NAME=IMAGE_NAME
export IMAGE_TAG=IMAGE_TAG
export IMAGE_URI=us-central1-docker.pkg.dev/${PROJECT_ID}/${REPO_NAME}/${IMAGE_NAME}:${IMAGE_TAG}
docker build -f Dockerfile -t ${IMAGE_URI} ./
In questi comandi sostituisci quanto segue:
- REPOSITORY_NAME: il nome del repository Artifact Registry che hai creato nella sezione Prima di iniziare.
- IMAGE_NAME: un nome a tua scelta per l'immagine container.
- IMAGE_TAG: un tag a tua scelta per questa versione dell'immagine container.
Scopri di più sui requisiti di Artifact Registry per la denominazione dell'immagine container.
Esegui il container in locale (facoltativo)
Verifica l'immagine container eseguendola come container in locale. Probabilmente vorrai eseguire il codice di addestramento su un set di dati più piccolo o per un numero inferiore di iterazioni rispetto a quelle che prevedi di eseguire su Agent Platform. Ad esempio, se lo
script del punto di ingresso nell'immagine container accetta un flag --epochs per controllare
il numero di epoche
da eseguire, puoi eseguire il seguente comando:
docker run ${IMAGE_URI} --epochs 1
Esegui il push del container in Artifact Registry
Se l'esecuzione locale funziona, puoi eseguire il push del container in Artifact Registry.
Innanzitutto, esegui
gcloud auth configure-docker us-central1-docker.pkg.dev se
non l'hai già fatto nel tuo ambiente di sviluppo. Poi esegui il seguente comando:
docker push ${IMAGE_URI}
Autorizzazioni di Artifact Registry
Se utilizzi un'immagine di Artifact Registry dallo stesso Google Cloud progetto in cui utilizzi Agent Platform, allora non è necessario configurare ulteriormente le autorizzazioni. Puoi immediatamente creare un job di addestramento serverless che utilizza l'immagine container.
Tuttavia, se hai eseguito il push dell'immagine container in Artifact Registry in un progetto diverso Google Cloud da quello in cui prevedi di utilizzare Agent Platform, devi concedere all' agente di servizio Agent Platform per il tuo progetto Agent Platform l'autorizzazione a eseguire il pull dell' immagine dall'altro progetto. Scopri di più sull'agente di servizio Agent Platform e su come concedergli le autorizzazioni.
Artifact Registry
Per scoprire come concedere all'agente di servizio Agent Platform l'accesso al repository Artifact Registry, consulta la documentazione di Artifact Registry su come concedere autorizzazioni specifiche per il repository.
Passaggi successivi
- Scopri di più su i concetti relativi all'utilizzo dei container.
- Scopri di più sui requisiti aggiuntivi del codice di addestramento per l'addestramento serverless.
- Scopri come creare un job di addestramento serverless o una pipeline di addestramento che utilizza il container personalizzato.