Cette page explique comment exécuter une tâche d'entraînement dans une instance Deep Learning Containers et exécuter cette image de conteneur sur un cluster Google Kubernetes Engine.
Avant de commencer
Avant de commencer, assurez-vous d'avoir effectué les étapes suivantes.
Suivez les étapes de configuration de la section "Avant de commencer" de la page Premiers pas avec un conteneur de deep learning local.
Vérifiez que la facturation est activée pour votre projet Google Cloud.
Activez les API Google Kubernetes Engine, Compute Engine et Container Registry.
Ouvrez l'outil de ligne de commande
Vous pouvez suivre ce guide en utilisant
Cloud Shell ou
des outils de ligne de commande locaux. Cloud Shell est préinstallé
à l'aide des outils de ligne de commande gcloud
, docker
et kubectl
utilisés ;
dans ce tutoriel. Si vous utilisez Cloud Shell, vous n'avez pas besoin
installer ces outils de ligne de commande
sur votre poste de travail.
Cloud Shell
Pour utiliser Cloud Shell, procédez comme suit.
Accédez à Google Cloud Console.
Cliquez sur le bouton Activer Cloud Shell en haut de la fenêtre de la console.
Une session Cloud Shell s'ouvre dans un nouveau cadre en bas de la console et affiche une invite de ligne de commande.
Ligne de commande locale
Pour utiliser votre ligne de commande locale, procédez comme suit.
À l'aide de gcloud CLI, installez l'outil de ligne de commande Kubernetes.
kubectl
permet de communiquer avec Kubernetes, le système d'orchestration de clusters pour les clusters de conteneurs de deep learning :gcloud components install kubectl
Vous avez installé Google Cloud CLI et Docker lorsque vous avez terminé le guide de démarrage étapes.
Créer un cluster GKE
Exécutez la commande suivante pour créer un cluster à deux nœuds dans GKE nommé 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"
Pour en savoir plus sur ces paramètres, consultez la documentation sur la création de clusters pour l'exécution de conteneurs.
La création du cluster peut prendre plusieurs minutes.
Au lieu de créer un cluster, vous pouvez utiliser un cluster existant dans votre projet Google Cloud. Dans ce cas, vous devrez peut-être exécuter la commande suivante pour vous assurer que l'outil de ligne de commande kubectl
dispose des identifiants appropriés pour accéder à votre cluster :
gcloud container clusters get-credentials YOUR_EXISTING_CLUSTER
Ensuite, installez les pilotes de GPU NVIDIA.
Créer le fichier Dockerfile
Il existe de nombreuses façons de créer une image de conteneur.
Ces étapes vous montrent comment créer une image pour exécuter un script Python nommé trainer.py
.
Pour afficher la liste des images de conteneurs disponibles, procédez comme suit :
gcloud container images list \
--repository="gcr.io/deeplearning-platform-release"
Consultez la page Choisir un conteneur pour vous aider à sélectionner le conteneur de votre choix.
L'exemple suivant montre comment placer un script Python nommé trainer.py
dans un type de conteneur de deep learning PyTorch spécifique.
Pour créer le Dockerfile, écrivez les commandes suivantes dans un fichier nommé Dockerfile
. Cette étape suppose que vous disposez de code pour entraîner un modèle de machine learning dans un répertoire nommé model-training-code
et que le module Python principal de ce répertoire est nommé trainer.py
. Dans ce scénario, le conteneur sera supprimé une fois la tâche terminée. Vous devez donc configurer votre script d'entraînement pour qu'il renvoie vers Cloud Storage (consultez un exemple de script qui renvoie vers Cloud Storage) ou vers un stockage persistant.
FROM gcr.io/deeplearning-platform-release/pytorch-gpu
COPY model-training-code /train
CMD ["python", "/train/trainer.py"]
Créer et importer l'image de conteneur
Pour créer et importer l'image de conteneur dans Container Registry, utilisez les commandes suivantes :
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
Déployer votre application
Créez un fichier nommé pod.yaml avec le contenu suivant, en remplaçant IMAGE_URI par l'URI de votre image.
apiVersion: v1
kind: Pod
metadata:
name: gke-training-pod
spec:
containers:
- name: my-custom-container
image: IMAGE_URI
resources:
limits:
nvidia.com/gpu: 1
Utilisez l'outil de ligne de commande kubectl
pour exécuter la commande suivante et déployer votre application :
kubectl apply -f ./pod.yaml
Pour suivre l'état du pod, exécutez la commande suivante :
kubectl describe pod gke-training-pod