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 ...!
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.)
Site de référence: Comment faire du deep learning (NVIDIA DIGITS) en utilisant le GPU GCP (NVIDIA Tesla K80) gratuitement
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
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
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
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 |
+-----------------------------------------------------------------------------+
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}
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