Je l'ai essayé dans l'environnement suivant, alors gardez une trace du travail lors de l'installation.
TensoFlow ne fonctionne pas sous Windows. L'outil de compilation Google Bazel utilisé par TensorFlow n'est compatible qu'avec Linux et Mac. Si vous n'avez pas de machine Mac ou Linux sous la main, je pense qu'il est facile de configurer un environnement Ubuntu sur AWS.
Mac OS X J'ai installé un package qui ne fonctionne que sur le processeur. C'est le plus simple. ** spécifications **
Installez le package avec pip conformément à la [Documentation] officielle (https://www.tensorflow.org/versions/master/get_started/os_setup.html#pip_install).
$ sudo easy_install --upgrade six
$ sudo pip install --upgrade https://storage.googleapis.com/tensorflow/mac/tensorflow-0.6.0-py2-none-any.whl
En guise de test, apprenons ensemble de données CIFAR-10.
$ git clone https://github.com/tensorflow/tensorflow.git
$ cd tensorflow/tensorflow/models/image/cifar10/
$ python cifar10_train.py
Une fois exécuté, le jeu de données sera téléchargé et la formation commencera. Étant donné que la progression du processus est sortie sur le terminal, il a fallu 0,540 seconde pour un apprentissage par lots lorsque j'ai vu environ 100 étapes lorsque l'apprentissage était stable.
2015-12-31 15:00:08.397460: step 100, loss = 4.49 (237.0 examples/sec; 0.540 sec/batch)
Amazon web service(AWS) Créez l'environnement à l'aide d'AWS EC2 Instance G2.
** Remarque: TensorFlow nécessite une prise en charge spéciale si la capacité de calcul Cuda 3.5 ou inférieure. ** ** La capacité de calcul de Cuda est comme une architecture GPU et est déterminée par le GPU. Étant donné que le GRID K520 installé dans l'instance AWS G2 est la capacité de calcul Cuda 3.0, il ne peut pas effectuer le calcul GPU TensorFlow tel quel. Ici traite de la prise en charge de la version 3.0.
J'ai utilisé une instance de l'Oregon (USA), qui était moins chère. Les prix et informations ci-dessous sont en date du 30 décembre 2015.
modèle | GPU | vCPU | Mémoire(GiB) | Stockage SSD(GB) | Frais-Oregon(Etats-Unis) |
---|---|---|---|---|---|
g2.2xlarge | GRID K520 x 1 | 8 | 15 | 1 x 60 | $0.65 /1 heure |
g2.8xlarge | GRID K520 x 4 | 32 | 60 | 2 x 120 | $2.6 /1 heure |
Voir ici pour les connexions aux instances Linux. J'ai procédé en faisant référence à ici. Tout d'abord, installez le logiciel nécessaire.
$ sudo apt-get update
$ sudo apt-get upgrade -y #Sélectionnez "installer la version des responsables du package"
$ sudo apt-get install -y build-essential python-pip python-dev git python-numpy swig python-dev default-jdk zip zlib1g-dev ipython
Ajout de la liste noire Nouveau pour éviter les conflits avec les pilotes NVIDIA.
$ echo -e "blacklist nouveau\nblacklist lbm-nouveau\noptions nouveau modeset=0\nalias nouveau off\nalias lbm-nouveau off\n" | sudo tee /etc/modprobe.d/blacklist-nouveau.conf
$ echo options nouveau modeset=0 | sudo tee -a /etc/modprobe.d/nouveau-kms.conf
$ sudo update-initramfs -u
$ sudo reboot
Il sera redémarré, alors connectez-vous à nouveau et exécutez ce qui suit. Je ne comprends pas pourquoi j'en ai besoin ici.
$ sudo apt-get install -y linux-image-extra-virtual
$ sudo reboot
# Install latest Linux headers
$ sudo apt-get install -y linux-source linux-headers-`uname -r`
Ensuite, installez CUDA et cuDNN. Veuillez également consulter la documentation officielle ici pour continuer. La version à installer doit être la suivante.
Tout d'abord, installez CUDA.
# Install CUDA 7.0
$ wget http://developer.download.nvidia.com/compute/cuda/7_0/Prod/local_installers/cuda_7.0.28_linux.run
chmod +x cuda_7.0.28_linux.run
$ ./cuda_7.0.28_linux.run -extract=`pwd`/nvidia_installers
$ cd nvidia_installers
$ sudo ./NVIDIA-Linux-x86_64-346.46.run
$ sudo modprobe nvidia
$ sudo ./cuda-linux64-rel-7.0.28-19326674.run
Ensuite, installez cuDNN. cuDNN est une bibliothèque spécialisée dans l'accélération de l'apprentissage des réseaux de neurones profonds sur les GPU. Cet article sera utile. Pour obtenir cuDNN, vous devez vous inscrire à un compte développeur NVIDIA. Puisqu'il n'est pas disponible avec wget, téléchargez-le depuis ici une fois dans l'environnement local. Transférez le fichier téléchargé localement par SCP. Voici un exemple de transfert depuis Linux. xxxxx.amazonaws.com est le DNS public de l'AMI.
#Travaillez localement
#Transfert vers AMI par SCP
$ scp -i /path/my-key-pair.pem cudnn-6.5-linux-x64-v2.tgz [email protected]:~
Une fois le transfert terminé, décompressez-le et copiez-le dans le répertoire cuda.
#Travailler avec AMI
$ cd
$ tar -xzf cudnn-6.5-linux-x64-v2.tgz
$ sudo cp cudnn-6.5-linux-x64-v2/libcudnn* /usr/local/cuda/lib64
$ sudo cp cudnn-6.5-linux-x64-v2/cudnn.h /usr/local/cuda/include/
Traversez le chemin.
$ vi .bashrc #Utilisez vi ou nano pour faire les deux lignes suivantes.Ajouté à bashrc
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/usr/local/cuda/lib64"
export CUDA_HOME=/usr/local/cuda
$ source .bashrc # .Refléter les paramètres bashrc
L'espace disque disponible dans l'AMI n'est pas très important. Après cela, vous aurez besoin d'un espace disque suffisant lors de la création avec Bazel ou lors du téléchargement des données d'entraînement. Il y a suffisamment d'espace disque dans le stockage éphémère (/ mnt / ou moins) alloué lors de la création d'une instance, alors créez un lien symbolique. Vous pouvez supprimer nvidia_installers et cudnn-6.5-linux-x64-v2.tgz que vous n'utilisez plus.
$ df
Filesystem 1K-blocks Used Available Use% Mounted on
udev 7687184 12 7687172 1% /dev
tmpfs 1540096 344 1539752 1% /run
/dev/xvda1 8115168 5874536 1805356 77% /
none 4 0 4 0% /sys/fs/cgroup
none 5120 0 5120 0% /run/lock
none 7700472 0 7700472 0% /run/shm
none 102400 0 102400 0% /run/user
/dev/xvdb 66946696 53144 63486192 1% /mnt
# /mnt/tmp/Créer un lien symbolique vers
$ sudo mkdir /mnt/tmp
$ sudo chmod 777 /mnt/tmp
$ sudo rm -rf /tmp
$ sudo ln -s /mnt/tmp /tmp
** Remarque: lorsque l'instance est arrêtée, tout ce qui se trouve sous / mnt / sera supprimé. N'enregistrez pas les données qui doivent être laissées dans l'image AMI dans / tmp /. ** ** Pour l'AMI publique décrite plus loin, nous avons préparé un script shell (create_tmp_on_ephemeral_storage.sh) qui crée tmp dans le stockage éphémère lors de la création d'une instance ou du redémarrage.
Installez l'outil de construction Bazel.
$ cd /mnt/tmp
$ git clone https://github.com/bazelbuild/bazel.git
$ cd bazel
$ git checkout tags/0.1.0
$ ./compile.sh
$ sudo cp output/bazel /usr/bin
Ensuite, installez TensorFlow. "./configure" est exécuté avec des options telles que "TF_UNOFFICIAL_SETTING = 1 ./ configure" comme indiqué dans ici Faire. Cela en fait un paramètre non officiel qui prend également en charge la capacité de calcul Cuda 3.0.
$ cd /mnt/tmp
$ git clone --recurse-submodules https://github.com/tensorflow/tensorflow
$ cd tensorflow
$ TF_UNOFFICIAL_SETTING=1 ./configure
Lors de la configuration, j'ai les questions suivantes: Par défaut, seules les capacités de calcul Cuda 3.5 et 5.2 sont prises en charge, ajoutez donc 3.0 comme indiqué ci-dessous.
Please specify a list of comma-separated Cuda compute capabilities you want to build with.
You can find the compute capability of your device at: https://developer.nvidia.com/cuda-gpus.
Please note that each additional compute capability significantly increases your build time and binary size.
[Default is: "3.5,5.2"]: 3.0,3.5,5.2 #3.Ajouter 0
Construisez TensorFlow.
$ bazel build -c opt --config=cuda //tensorflow/cc:tutorials_example_trainer
Ensuite, créez et installez le package TensorFlow Python. La partie "/tmp/tensorflow_pkg/tensorflow-0.6.0-cp27-none-linux_x86_64.whl" doit correspondre au nom de fichier de la version réellement générée.
$ bazel build -c opt --config=cuda //tensorflow/tools/pip_package:build_pip_package
$ bazel-bin/tensorflow/tools/pip_package/build_pip_package /tmp/tensorflow_pkg
$ sudo pip install /tmp/tensorflow_pkg/tensorflow-0.6.0-cp27-none-linux_x86_64.whl
Ceci termine l'installation.
Essayez d'abord avec une instance g2.2xlarge.
$ cd tensorflow/models/image/cifar10/
$ python cifar10_multi_gpu_train.py
Les résultats sont les suivants.
2016-01-01 09:08:55.345446: step 100, loss = 4.49 (285.9 examples/sec; 0.448 sec/batch)
De plus, essayez avec g2.8xlarge. Définissez le nombre de GPU sur 4 autour de la ligne 63 de cifar10_multi_gpu_train.py comme indiqué ci-dessous. Si vous ne le faites pas, il utilisera apparemment quatre GPU, mais il n'accélérera pas, probablement parce que la parallélisation ne fonctionne pas correctement.
tf.app.flags.DEFINE_integer('num_gpus', 4,
"""How many GPUs to use.""")
Résultat de l'exécution. C'était assez rapide.
2016-01-01 09:33:24.481037: step 100, loss = 4.49 (718.2 examples/sec; 0.178 sec/batch)
L'image créée cette fois est publiée dans la communauté AMI d'AWS Oregon (US). ubuntu14.04_tensorflow0.6.0_gpu - ami-69475f08 Après avoir créé l'instance, exécutez create_tmp_on_ephemeral_storage.sh pour créer le répertoire / tmp sur le stockage éphémère.
$ ./create_tmp_on_ephemeral_storage.sh
Recommended Posts