Créez un environnement d'exécution Python à l'aide de GPU avec GCP Compute Engine

Contexte et ce que vous voulez faire

Dans mes recherches de fin d'études, j'avais besoin d'exécuter le code écrit en tensorflow. Le programme consomme beaucoup de mémoire et l'ordinateur du laboratoire a crié et n'a pas fonctionné, alors j'ai pleuré GCP Il était nécessaire de construire un environnement d'exécution en utilisant = angelic-turbine-257310 & hl = ja) ... Euh ...

De plus, il y avait un soupçon (?!) Que je ne serais pas à temps pour mon diplôme sans utiliser GCP (c'est difficile). J'ai créé un environnement d'exécution Python pour que GCP puisse également être utilisé ...

Au début, je ne savais pas du tout comment faire, et j'ai passé des jours à hurler à moitié pleurer (sans compter que mes recherches n'avançaient pas bien: innocent :)! !!

Pour ceux qui ont des problèmes avec des choses similaires, je voudrais commencer par l'idée que même un peu ...!

Cadre environnemental

Cette fois, nous allons créer l'environnement avec les paramètres suivants.

Il semble que TensolFlow doit faire correspondre la version avec CUDA en fonction de la version ...: neutral_face: Si cette version n'est pas synchronisée, GCP peut ne pas être reconnu correctement. Nous vous recommandons de vérifier les éléments suivants. (Au fait, j'ai fait quelques erreurs, oui.)

Paramètres de construction du GPU TensolFlow

Procédure de construction de l'environnement

0. Inscription auprès de GCP

Site de référence: Comment faire du deep learning (NVIDIA DIGITS) en utilisant le GPU GCP (NVIDIA Tesla K80) gratuitement

1. Installation des pilotes CUDA et NVIDIA

Exécutez la commande suivante sur l'instance de VM pour installer CUDA et le pilote

$ curl -O http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1604/x86_64/cuda-repo-ubuntu1604_9.0.176-1_amd64.deb
$ sudo dpkg -i cuda-repo-ubuntu1604_9.0.176-1_amd64.deb
$ sudo apt-key adv --fetch-keys http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1604/x86_64/7fa2af80.pub
$ sudo apt-get update
$ sudo apt-get install cuda-9-0

En outre, exécutez la commande suivante pour optimiser les performances du GPU.

$ sudo nvidia-smi -pm 1

2. Installez cuDNN 7.0

Créez un compte développeur avec À partir d'ici et Téléchargez les trois fichiers suivants de cuDNN. / cudnn-download).

version : ubuntu 16.04 cuda-9.0 version

Une fois le téléchargement terminé, téléchargez les trois fichiers sur Starage. Ici, le nom du bucket est `` cuda_9 '' (changez-le à votre guise!).

Une fois le téléchargement terminé, utilisez la commande gsutil pour le transférer dans l'instance tel quel. Veuillez choisir le répertoire à télécharger.

$ cd {UP_LOAD_PATH}
$ gsutil cp gs://cuda_9/libcudnn7_7.6.4.38-1+cuda9.0_amd64.deb .
$ gsutil cp gs://cuda_9/libcudnn7-dev_7.6.4.38-1+cuda9.0_amd64.deb .
$ gsutil cp gs://cuda_9/libcudnn7-doc_7.6.4.38-1+cuda9.0_amd64.deb .

Une fois le transfert terminé, décompressez le fichier et installez-le.

$ sudo dpkg -i *.deb

3. Paramètres de fichier d'échange

Sans le fichier d'échange, une fuite de mémoire peut se produire lorsque le programme est exécuté. Il semble que lorsque vous créez une machine virtuelle Linux avec GCE, que ce soit mUbuntu ou CentOS, la machine virtuelle est créée sans fichier d'échange ... (Je ne savais pas que même un millimètre, donc je suis resté coincé ici)

Alors, vérifiez d'abord l'existence de swap avec la commande gratuite.

$ free -m

Si cela ressemble à ce qui suit, Swap: vaut zéro, vous devez donc créer un fichier d'échange.

               total        used        free      shared  buff/cache   available
Mem:            581         148          90           0         342         336
Swap:             0           0           0

Création d'un fichier d'échange. La capacité du fichier d'échange est votre choix (10G cette fois)

$ sudo fallocate -l 10G /swapfile
$ sudo chmod 600 /swapfile
$ sudo mkswap /swapfile
$ sudo swapon /swapfile

Vérifier le fichier d'échange

$ free -m
               total        used        free      shared  buff/cache   available
Mem:            581         148          88           0         344         336
Swap:          1023           0        10023

** Astuces **: Pour monter automatiquement le fichier d'échange au redémarrage, il semble que vous devriez ajouter ce qui suit à `` / etc / fstab ''.

/swapfile none swap sw 0 0

4. Confirmation de la reconnaissance GPU et paramètres CUDA

Nous allons mettre en place CUDA.

$ echo "export PATH=/usr/local/cuda-9.0/bin\${PATH:+:\${PATH}}" >> ~/.bashrc
$ source ~/.bashrc
$ sudo /usr/bin/nvidia-persistenced

Vérifiez ensuite si le GPU est reconnu.

$ nvidia-smi

Si vous recevez la réponse suivante, les paramètres du GPU sont terminés!

+-----------------------------------------------------------------------------+
| NVIDIA-SMI 410.72       Driver Version: 410.72       CUDA Version: 10.0     |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|===============================+======================+======================|
|   0  Tesla K80           Off  | 00000000:00:04.0 Off |                    0 |
| N/A   42C    P0    65W / 149W |      0MiB / 11441MiB |    100%      Default |
+-------------------------------+----------------------+----------------------+

+-----------------------------------------------------------------------------+
| Processes:                                                       GPU Memory |
|  GPU       PID   Type   Process name                             Usage      |
|=============================================================================|
|  No running processes found                                                 |
+-----------------------------------------------------------------------------+

5. Créer un environnement Python

Enfin, nous allons créer un environnement Python avec Anadonda. (J'utilise habituellement Anaconda, et pourquoi le programme ne fonctionnait pas avec d'autres méthodes, j'ai donc choisi Anaconda cette fois.)

Téléchargez Anaconda avec wget.

$ wget https://repo.anaconda.com/archive/Anaconda3-5.3.1-Linux-x86_64.sh
$ sh ./Anaconda3-5.3.1-Linux-x86_64.sh
$ echo ". /home/{USER_NAME}/anaconda3/etc/profile.d/conda.sh" >> ~/.bashrc
$ source ~/.bashrc

Ensuite, construisez l'environnement du costume Anaonda. La version Python et «ENV_NAME» sont votre choix. (Cette fois, je veux utiliser tensorflow == 1.12.0 '', donc Python3.6.5 '')

$ conda create -n {ENV_NAME} python=3.6.5
$ conda activate {ENV_NAME}

6. Installez tensorflow-gpu

installer depuis conda (je me sens soulagé quand je viens ici ...)

$ conda install tensorflow-gpu==1.12.0

Exécutez le programme suivant, et lorsque `` GPU '' apparaît, tensorflow-gpu reconnaît le GPU.

test.py


from tensorflow.python.client import device_lib
device_lib.list_local_devices()
[name: "/device:CPU:0"
device_type: "CPU"
memory_limit: 268435456
locality {
}
incarnation: 2319180638018740093
, name: "/device:GPU:0"
device_type: "GPU"
memory_limit: 11324325888
locality {
  bus_id: 1
}
incarnation: 13854674477442207273
physical_device_desc: "device: 0, name: Tesla K80, pci bus id: 0000:00:04.0, compute capability: 3.7"
]

De plus, s'il existe une bibliothèque nécessaire, installez-la à partir de conda. (↓ comme ça)

$ conda install numpy==1.15.4
$ conda install scipy==1.1.0 
$ conda install scikit-learn==0.20.0

Vous devriez maintenant pouvoir exécuter des programmes Python à l'aide de GCP sur votre instance de moteur d'instance ...! Je vous remercie pour votre travail acharné...!!

Si vous avez des erreurs, laissez un commentaire: bow_tone2:

Recommended Posts

Créez un environnement d'exécution Python à l'aide de GPU avec GCP Compute Engine
Créez un environnement Flask Python3 + sur Compute Engine de GCP
Créer un environnement d'exécution python avec VS Code
Créez un environnement virtuel pour python avec pyenv
Créez un environnement Python moderne avec Neovim
Créez simplement un environnement d'exécution Python 3 sous Windows
Créer un environnement de construction python3 avec Sublime Text3
Construire un environnement Python avec OSX Elcapitan
Créez rapidement un environnement Python Django avec IntelliJ
Créer un environnement d'apprentissage automatique Python avec des conteneurs
[Version détaillée] Créer un environnement Python confortable avec Google Compute Engine (Ubuntu 16.04)
Créez un environnement virtuel python avec virtualenv et virtualenvwrapper
Créez un environnement python pour chaque répertoire avec pyenv-virtualenv
Créer un environnement python3 avec ubuntu 16.04
Construire un environnement python avec direnv
Construire un environnement virtuel Python en utilisant venv (Django + MySQL ①)
Créez un environnement Python sur votre Mac en utilisant pyenv
Créer un environnement de développement d'applications d'apprentissage automatique avec Python
Créez un environnement virtuel python avec virtualenv et virtualenvwrapper
Créer un environnement de développement Python à l'aide de pyenv sur MacOS
Créer un environnement Python hors ligne
(Maintenant) Construisez un environnement GPU Deep Learning avec GeForce GTX 960
Lancement d'un environnement d'apprentissage automatique à l'aide de Google Compute Engine (GCE)
Comment créer un environnement de développement de la série Python2.7 avec Vagrant
Créer un environnement python avec pyenv (OS X El Capitan 10.11.3)
Créez un environnement GPU avec GCP et l'image officielle de Kaggle (docker)
Créer un environnement Python avec WSL + Pyenv + Jupyter + VSCode
Créer un environnement go à l'aide de Docker
Construire un environnement Mysql + Python avec docker
Créez un environnement virtuel avec Python!
Créer un environnement python3 sur CentOS7
Créer un environnement d'exécution Windows Python avec VScode + Remote WSL
Créez un environnement Python 2.7 64 bits avec TDM-GCC et MinGW-w64 sous Windows 7
Créer un environnement de développement local pour Lambda + Python à l'aide de Serverless Framework
Créez un environnement Python sur votre Mac avec Anaconda et PyCharm
Comment créer un environnement Python à l'aide de Virtualenv sur Ubuntu 18.04 LTS
Comment créer un environnement d'exécution Python et Jupyter avec VSCode
Créez facilement un environnement de développement avec Laragon
Créer un environnement Jupyter Lab (Python) avec Docker
Construire un environnement python sur MacOS (Catallina)
Créer un environnement Tensorflow avec Raspberry Pi [2020]
[Python] Créez un environnement virtuel avec Anaconda
Création d'un environnement Python 3.6 avec Windows + PowerShell
[Python] Créer un environnement Batch à l'aide d'AWS-CDK
Je veux créer un environnement Python
Créer un environnement Python avec Anaconda sur Mac
[Linux] Créer un environnement Jenkins avec Docker
Créer un environnement Python + OpenCV sur Cloud9
Créez rapidement un environnement d'exécution d'application Web Python3.4 + Nginx + uWSGI + Flask en utilisant pyenv sur Ubuntu 12.04
Construction d'environnement AI / Machine Learning avec Python
[Linux] Construction de l'environnement Docker avec Amazon Linux 2
Construisez un environnement Python + bouteille + MySQL avec Docker sur RaspberryPi3! [Construction facile]
[Mac] Créez un environnement Python 3.x à la vitesse la plus rapide à l'aide de Docker
J'ai essayé de créer un environnement de développement Mac Python avec pythonz + direnv
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)