[PYTHON] Créez un environnement GPU avec GCP et l'image officielle de Kaggle (docker)

introduction

Puisqu'il était nécessaire d'avoir une machine équipée d'un GPU pour participer au concours d'images kaggle, nous avons construit un environnement GPU avec GCP. Il existe déjà un certain nombre d'articles qui sont très utiles, et je les ai construits en référence à eux, mais il y a eu de nombreux cas où des erreurs se sont produites en raison de différences dans les versions, je vais donc les résumer à nouveau ici. J'espère que cela aidera les nouveaux utilisateurs de GCP. Nous remercions également ceux qui connaissent le sujet pour avoir signalé des erreurs ou des améliorations.

Inscription auprès de GCP

  1. Tout d'abord, veuillez vous inscrire auprès de GCP. Je pense qu'il n'y a pas de problème car je ne fais que suivre les conseils.
  1. Activez l'utilisation payante. Je pense qu'il y a un bouton "ACTIVER" dans le coin supérieur droit de la fenêtre, alors cliquez dessus. De plus, le fait que vous l'activez ne signifie pas que vous serez facturé immédiatement. Je pense que vous avez obtenu un crédit gratuit de 300 $ (comme un coupon) pendant le processus d'inscription, mais le coût réel ne vous sera pas facturé tant que vous ne le dépasserez pas. Ces 300 $ représentent à peu près un mois d'utilisation d'une seule instance de GPU.

Instance de lancement

  1. Premièrement, appliquez pour l'utilisation du GPU. Cliquez sur l'icône de menu comme "Trois" en haut à gauche → "IAM et gestion" → "Affectation" → "Tableau des filtres" → "Nom de la limite supérieure" → "GPU (toutes les régions)" → "API Compute Engine" "Montant de l'allocation" -> "Modifier l'allocation" en haut-> Sélectionnez avec la case à cocher-> Entrez 1 (ou tout nombre requis) comme nouvelle limite supérieure sur l'écran de droite-> "afin d'exécuter un modèle d'apprentissage en profondeur" dans la description de la demande Cela devrait être correct si vous incluez "for kaggle".
  1. Ensuite, déployez l'instance. Cliquez sur l'icône de menu comme "trois" en haut à gauche → "Marketplace" → Rechercher "Deep Learning VM" → "Démarrer l'opération" → Définissez comme suit. → Après avoir terminé les réglages, cliquez sur «Déployer»
  1. Démarrez l'instance. Cliquez sur l'icône de menu comme "Trois" en haut à gauche → "Compute Engine" → "Instance de VM" → Cliquez sur la marque "..." (verticale) à l'extrémité droite de l'instance que vous venez de déployer → Sélectionnez "Démarrer".

Environnement

  1. Tout d'abord, lancez un écran noir (invite). À partir de la même page que ci-dessus (cliquez sur l'icône de menu comme "trois" en haut à gauche → "Compute Engine" → "Instance de VM"), cliquez sur "▼" dans la deuxième "connexion" à l'extrême droite → "Ouvrir dans la fenêtre du navigateur"
  1. Créez l'image du docker Kaggle officielle. Tapez la commande suivante sur un écran noir. (Hors ligne #)
#Image officielle
# https://github.com/Kaggle/docker-python
git clone https://github.com/Kaggle/docker-python.git
cd docker-python

#Construire la version GPU
#Je pense que cela prendra environ 30 minutes
./build --gpu

#Vérifiez l'image
# kaggle/python-gpu-Si la construction est affichée, elle est réussie
docker images

  1. Créez un conteneur. Tapez la commande suivante sur un écran noir. (Hors ligne #)
docker run -itd  --runtime=nvidia  -p 8888:8888   -v /home:/home   --name cont-1   -h host   kaggle/python-gpu-build /bin/bash

Veuillez noter que les éléments suivants sont susceptibles de changer.

--cont-1: le nom du conteneur est arbitraire. Cette fois, je l'ai fait comme ça. La même chose s'applique à cont-1 qui apparaît après cela. --kaggle / python-gpu-build: C'est le nom de l'image affiché à l'étape précédente "images docker". Si vous suivez les étapes, cet exemple devrait convenir.

  1. Entrez dans le conteneur. Procédez comme suit:
#Démarrez le conteneur
$ docker container start cont-1

#Entrez dans le conteneur
$ docker container attach cont-1

Entrez exit pour quitter le conteneur.

  1. Vérifiez le fonctionnement du GPU. Dans le conteneur, procédez comme suit:
#Réglage du chemin
export LD_LIBRARY_PATH=/usr/local/cuda/lib64

#Contrôle de fonctionnement
nvidia-smi

Si vous pouvez voir les détails du GPU, cela signifie que le conteneur reconnaît le GPU. Si vous obtenez une erreur, veuillez effectuer le dépannage ci-dessous.

  1. Vérifiez le fonctionnement du GPU à partir de python. Avec celui-ci dans le conteneur, tapez d'abord `` python '' pour lancer le client Python. Au démarrage, procédez comme suit:
from tensorflow.python.client import device_lib
device_lib.list_local_devices()

Encore une fois, si le GPU est affiché sans erreur, les paramètres du GPU sont parfaits. S'il y a une erreur, veuillez la résoudre.

Dépannage de l'utilisation du GPU

  1. Vérifiez si le GPU peut être utilisé à partir de l'instance elle-même en premier lieu.
nvidia-smi

Si vous ne voyez pas le GPU, vous n'avez probablement pas sélectionné le GPU dans les paramètres de votre instance. GCP "Instance de VM" -> Cliquez sur Instance-> Rechercher un GPU avec Ctrl + F sur l'écran des détails de l'instance. Sinon, recommencez à partir de la section de lancement de l'instance.

  1. Essayez une autre méthode pour reconnaître le GPU et voir s'il peut être démarré. Si l'exécution de la commande suivante ne fonctionne pas, vous devrez peut-être mettre à jour votre version de cudo.
docker run --runtime nvidia -itd -p 8887:8887 -v /home:/home --name gpu-test -h host

Pour plus d'informations, veuillez consulter Commentaires ici.

Lancer le notebook Jupyter

  1. Commencez par démarrer le notebook Jupyter. Dans le conteneur, procédez comme suit:
jupyter notebook --port 8888 --ip=0.0.0.0 --allow-root
  1. Ensuite, définissez les paramètres pour accéder au notebook démarré. [Cet article](jupyter notebook --port 8888 --ip = 0.0.0.0 --allow-root) est très détaillé, je vais donc laisser l'explication.

De plus, il peut ne pas être possible de se connecter avec https, donc dans ce cas, veuillez également essayer avec http.

Introduction de l'API kaggle

Ce paramètre est requis car le téléchargement et l'importation de l'ensemble de données kaggle sont effectués via l'API.

  1. Installez le package kaggle avec pip.
pip install kaggle
  1. Obtenez la clé API kaggle. kaggle HP → Mon compte → API → Cliquez sur Créer un nouveau jeton API. Le fichier json sera téléchargé.

  2. Enregistrez la clé API dans l'instance GCP. La procédure consiste à créer d'abord un répertoire sur l'instance, à y enregistrer la clé et à accorder l'autorisation d'exécution.

#Créer un annuaire
mkdir ~/.kaggle

#Créer un fichier
touch ~/.kaggle/kaggle.json

#Écrire dans un fichier
#Il est plus facile de copier et coller la clé téléchargée depuis kaggle
vim  ~/.kaggle/kaggle.json

#Accorder l'autorisation d'exécution
chmod 777 ~/.kaggle/kaggle.json

  1. Utilisez l'API kaggle. Veuillez consulter le Document officiel pour plus de détails.

Autres choses que vous devez savoir

Je pense que l'environnement de développement est fondamentalement configuré avec ce qui précède, mais je pense que différentes erreurs se produiront en fonction de chaque expérience à l'avenir. Voici certaines choses que vous devez savoir à ce moment-là pour vous permettre de vous résoudre plus facilement et de rechercher sur Google.

--Opération de fichier

référence

Recommended Posts

Créez un environnement GPU avec GCP et l'image officielle de Kaggle (docker)
Construire un environnement Mysql + Python avec docker
Créez un environnement d'exécution Python à l'aide de GPU avec GCP Compute Engine
[DynamoDB] [Docker] Créer un environnement de développement pour DynamoDB et Django avec docker-compose
Créer un environnement Jupyter Lab (Python) avec Docker
[Linux] Créer un environnement Jenkins avec Docker
Construire un environnement de NGINX + NGINX Unit + MySQL avec Docker
[Linux] Construction de l'environnement Docker avec Amazon Linux 2
Créez un environnement CentOS Linux 8 avec Docker et démarrez Apache HTTP Server
[Python] Créer un environnement de développement Django avec Docker
Créez un environnement virtuel avec pyenv et venv
Construisez un environnement Python + bouteille + MySQL avec Docker sur RaspberryPi3! [Essai et erreur]
Construction de l'environnement: GCP + Docker
Créez un environnement virtuel python avec virtualenv et virtualenvwrapper
Analyse d'images par apprentissage profond à partir de Kaggle et Keras
Capture d'image / comparaison de la vitesse OpenCV avec et sans GPU
Créez un environnement virtuel python avec virtualenv et virtualenvwrapper
Créez un environnement de développement avec Poetry Django Docker Pycharm
Construire un environnement de calcul numérique avec pyenv et miniconda3
Créez un environnement de développement Django avec Docker! (Docker-compose / Django / postgreSQL / nginx)
Créer un environnement Docker qui peut utiliser PyTorch et JupyterLab
Créez un environnement d'apprentissage automatique scikit-learn avec VirtualBox et Ubuntu
[Memo] Construire un environnement de développement pour Django + Nuxt.js avec Docker
Créez facilement un environnement GCP pour Kaggle à grande vitesse
(Maintenant) Construisez un environnement GPU Deep Learning avec GeForce GTX 960
Créer un environnement python3 avec ubuntu 16.04
Implémenter le GPU PyTorch + avec Docker
Construire un environnement python avec direnv
[Django] Créez rapidement un environnement de développement de conteneur Django (Docker) avec PyCharm
Créer une application Todo avec Django ① Créer un environnement avec Docker
Créez un environnement Python sur votre Mac avec Anaconda et PyCharm
Créez et essayez un environnement OpenCV et Python en quelques minutes à l'aide de Docker
Créez un environnement d'apprentissage automatique arbitraire avec GCP + Docker + Jupyter Lab
Comment créer un environnement d'exécution Python et Jupyter avec VSCode
Easy Slackbot avec Docker et Errbot
Créer un environnement go à l'aide de Docker
Segmentation d'image avec scikit-image et scikit-learn
Créer un fichier deb avec Docker
Créer un environnement Flask avec Dockerfile + docker-compose.yml
Créer un environnement de notebook IPython avec boot2docker
Construction et bases de l'environnement de reconnaissance d'image
Reconstruisez l'environnement de développement de Django avec Docker! !! !! !!
Créer un environnement avec pyenv et pyenv-virtualenv
Créer un environnement de développement à l'aide de Jupyter et Flask avec Python dans Docker (prend en charge à la fois VS Code / code-server)
Construisez un environnement Python + bouteille + MySQL avec Docker sur RaspberryPi3! [Construction facile]
Réaliser la construction d'environnement pour "Deep Learning from scratch" avec docker et Vagrant
J'ai défini des variables d'environnement dans Docker et je les ai affichées en Python.
Construisez un environnement de simulateur de drone et essayez un vol simple avec Mission Planner
Créez facilement un environnement de développement avec Laragon
Créer un environnement Python 3 et OpenCV sur Ubuntu 18.04
Essayons gRPC avec Go et Docker
Créez un environnement d'API rapide avec docker-compose