Questa pagina mostra come eseguire un job di addestramento in un Deep Learning Containers ed eseguirla 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 della sezione Come iniziare. è iniziato con un deep learning locale container.
Verifica che la fatturazione sia attivata per il tuo progetto Google Cloud.
Abilita le API Google Kubernetes Engine, Compute Engine e Container Registry.
Apri lo strumento a riga di comando
Puoi seguire questa guida utilizzando
Cloud Shell o
a riga di comando locale. Cloud Shell è preinstallato
con gli strumenti a riga di comando gcloud
, docker
e kubectl
utilizzati
in questo tutorial. Se utilizzi Cloud Shell, non è necessario
sulla workstation.
Cloud Shell
Per utilizzare Cloud Shell, completa i seguenti passaggi.
Vai alla console Google Cloud.
Fai clic sul pulsante Attiva Cloud Shell nella parte superiore della console finestra.
Una sessione di Cloud Shell si apre all'interno di un nuovo frame in basso della console e visualizza 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 Strumento a riga di comando Kubernetes.
kubectl
viene utilizzato per comunicare con Kubernetes, ovvero di orchestrazione dei cluster dei cluster Deep Learning Containers:gcloud components install kubectl
Hai installato Google Cloud CLI Docker già quando hai completato la guida introduttiva passaggi.
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 ulteriori informazioni su queste impostazioni, consulta la documentazione sulla creazione cluster per l'esecuzione containerizzati.
La creazione del cluster potrebbe richiedere diversi minuti.
In alternativa, invece di creare un cluster, puoi utilizzare un modello
nel tuo progetto Google Cloud. In questo caso, potresti avere bisogno
di eseguire questo comando 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
A questo punto, installa il dispositivo GPU NVIDIA driver.
crea il Dockerfile
Esistono molti modi per creare un'immagine container.
Questi passaggi ti mostreranno come crearne uno per eseguire Python
script denominato trainer.py
.
Per visualizzare un elenco delle immagini container disponibili:
gcloud container images list \
--repository="gcr.io/deeplearning-platform-release"
Ti consigliamo di andare a Scegliere un container per aiutarti a selezionare il container che preferisci.
L'esempio seguente ti mostrerà come inserire uno script Python denominato
trainer.py
in un tipo di container di deep learning PyTorch specifico.
Per creare il dockerfile, scrivi i comandi seguenti in un file denominato
Dockerfile
. Questo passaggio presuppone che tu disponga del codice per addestrare una macchina
di machine learning in una directory denominata model-training-code
e che
il modulo Python principale in quella directory è denominato trainer.py
. In questo
questo scenario, il container verrà rimosso al termine del job,
lo script di addestramento deve essere configurato per l'output a Cloud Storage (vedi
un esempio di script che restituisce
Cloud Storage
o l'output nello spazio di archiviazione permanente.
FROM gcr.io/deeplearning-platform-release/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 Container Registry, usa questi 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=gcr.io/$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 il contenuto seguente, 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
Usa lo strumento a riga di comando kubectl
per eseguire questo comando e
esegui il deployment della tua applicazione:
kubectl apply -f ./pod.yaml
Per monitorare lo stato del pod, esegui questo comando:
kubectl describe pod gke-training-pod