[PYTHON] Essayez Tensorflow avec une instance GPU sur AWS

Configuration EC2

Créez une instance Ubuntu à l'aide d'une instance GPU appelée p2.xlarge comme indiqué ci-dessous. (Actuellement, les instances p2 ne sont pas disponibles dans la région de Tokyo, donc ici)

Définissez un nom approprié pour le groupe de sécurité et la paire de clés. (Ici, il s'agit de sg_01 '', kp_01 ''.) Vous pouvez également utiliser une paire de clés existante sans aucun problème.

Après avoir téléchargé la paire de clés, accédez à .ssh et modifiez les autorisations.

$ mv ~/Download/kp_01.pem ~/.ssh/.
$ chmod 600 ~/.ssh/kp_01.pem

Une fois l'instance créée, vérifiez le DNS public dans la console de gestion et connectez-vous avec SSH.

$ ssh -i ~/.ssh/kp_01.pem ubuntu@<Public DNS>

Ce qui suit est le travail sur EC2. Tout d'abord, mettez à jour le package.

$ sudo apt-get update
$ sudo apt-get upgrade

CUDA

Installation de CUDA 8.0

URL: https://developer.nvidia.com/cuda-downloads Installation guide: http://docs.nvidia.com/cuda/cuda-installation-guide-linux/index.html

Confirmation préalable

Vérifiez si vous disposez d'un GPU prenant en charge CUDA

$ lspci | grep -i nvidia
00:1e.0 3D controller: NVIDIA Corporation GK210GL [Tesla K80](rev a1)

Vérifiez si le système d'exploitation est compatible avec CUDA

$ uname -m && cat /etc/*release
x86_64
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=16.04
DISTRIB_CODENAME=xenial
DISTRIB_DESCRIPTION="Ubuntu 16.04.2 LTS"
NAME="Ubuntu"
VERSION="16.04.2 LTS (Xenial Xerus)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 16.04.2 LTS"
VERSION_ID="16.04"
HOME_URL="http://www.ubuntu.com/"
SUPPORT_URL="http://help.ubuntu.com/"
BUG_REPORT_URL="http://bugs.launchpad.net/ubuntu/"
VERSION_CODENAME=xenial
UBUNTU_CODENAME=xenial

Installation de gcc (+ outils de développement)

$ sudo apt-get install build-essential

Installez la même version de l'en-tête du noyau que le noyau en cours d'exécution

$ sudo apt-get install linux-headers-$(uname -r)

Installation

Sur https://developer.nvidia.com/cuda-downloads, sélectionnez «Sélectionner la plate-forme cible» comme suit pour afficher le lien de téléchargement et les instructions d'installation. Récupérez le fichier avec wget à partir de l'URL liée et installez-le. (Ici, installez cuda-repo-ubuntu1604-8-0-local-ga2_8.0.61-1_amd64-deb```.)

$ wget https://developer.nvidia.com/compute/cuda/8.0/Prod2/local_installers/cuda-repo-ubuntu1604-8-0-local-ga2_8.0.61-1_amd64-deb
$ sudo dpkg -i cuda-repo-ubuntu1604-8-0-local-ga2_8.0.61-1_amd64-deb
$ sudo apt-get update
$ sudo apt-get install cuda

Définition des variables d'environnement

Définissez ~ / .bash_profile comme suit.

~/.bash_profile


export CUDA_HOME="/usr/local/cuda-8.0"
export PATH="${CUDA_HOME}/bin${PATH:+:${PATH}}"
export LD_LIBRARY_PATH="${CUDA_HOME}/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}"

Veuillez vous reconnecter pour que les paramètres prennent effet.

$ exec $SHELL -l

Contrôle de fonctionnement

Créez l'exemple de programme et vérifiez le fonctionnement. (Peu importe si vous ne l'exécutez pas.)

$ cuda-install-samples-8.0.61.sh test
$ cd test/NVIDIA_CUDA-8.0_Samples
$ sed -i "s/nvidia-367/nvidia-375/g" `grep "nvidia-367" -r ./ -l`
$ make

Installation de cuDNN 5.1

URL: https://developer.nvidia.com/cudnn Vous devez être membre du programme pour développeurs NVIDIA pour télécharger. Étant donné que l'authentification est requise, téléchargez le fichier sur votre PC local et téléchargez-le sur EC2 avec SCP. (Ici, `` cudnn-8.0-linux-x64-v5.1.tgz '' est utilisé.)

SCP du local

$ scp -i ~/.ssh/kp_01.pem ~/Downloads/cudnn-8.0-linux-x64-v5.1.tgz ubuntu@<Public DNS>:~/.

Installer sur EC2 (extraction et placement de fichiers uniquement)

$ tar zxvf cudnn-8.0-linux-x64-v5.1.tgz
$ sudo cp cuda/include/* ${CUDA_HOME}/include/.
$ sudo cp cuda/lib64/* ${CUDA_HOME}/lib64/.

Installation de l'interface des outils de profil NVIDIA CUDA (libcupti-dev)

Vous pouvez l'installer avec apt-get.

$ sudo apt-get install libcupti-dev

Cependant, cette fois, j'ai eu l'erreur "*** n'est pas un lien symbolique" lorsque je l'ai exécuté, donc je l'ai résolu comme suit. (Référence: http://stackoverflow.com/questions/43016255/libegl-so-1-is-not-a-symbolic-link)

$ sudo mv /usr/lib/nvidia-375/libEGL.so.1 /usr/lib/nvidia-375/libEGL.so.1.org
$ sudo ln -s /usr/lib/nvidia-375/libEGL.so.375.39 /usr/lib/nvidia-375/libEGL.so.1

$ sudo mv /usr/local/cuda-8.0/targets/x86_64-linux/lib/libcudnn.so.5 /usr/local/cuda-8.0/targets/x86_64-linux/lib/libcudnn.so.5.org
$ sudo ln -s /usr/local/cuda-8.0/targets/x86_64-linux/lib/libcudnn.so.5.1.10 /usr/local/cuda-8.0/targets/x86_64-linux/lib/libcudnn.so.5

$ sudo mv /usr/lib32/nvidia-375/libEGL.so.1 /usr/lib32/nvidia-375/libEGL.so.1.org
$ sudo ln -s /usr/lib32/nvidia-375/libEGL.so.375.39 /usr/lib32/nvidia-375/libEGL.so.1

Paramètres GPU

http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/accelerated-computing-instances.html Appliquez "Optimiser les paramètres GPU (instances P2 uniquement)" en vous référant à.

$ sudo nvidia-smi -pm 1
$ sudo nvidia-smi --auto-boost-default=0
$ sudo nvidia-smi -ac 2505,875

Environnement Python

Créez un environnement pour pyenv + miniconda en vous référant à l'article ici. ("Il y a en fait un problème avec l'anaconda seul.")

pyenv https://github.com/pyenv/pyenv#installation

git clone et définissez `~ / .bash_profile `.

$ git clone https://github.com/pyenv/pyenv.git ~/.pyenv

~/.bash_profile


export PYENV_ROOT="${HOME}/.pyenv"
export PATH="${PYENV_ROOT}/bin:${PATH:+:${PATH}}"
eval "$(pyenv init -)"

miniconda Installez la dernière miniconda (ici, miniconda 3-4.3.11) avec pyenv.

$ pyenv install -l | grep miniconda
...
(réduction)
...
  miniconda3-4.3.11

$ pyenv install miniconda3-4.3.11

~/.bash_profile


export CONDA_HOME="${PYENV_ROOT}/versions/miniconda3-4.3.11"
export PATH="${CONDA_HOME}/bin${PATH:+:${PATH}}"

Tensorflow Install with Anaconda Créez un environnement Anaconda avec conda et installez Tensorflow.

$ conda create -n tensorflow python=3.5 anaconda
$ source activate tensorflow
(tensorflow)$ pip install --ignore-installed --upgrade https://storage.googleapis.com/tensorflow/linux/gpu/tensorflow_gpu-1.1.0-cp35-cp35m-linux_x86_64.whl

Jupyter notebook http://jupyter-notebook.readthedocs.io/en/latest/public_server.html Définissez les paramètres de connexion au notebook Jupyter démarré sur EC2 à partir d'un PC local.

Création d'un certificat de serveur et d'un fichier de clé

(tensorflow)$ mkdir certificate
(tensorflow)$ cd certificate
(tensorflow)$ openssl req -x509 -nodes -days 365 -newkey rsa:1024 -keyout mykey.key -out mycert.pem

Création de valeur de hachage de mot de passe

(tensorflow)$ python
>>> from notebook.auth import passwd
>>> passwd()
Enter password: 
Verify password:
'sha1:********'
>>> exit()

Créer le fichier de configuration jupyter

Sortie du modèle du fichier de paramètres

(tensorflow)$ jupyter notebook --generate-config

Ajoutez les paramètres suivants

:~/.jupyter/jupyter_notebook_config.py


c.NotebookApp.certfile = '/home/ubuntu/certificate/mycert.pem'
c.NotebookApp.keyfile = '/home/ubuntu/certificate/mykey.key'
c.NotebookApp.ip = '*'
c.NotebookApp.port = 9999
c.NotebookApp.open_browser = False
c.NotebookApp.password='sha1:********'

Démarrer le notebook Jupyter

(tensorflow)$ jupyter notebook

Lorsque vous accédez à `` https: // : 9999 '' avec le navigateur de votre PC local, l'écran de saisie du mot de passe s'affiche. Saisissez le mot de passe que vous avez saisi lors de la création de la valeur de hachage du mot de passe. Ouvrir une session.

Recommended Posts

Essayez Tensorflow avec une instance GPU sur AWS
Exécutez TensorFlow sur une instance GPU sur AWS
Utiliser jupyter sur une instance GPU sur AWS
Essayez TensorFlow RNN avec un modèle de base
Création d'un environnement pour exécuter ChainerMN sur une instance de GPU AWS
Créez un environnement WardPress sur AWS avec Pulumi
Version de juin 2017 pour créer un environnement Tensorflow / Keras sur une instance GPU d'AWS
Essayez la régression avec TensorFlow
# 2 Créez un environnement Python avec une instance EC2 d'AWS (ubuntu18.04)
Création d'un environnement TensorFlow qui utilise des GPU sous Windows 10
Exécutez la version GPU tensorflow sur une instance ponctuelle d'AWS EC2
Essayez l'apprentissage en profondeur avec TensorFlow
Essayez de programmer avec un shell!
Essayez TensorFlow MNIST avec RNN
Essayez d'exécuter Schedule pour démarrer et arrêter des instances dans AWS Lambda (Python)
Si vous pensez que tensorflow ne reconnaît pas votre GPU sur AWS
Essayez le clustering avec un modèle gaussien mixte sur Jupyter Notebook
Essayez d'exécuter tensorflow sur Docker + anaconda
Essayez l'apprentissage en profondeur avec TensorFlow Partie 2
Utilisez Tensorflow 2.1.0 avec Anaconda sur Windows 10!
Exécutez TensorFlow2 sur le serveur VPS
Essayez les données en parallèle avec TensorFlow distribué
Créer une application Web de type Flask / Bottle sur AWS Lambda avec Chalice
# 3 Créez un environnement Python (Django) avec une instance EC2 (ubuntu18.04) d'AWS part2
Grattage sans serveur régulier avec AWS lambda + scrapy, partie 1
Lancement d'une application Web sur AWS avec django et modification des tâches
J'ai essayé la détection d'objets avec YOLO v3 (TensorFlow 2.0) sur un processeur Windows!
Procédure de création d'un environnement Kube sur Amazon Linux2 (AWS) ~ (avec bonus)
Essayez d'utiliser Bash sur Windows 10 2 (installation de TensorFlow)
J'étais accro à l'exécution de tensorflow sur GPU avec le pilote NVIDIA 440 + CUDA 10.2
Mettre TensorFlow dans une instance P2 avec pip3
Créer un environnement Tensorflow avec Raspberry Pi [2020]
Essayez de dessiner une distribution normale avec matplotlib
Essayez SVM avec scikit-learn sur Jupyter Notebook
Un mémo contenant Python2.7 et Python3 dans CentOS
Carte des informations de location sur une carte avec python
Émettre une URL signée avec AWS SQS
Lancer une demande avec un certificat sur httpie
J'ai essayé d'installer TensorFlow (version GPU) sur Ubuntu
Essayez le chiffrement côté serveur de S3 à l'aide de boto3
Essayez le scraping HTML avec la bibliothèque Python
Remarques sur l'activation de PostgreSQL avec Django
Préparer l'environnement de Chainer sur l'instance spot EC2 avec AWS Lambda
J'ai construit un environnement TensorFlow avec windows10
# 1 Jusqu'au déploiement de l'application Web de Django (création d'une instance avec EC2 sur AWS)
Essayez de dessiner une carte avec python + cartopy 0.18.0
Créer un référentiel privé avec AWS CodeArtifact
Prédire FX avec LSTM à l'aide de Keras + Tensorflow Partie 2 (Calculer avec GPU)
Étapes pour exécuter TensorFlow 2.1 à partir de Jupyter sur le front-end Spacon ITO (avec GPU)
Essayez d'implémenter un robot Cisco Spark avec AWS Lambda + Amazon API Gateway (Python)
Créez une application flask faite avec tensorflow et dlib pour travailler sur centos7
J'ai essayé la détection d'objets avec YOLO v3 (TensorFlow 2.1) sur le GPU de windows!
Créer un environnement de développement TensorFlow sur Amazon EC2 avec une copie de commande
Une histoire addictive lors de l'utilisation de tensorflow sur Android
Exécutez régulièrement des programmes Python sur AWS Lambda
Envisagez une application WebSocket native pour le cloud qui s'exécute sur AWS
Créez un environnement python avec ansible sur centos6
Essayez d'utiliser le code QR avec Raspberry Pi
Essayez de dessiner une courbe de vie avec python
Essayez d'envoyer un message avec le service SMS de Twilio
Créez un système de synthèse bon marché avec des composants AWS