Questa pagina mostra come eseguire un job di addestramento in un'istanza Deep Learning Containers ed eseguire quell'immagine container su un cluster Google Kubernetes Engine.
Prima di iniziare
Prima di iniziare, assicurati di aver completato i seguenti passaggi.
Completa i passaggi di configurazione nella sezione Prima di iniziare di Introduzione a un container di deep learning locale.
Verifica che la fatturazione sia attivata per il tuo progetto Google Cloud .
Abilita le API Google Kubernetes Engine, Compute Engine e Artifact Registry.
Apri lo strumento a riga di comando.
Puoi seguire questa guida utilizzando
Cloud Shell o
gli strumenti a riga di comando in locale. Cloud Shell include gli strumenti a riga di comando gcloud
, docker
e kubectl
utilizzati in questo tutorial. Se utilizzi Cloud Shell, non è necessario installare questi strumenti a riga di comando sulla tua workstation.
Cloud Shell
Per utilizzare Cloud Shell, completa i seguenti passaggi.
Vai alla consoleGoogle Cloud .
Fai clic sul pulsante Attiva Cloud Shell nella parte superiore della finestra della console.
All'interno di un nuovo frame nella parte inferiore della console si apre una sessione di Cloud Shell e viene visualizzato un prompt della riga di comando.
Riga di comando locale
Per utilizzare la riga di comando locale, completa i seguenti passaggi.
Utilizzando gcloud CLI, installa lo strumento a riga di comando Kubernetes.
kubectl
viene utilizzato per comunicare con Kubernetes, il sistema di orchestrazione dei cluster dei cluster Deep Learning Containers:gcloud components install kubectl
Quando hai completato i passaggi iniziali, hai installato Google Cloud CLI e Docker.
Crea un cluster GKE
Esegui questo comando per creare un cluster a due nodi in GKE
denominato pytorch-training-cluster
:
gcloud container clusters create pytorch-training-cluster \
--num-nodes=2 \
--zone=us-west1-b \
--accelerator="type=nvidia-tesla-p100,count=1" \
--machine-type="n1-highmem-2" \
--scopes="gke-default,storage-rw"
Per saperne di più su queste impostazioni, consulta la documentazione sulla creazione di cluster per l'esecuzione di container.
La creazione del cluster potrebbe richiedere diversi minuti.
In alternativa, anziché creare un cluster, puoi utilizzare un cluster esistente nel tuo progetto Google Cloud . Se lo fai, potresti dover
eseguire il comando seguente per assicurarti che lo strumento a riga di comando kubectl
disponga delle credenziali appropriate per accedere al cluster:
gcloud container clusters get-credentials YOUR_EXISTING_CLUSTER
Successivamente, installa i driver del dispositivo GPU NVIDIA.
Crea il Dockerfile
Esistono molti modi per creare un'immagine container.
Questi passaggi mostrano come crearne uno per eseguire uno script Python
denominato trainer.py
.
Per visualizzare un elenco delle immagini container disponibili:
gcloud container images list \
--repository="us-docker.pkg.dev/deeplearning-platform-release/gcr.io"
Per scegliere il contenitore che preferisci, puoi consultare la sezione Scegliere un contenitore.
L'esempio seguente mostra come inserire uno script Python denominato
trainer.py
in un tipo di contenitore di deep learning PyTorch specifico.
Per creare il Dockerfile, scrivi i seguenti comandi in un file denominato
Dockerfile
. Questo passaggio presuppone che tu disponga di codice per addestrare un modello di machine learning in una directory denominata model-training-code
e che il modulo Python principale in quella directory sia denominato trainer.py
. In questo
scenario, il container verrà rimosso al termine del job, quindi
lo script di addestramento deve essere configurato per l'output in Cloud Storage (vedi
un esempio di script che genera output in
Cloud Storage)
o per l'output in
spazio di archiviazione permanente.
FROM us-docker.pkg.dev/deeplearning-platform-release/gcr.io/pytorch-gpu
COPY model-training-code /train
CMD ["python", "/train/trainer.py"]
Crea e carica l'immagine container
Per creare e caricare l'immagine container in Artifact Registry, utilizza i seguenti comandi:
export PROJECT_ID=$(gcloud config list project --format "value(core.project)")
export IMAGE_REPO_NAME=pytorch_custom_container
export IMAGE_TAG=$(date +%Y%m%d_%H%M%S)
export IMAGE_URI=us-docker.pkg.dev/$PROJECT_ID/$IMAGE_REPO_NAME:$IMAGE_TAG
docker build -f Dockerfile -t $IMAGE_URI ./
docker push $IMAGE_URI
Esegui il deployment dell'applicazione
Crea un file denominato pod.yaml con i seguenti contenuti, sostituendo IMAGE_URI con l'URI dell'immagine.
apiVersion: v1
kind: Pod
metadata:
name: gke-training-pod
spec:
containers:
- name: my-custom-container
image: IMAGE_URI
resources:
limits:
nvidia.com/gpu: 1
Utilizza lo strumento a riga di comando kubectl
per eseguire il comando seguente ed
eseguire il deployment dell'applicazione:
kubectl apply -f ./pod.yaml
Per monitorare lo stato del pod, esegui questo comando:
kubectl describe pod gke-training-pod