Ich habe es in der folgenden Umgebung versucht. Führen Sie daher während der Installation Aufzeichnungen über die Arbeit.
TensoFlow funktioniert nicht unter Windows. Das von TensorFlow verwendete Google-Build-Tool Bazel ist nur mit Linux und Mac kompatibel. Wenn Sie keinen Mac oder Linux zur Hand haben, ist es meiner Meinung nach einfach, eine Ubuntu-Umgebung unter AWS einzurichten.
Mac OS X Ich habe ein Paket installiert, das nur auf der CPU läuft. Es ist am einfachsten. ** spec **
Installieren Sie das Paket mit pip gemäß der offiziellen Dokumentation.
$ sudo easy_install --upgrade six
$ sudo pip install --upgrade https://storage.googleapis.com/tensorflow/mac/tensorflow-0.6.0-py2-none-any.whl
Lassen Sie uns als Test [CIFAR-10-Datensatz] lernen (https://www.cs.toronto.edu/~kriz/cifar.html).
$ git clone https://github.com/tensorflow/tensorflow.git
$ cd tensorflow/tensorflow/models/image/cifar10/
$ python cifar10_train.py
Nach der Ausführung wird der Datensatz heruntergeladen und das Training beginnt. Da der Fortschritt des Prozesses an das Terminal ausgegeben wird, dauerte es 0,540 Sekunden für ein Batch-Lernen, als ich ungefähr 100 Schritte sah, als das Lernen stabil war.
2015-12-31 15:00:08.397460: step 100, loss = 4.49 (237.0 examples/sec; 0.540 sec/batch)
Amazon web service(AWS) Erstellen Sie die Umgebung mit AWS EC2 G2-Instanz.
** Hinweis: TensorFlow erfordert spezielle Unterstützung, wenn die Cuda-Rechenfähigkeit 3.5 oder niedriger ist. ** ** ** Die Cuda-Rechenfähigkeit ähnelt einer GPU-Architektur und wird von der GPU bestimmt. Da das in der AWS G2-Instanz installierte GRID K520 Cuda Compute Capability 3.0 ist, kann es die TensorFlow-GPU-Berechnung nicht so durchführen, wie sie ist. Hier erläutert die Unterstützung für 3.0.
Ich habe eine Instanz von Oregon (USA) verwendet, die billiger war. Die unten angegebenen Preise und Informationen gelten zum 30. Dezember 2015.
Modell- | GPU | vCPU | Erinnerung(GiB) | SSD-Speicher(GB) | Gebühr-Oregon(USA) |
---|---|---|---|---|---|
g2.2xlarge | GRID K520 x 1 | 8 | 15 | 1 x 60 | $0.65 /1 Stunde |
g2.8xlarge | GRID K520 x 4 | 32 | 60 | 2 x 120 | $2.6 /1 Stunde |
Unter hier finden Sie Verbindungen zu Linux-Instanzen. Ich fuhr mit Bezug auf [hier] fort (https://gist.github.com/erikbern/78ba519b97b440e10640). Installieren Sie zunächst die erforderliche Software.
$ sudo apt-get update
$ sudo apt-get upgrade -y #Wählen Sie "Paketbetreuer-Version installieren".
$ sudo apt-get install -y build-essential python-pip python-dev git python-numpy swig python-dev default-jdk zip zlib1g-dev ipython
Nouveau Blacklist hinzugefügt, um Konflikte mit NVIDIA-Treibern zu vermeiden.
$ 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
Es wird neu gestartet. Melden Sie sich erneut an und führen Sie die folgenden Schritte aus. Ich verstehe nicht, warum ich es hier brauche.
$ 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`
Installieren Sie dann CUDA und cuDNN. Weitere Informationen finden Sie unter Offizielle Dokumentation hier. Die zu installierende Version muss wie folgt sein.
Installieren Sie zuerst 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
Installieren Sie dann cuDNN. cuDNN ist eine Bibliothek, die sich darauf spezialisiert hat, das Lernen von tiefen neuronalen Netzen auf GPUs zu beschleunigen. Dieser Artikel ist hilfreich. Um cuDNN zu erhalten, müssen Sie sich für ein NVIDIA-Entwicklerkonto registrieren. Da es mit wget nicht verfügbar ist, laden Sie es einmal in der lokalen Umgebung von hier herunter. Übertragen Sie die heruntergeladene Datei lokal per SCP. Das Folgende ist ein Beispiel für die Übertragung von Linux. xxxxx.amazonaws.com ist das öffentliche DNS des AMI.
#Arbeiten Sie vor Ort
#Übertragung per SCP an AMI
$ scp -i /path/my-key-pair.pem cudnn-6.5-linux-x64-v2.tgz [email protected]:~
Entpacken Sie die Übertragung nach Abschluss und kopieren Sie sie in das cuda-Verzeichnis.
#Arbeiten mit 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/
Geh durch den Weg.
$ vi .bashrc #Verwenden Sie vi oder nano, um die folgenden zwei Zeilen auszuführen.Zu bashrc hinzugefügt
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/usr/local/cuda/lib64"
export CUDA_HOME=/usr/local/cuda
$ source .bashrc # .Reflektieren Sie die Basiseinstellungen
Der im AMI verfügbare Speicherplatz ist nicht sehr groß. Danach benötigen Sie ausreichend Speicherplatz, wenn Sie mit Bazel erstellen oder Trainingsdaten herunterladen. Beim Erstellen einer Instanz ist genügend Speicherplatz im kurzlebigen Speicher (/ mnt / oder weniger) vorhanden. Erstellen Sie daher eine symbolische Verknüpfung. Sie können nvidia_installers und cudnn-6.5-linux-x64-v2.tgz löschen, die Sie nicht mehr verwenden.
$ 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/Erstellen Sie einen symbolischen Link zu
$ sudo mkdir /mnt/tmp
$ sudo chmod 777 /mnt/tmp
$ sudo rm -rf /tmp
$ sudo ln -s /mnt/tmp /tmp
** Hinweis: Wenn die Instanz gestoppt wird, wird alles unter / mnt / gelöscht. Speichern Sie die Daten, die im AMI-Image verbleiben müssen, nicht in / tmp /. ** ** ** Für die später beschriebene öffentliche AMI haben wir ein Shell-Skript (create_tmp_on_ephemeral_storage.sh) vorbereitet, das beim Erstellen einer Instanz oder beim Neustart tmp im kurzlebigen Speicher erstellt.
Installieren Sie das Build-Tool 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
Installieren Sie dann TensorFlow. "./configure" wird mit Optionen wie "TF_UNOFFICIAL_SETTING = 1 ./ configure" ausgeführt, wie in hier beschrieben. Machen. Dies macht es zu einer inoffiziellen Einstellung, die auch mit Cuda Compute Capability 3.0 kompatibel ist.
$ cd /mnt/tmp
$ git clone --recurse-submodules https://github.com/tensorflow/tensorflow
$ cd tensorflow
$ TF_UNOFFICIAL_SETTING=1 ./configure
Während der Konfiguration habe ich folgende Fragen: Standardmäßig werden nur die Cuda-Rechenfunktionen 3.5 und 5.2 unterstützt. Fügen Sie daher 3.0 wie unten gezeigt hinzu.
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.Addiere 0
Erstellen Sie TensorFlow.
$ bazel build -c opt --config=cuda //tensorflow/cc:tutorials_example_trainer
Erstellen und installieren Sie dann das TensorFlow Python-Paket. Der Teil "/tmp/tensorflow_pkg/tensorflow-0.6.0-cp27-none-linux_x86_64.whl" sollte mit dem Dateinamen der tatsächlich generierten Version übereinstimmen.
$ 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
Damit ist die Installation abgeschlossen.
Versuchen Sie es zuerst mit einer g2.2xlarge-Instanz.
$ cd tensorflow/models/image/cifar10/
$ python cifar10_multi_gpu_train.py
Die Ergebnisse sind wie folgt.
2016-01-01 09:08:55.345446: step 100, loss = 4.49 (285.9 examples/sec; 0.448 sec/batch)
Versuchen Sie es außerdem mit g2.8xlarge. Setzen Sie die Anzahl der GPUs in Zeile 63 von cifar10_multi_gpu_train.py wie unten gezeigt auf 4. Wenn Sie dies nicht tun, werden anscheinend vier GPUs verwendet, aber es wird nicht beschleunigt, wahrscheinlich weil die Parallelisierung nicht richtig funktioniert.
tf.app.flags.DEFINE_integer('num_gpus', 4,
"""How many GPUs to use.""")
Ausführungsergebnis. Es war ziemlich schnell.
2016-01-01 09:33:24.481037: step 100, loss = 4.49 (718.2 examples/sec; 0.178 sec/batch)
Das diesmal erstellte Bild wird in der Community AMI von AWS Oregon (US) veröffentlicht. ubuntu14.04_tensorflow0.6.0_gpu - ami-69475f08 Führen Sie nach dem Erstellen der Instanz create_tmp_on_ephemeral_storage.sh aus, um das Verzeichnis / tmp im kurzlebigen Speicher zu erstellen.
$ ./create_tmp_on_ephemeral_storage.sh
Recommended Posts