Déployer et utiliser un conteneur de deep learning

Un conteneur de deep learning (DL) est un conteneur Docker avec des frameworks, des bibliothèques et des outils de science des données préinstallés. Un utilisateur, tel qu'un data scientist, choisit un seul conteneur de DL et le déploie. Le conteneur déployé dispose d'un environnement cohérent et optimisé pour les performances, qui permet de créer rapidement des prototypes et d'implémenter des workflows.

Déployer un conteneur de DL

Avant d'utiliser un conteneur de deep learning, vous devez choisir et déployer une image de conteneur qui exécute votre tâche de machine learning (ML). Des frameworks, des bibliothèques et des outils préinstallés provisionnent un conteneur de DL.

Déployer un conteneur de DL à l'aide de fichiers kubeconfig

L'appliance Google Distributed Cloud (GDC) sous air gap fournit le fichier kubeconfig suivant qui déploie votre conteneur de DL :

  • CLUSTER_KUBECONFIG : fichier kubeconfig du cluster Kubernetes sur métal nu. GDC fournit un cluster pour toutes les charges de travail.

Pour en savoir plus sur la connexion à l'UI et à l'outil kubectl, consultez Se connecter. Pour récupérer le fichier CLUSTER_KUBECONFIG, consultez Obtenir un fichier kubeconfig.

Télécharger l'exemple de script et d'ensemble de données de machine learning (ML)

Téléchargez l'exemple de script ML, beginner.ipynb, et l'ensemble de données, mnist.npz, pour exécuter le tutoriel de démarrage rapide sur le ML. Ce tutoriel explique comment déployer et utiliser un conteneur de deep learning pour exécuter des expériences de ML.

mkdir -p /tmp/datasets
cd /tmp/datasets

wget --no-check-certificate
https://GDC_APPLIANCE_URL/.well-known/static/dl-container-tutorial/beginner.ipynb

wget --no-check-certificate
https://GDC_APPLIANCE_URL/.well-known/static/dl-container-tutorial/mnist.npz

Remplacez GDC_APPLIANCE_URL par le nom de domaine utilisé pour accéder à GDC. Lorsque vous ouvrez une URL pour la première fois, GDC vous redirige vers la page de connexion de votre fournisseur d'identité.

Rechercher l'adresse IP du registre Harbor

Avant d'utiliser l'exemple de script et d'ensemble de données, vous devez trouver l'emplacement de l'image de conteneur DL dans le registre Harbor. Le registre Harbor est un service qui stocke des images de conteneurs privés.

La première ligne de l'exemple de code définit le chemin d'accès de la variable d'environnement KUBECONFIG, qui récupère l'adresse du registre Harbor. L'adresse du registre Harbor permet d'accéder à une liste d'images de conteneurs disponibles.

Dans la deuxième ligne de l'exemple de code, l'outil kubectl utilise la variable d'environnement KUBECONFIG.

Dans la troisième ligne de l'exemple de code, la commande REGISTRY_URL#https:// supprime le préfixe https:// de l'URL et stocke le domaine du registre Harbor dans la variable d'environnement REGISTRY_IP.

Dans la dernière ligne de l'exemple de code, l'outil kubectl récupère le mot de passe de l'utilisateur admin.

export KUBECONFIG=CLUSTER_KUBECONFIG

REGISTRY_URL=$(kubectl get harborcluster harbor -n harbor-system -o=jsonpath='{.spec.externalURL}')
REGISTRY_IP=${REGISTRY_URL#https://}
ADMIN_PASS=$(kubectl -n harbor-system get secret harbor-admin -o jsonpath="{.data.secret}" | base64 -d)

Choisir une image de conteneur

Vous devez choisir une image de conteneur à déployer avant de pouvoir exécuter une tâche de ML. Utilisez le domaine du registre Harbor et le chemin d'accès du registre Harbor dans le tableau suivant pour afficher la liste des images de conteneur disponibles :

Framework Processeur Nom de l'image de conteneur
Couches GPU base-cu113
Couches Processeur base-cpu
TensorFlow Enterprise 2.x GPU tf2-gpu
PyTorch GPU pytorch-gpu

Ce tableau est organisé par framework et par processeur. Pour choisir une image de conteneur DL capable de traiter votre expérience de ML, procédez comme suit :

  1. Identifiez le framework contenant les outils de ML.
  2. Choisissez le processeur. Vous choisissez le processeur en fonction du type de tâche de ML à exécuter et de l'intensité de calcul de cette tâche. Par exemple, choisissez l'un des processeurs GPU lorsque vous avez une tâche de ML nécessitant beaucoup de calculs, et allouez une ressource GPU au conteneur DL.

Créer et déployer un conteneur DL dans le cluster Kubernetes

Pour créer l'instance GDC, spécifiez le chemin d'accès au fichier kubeconfig du cluster Kubernetes sur bare metal. La variable d'environnement KUBECONFIG spécifie le cluster sur lequel l'outil kubectl déploie le conteneur DL. La commande kubectl apply déploie l'instance de conteneur de DL.

Remplacez CONTAINER_IMAGE_NAME par l'image sélectionnée dans la liste des images de Choisir une image de conteneur, et veillez à fournir le tag.

export KUBECONFIG=CLUSTER_KUBECONFIG

kubectl apply -f - <<EOF
apiVersion: v1
kind: Pod
metadata:
  name: dl-container-pod
  namespace: NAMESPACE
spec:
  containers:
  - image: gcr.io/private-cloud-staging/notebooks/deeplearning-platform-release/CONTAINER_IMAGE_NAME:CONTAINER_IMAGE_TAG
    command: ["tail", "-f", "/dev/null"]
    name: training
EOF

Utiliser un conteneur DL déployé

Les rubriques suivantes fournissent un exemple d'utilisation d'une image de conteneur de deep learning pour entraîner un modèle et l'utiliser afin de générer des prédictions.

Copier les fichiers du tutoriel dans le pod du conteneur de DL

Copiez les fichiers du tutoriel de démarrage rapide dans le pod de votre conteneur de deep learning. Le beginner.ipynb contient les étapes à suivre pour entraîner et utiliser un modèle afin d'effectuer des prédictions. Le tutoriel d'entraînement au ML utilise le fichier de données mnist.npz pour entraîner un modèle.

cd /tmp/datasets

kubectl cp beginner.ipynb dl-container-pod:/tmp
kubectl cp mnist.npz dl-container-pod:/tmp

Exécuter le tutoriel de démarrage rapide sur le ML

Exécutez le tutoriel avec les commandes suivantes. Utilisez la première ligne pour accéder au pod du conteneur. Une fois dans le pod du conteneur, accédez au répertoire tmp et exécutez l'outil papermill inclus dans le conteneur DL. L'outil papermill exécute le tutoriel pour créer un notebook qui génère des prédictions.

  1. Ouvrez un terminal interactif dans le pod DL :

    kubectl exec -it dl-container-pod -- /bin/bash
    
  2. Dans le contexte du pod DL, exécutez les commandes suivantes :

    cd tmp
    papermill beginner.ipynb result.ipynb
    

    Le déploiement génère un fichier result.ipynb dans le répertoire /tmp.

  3. Affichez le contenu et les résultats de prédiction du modèle de ML généré :

    cat result.ipynb
    

Facultatif : Supprimez le pod de conteneur DL.

Une fois votre test terminé dans le pod de conteneur DL, supprimez-le. C'est une bonne pratique :

kubectl delete pod dl-container-pod