Ein Linux-Computer mit einer GPU ist für DeepLearning unerlässlich.
Es kostet jedoch Zeit und Geld, eine GPU-Maschine selbst vorzubereiten Lassen Sie uns einfach einen Hochleistungs-Linux-Computer mit AWS (Amazon Web Service) vorbereiten.
Nehmen Sie für die Instanz (Computer in AWS) die folgenden Bedingungen an.
In AMI können Sie neben Ubuntu auch Amazon Linux usw. auswählen. Da Probleme häufig im Zusammenhang mit Paketen auftreten, wird empfohlen, normales Ubuntu zu verwenden.
Standardmäßig sind also nur SSH-Verbindungen zulässig Selbst wenn ich einen Server in AWS einrichte, kann ich nicht darauf zugreifen. Ping fliegt auch nicht.
Konfigurieren Sie die Sicherheitsgruppe für den Zugriff auf Port 8888 des TCP-Protokolls.
AWS erfordert, dass die Instanz für einen Neustart gestoppt wird. Die öffentliche IP ändert sich jedes Mal, wenn ich die Instanz stoppe.
Um die öffentliche IP zu reparieren, registrieren Sie daher die elastische IP und weisen Sie sie der Instanz zu.
Laden Sie die SSH-Client-Software [Tera Term] herunter (https://osdn.jp/projects/ttssh2/).
Stellen Sie eine Verbindung zur öffentlichen IP der Instanz her. Wenn Sie einen Schlüssel angeben, der beim Erstellen einer Instanz mit dem Benutzernamen "ubuntu" heruntergeladen werden kann, Legen Sie es in die Konsole der Instanz.
Jetzt als Ubuntu arbeiten.
Zu diesem Zeitpunkt haben Sie eine Instanz in AWS.
Aber die Instanz g2.2xlarge hat eine GPU, Standardmäßig ist die GPU nicht verfügbar.
Installieren Sie daher Folgendes, um Deep Learning auf der GPU zu aktivieren.
Aktualisieren Sie zunächst das Paketverwaltungssystem. Sie können auch apt-get anstelle von aptitude verwenden.
bash
$ sudo aptitude update
$ sudo aptitude -y full-upgrade
$ sudo aptitude install -y build-essential cmake
Als nächstes möchte ich den Grafiktreiber aktualisieren. Stoppen Sie zunächst den Standard-Grafiktreiber (Nouveau).
Nach dem Erstellen der folgenden Einstellungsdatei
bash:/etc/modprobe.d/blacklist-nouveau.conf
blacklist nouveau
blacklist lbm-nouveau
options nouveau modeset=0
alias nouveau off
alias lbm-nouveau off
bash:/etc/modprobe.d/nouveau-kms.conf
options nouveau modeset=0
Drücken Sie den Stoppbefehl von Bash.
bash
$ sudo update-initramfs -u
Starten Sie nun die Instanz neu. Mit AWS können Sie also nicht mit dem Befehl reboot neu starten Stoppen Sie die Instanz und starten Sie sie über die AWS-Konsole neu.
Laden Sie den Treiber von der [offiziellen NVIDIA-Seite] herunter (http://www.nvidia.co.jp/Download/index.aspx?lang=jp).
Sie können direkt vom Download-Ziel zur Instanz wechseln oder den heruntergeladenen Treiber per Tera Term oder ähnlichem senden.
Verwenden Sie den folgenden Befehl, um den Treiber zu installieren.
bash
$ sudo aptitude install -y linux-image-extra-virtual linux-source linux-headers-`uname -r`
$wget "Treiber".run
$sudo sh "Fahrer".run -a --disable-nouveau
Starten Sie nun die Instanz erneut, um die Treiberinstallation abzuschließen.
Laden Sie das Repository für cuda von der CUDA Official Page herunter.
Sobald Sie das heruntergeladene Repository aktiviert haben, können Sie cuda von aptitude (apt-get) installieren.
bash
$wget "Repository".deb
$ sudo dpkg -i "Repository"
$ sudo aptitude update
$ sudo aptitude install -y cuda
$ sudo reboot
Laden Sie cuDNN von der NVIDIA-Seite herunter (https://developer.nvidia.com/cudnn). Für diesen Download ist eine Kontoregistrierung erforderlich. Erstellen Sie daher ein entsprechendes Konto.
Da die Archivdatei von cuDNN nicht direkt von wget abgerufen wird, Muss über Tera Term usw. an die Instanz gesendet werden.
bash
$ tar -xvf 『cnDNN』.tgz
$ cd cuda
$ sudo cp include/cudnn.h /usr/local/『cuda-X.X』/include/
$ sudo cp lib64/libcudnn* /usr/local/『cuda-X.X』/lib64
$ sudo ldconfig /usr/local/cuda/lib64
Wenn ldconfig fehlschlägt, löschen Sie die in Konflikt stehende Datei.
Geh zurück nach Hause und schreibe .bashrc neu.
bash
$ cd ~
$ vim .bashrc
~/.bashrc
export PATH=/usr/local/『cuda-X.X』/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/『cuda-X.X』/lib64:$LD_LIBRARY_PATH
Aktivieren Sie abschließend den Inhalt von .bashrc.
bash
$ source .bashrc
Wenn CUDA-Informationen angezeigt werden, geben Sie den folgenden Befehl ein: Die Einstellungen für die GPU sind abgeschlossen.
bash
$ nvcc -V
Python wird verwendet, um DeepLearning zu implementieren. Um die mathematischen Berechnungsmodule und die Entwicklungsumgebung von Python (Jupyter Notebook) in einem Stapel zusammenzufassen Installieren Sie eine Distribution namens Anaconda.
Darüber hinaus Theano von der Deep Learning Library und Ermöglicht die Verwendung von openCV, einer Bildverarbeitungsbibliothek.
bash
$ wget https://3230d63b5fc54e62148e-c95ac804525aac4b6dba79b00b39d1d3.ssl.cf1.rackcdn.com/Anaconda3-2.4.1-Linux-x86_64.sh
$ bash Anaconda3-2.4.1-Linux-x86_64.sh
$ source .bashrc
Ich habe den Befehl bash verwendet, weil sh nicht funktioniert hat.
bash
$ sudo aptitude install git
$ pip install git+git://github.com/Theano/Theano.git --upgrade --no-deps
Wenn Sie Theano direkt mit pip ziehen, ohne git zu durchlaufen, können einige ältere Module einen Fehler auslösen.
Mit Anaconda können Sie openCV auch in einer Zeile installieren.
bash
$ conda install -c https://conda.binstar.org/menpo opencv3
So überprüfen Sie den Erfolg oder Misserfolg des vorherigen Setups
gpu_check.py
from theano import function, config, shared, sandbox
import theano.tensor as T
import numpy
import time
vlen = 10 * 30 * 768 # 10 x #cores x # threads per core
iters = 1000
rng = numpy.random.RandomState(22)
x = shared(numpy.asarray(rng.rand(vlen), config.floatX))
f = function([], T.exp(x))
print(f.maker.fgraph.toposort())
t0 = time.time()
for i in range(iters):
r = f()
t1 = time.time()
print("Looping %d times took %f seconds" % (iters, t1 - t0))
print("Result is %s" % (r,))
if numpy.any([isinstance(x.op, T.Elemwise) for x in f.maker.fgraph.toposort()]):
print('Used the cpu')
else:
print('Used the gpu')
Führen Sie das obige Python-Skript (gpu_check.py) mit dem folgenden Befehl aus.
bash
$ THEANO_FLAGS=mode=FAST_RUN,device=gpu,floatX=float32 python gpu_check.py
Das Ergebnis dieser Ausführung ist
bash
Using gpu device 0: GeForce GTX 580
[GpuElemwise{exp,no_inplace}(<CudaNdarrayType(float32, vector)>), HostFromGpu(GpuElemwise{exp,no_inplace}.0)]
Looping 1000 times took 0.638810873032 seconds
Result is [ 1.23178029 1.61879349 1.52278066 ..., 2.20771813 2.29967761
1.62323296]
Used the gpu
Wenn ja, können Sie bestätigen, dass Theano auf der GPU ausgeführt wird.
Sie haben jetzt AWS für Deep Learning eingerichtet.
Lassen Sie uns abschließend die Entwicklungsumgebung starten und künstliche Intelligenz implementieren.
bash
$ jupyter notebook --no-browser --ip="*"
Installation des Grafiktreibers / CUDA unter AWS: http://qiita.com/shinya_ohtani/items/f374ed0dd51737087369
Installation von cuDNN: http://www.computervisionbytecnalia.com/es/2016/06/deep-learning-development-setup-for-ubuntu-16-04-xenial/
Einstellungen der cuDNN-Umgebungsvariablen: http://qiita.com/bohemian916/items/a48e6496b04bbbf09fb3
Anaconda-Installation: http://morimori2008.web.fc2.com/contents/PCprograming/python/pythonAnaconda.html
Theano installieren: https://github.com/fchollet/keras/issues/1888
Installieren Sie openCV: http://hikuichi.hatenablog.com/entry/2015/12/22/124044
Führen Sie Theano auf der GPU aus: http://deeplearning.net/software/theano/tutorial/using_gpu.html
Recommended Posts