[PYTHON] Von nichts unter Ubuntu 18.04 bis zum Einrichten einer Deep Learning-Umgebung auf Tensor

Einführung

Abgesehen von meinen Nachforschungen habe ich mich entschlossen, CNN als Teilzeitjob zu berühren, und dachte, ich könnte die GPU nicht auf meinem Mac ausführen und sie nicht einfach drehen, also werde ich Linux ausführen, was ich nicht bewältigen konnte! Dies ist ein Artikel, den ich vorerst geschrieben habe.

Um es einfach auszudrücken, ich habe einen Benutzer von einem Linux-Server im Labor, daher ist es eine Erinnerung, als ich die GPU mit Tensor usw. ausführen konnte. Es lebe dein eigenes Memo.

Grundsätzlich werden wir fortfahren, während wir uns auf diese [Ausführen von TensorFlow-gpu mit Ubuntu 18.04] beziehen (https://qiita.com/sho8e69/items/66c1662c49ac89a024be).

Englisch, aber Eine Schritt-für-Schritt-Anleitung zur Installation der Tensorflow-GPU unter Ubuntu 18.04 LTS -04-lts-6feceb0df5c0) war ebenfalls hilfreich.

Umgebung

Verfahren

Passwort ändern

Ich habe den Benutzer mit sudo-Berechtigung, also ändern wir das Passwort

$ passwd [Nutzername]

(current) UNIX password: 
Enter new UNIX password: 
Retype new UNIX password: 

Geben Sie nach Eingabe des aktuellen Passworts das neue Passwort zweimal ein und Sie sind fertig.

passwd: password updated successfully

Installation des Nvidia-Treibers

Überprüfen Sie vorerst den aktuellen Status mit dem folgenden Befehl.

$ nvidia-smi

Dann,

Wed Nov 20 13:44:59 2019       
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 390.129                Driver Version: 390.129                   |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|===============================+======================+======================|
|   0  Quadro K620         Off  | 00000000:02:00.0  On |                  N/A |
| 34%   39C    P8     1W /  30W |    124MiB /  1994MiB |      0%      Default |
+-------------------------------+----------------------+----------------------+
|   1  GeForce GTX 108...  Off  | 00000000:03:00.0 Off |                  N/A |
| 23%   40C    P8    26W / 250W |      2MiB / 11178MiB |      0%      Default |
+-------------------------------+----------------------+----------------------+
                                                                               
+-----------------------------------------------------------------------------+
| Processes:                                                       GPU Memory |
|  GPU       PID   Type   Process name                             Usage      |
|=============================================================================|
|    0      2599      G   /usr/lib/xorg/Xorg                            49MiB |
|    0      2929      G   /usr/bin/gnome-shell                          71MiB |
+-----------------------------------------------------------------------------+

Es scheint, dass es bereits installiert ist. Als nächstes werden wir CUDA cuDNN vorstellen.

Installation von CUDA 9.0 und cuDNN

Dies wird vorerst auch durch den folgenden Befehl bestätigt.

$ nvcc -V
Command 'nvcc' not found, but can be installed with:

apt install nvidia-cuda-toolkit
Please ask your administrator.

Es scheint, dass dies installiert werden muss. Es heißt "Bitte fragen Sie Ihren Administrator". Ich bin froh, dass ich die Administratorberechtigung erhalten habe.

Fahren wir mit der Installation fort.

Dies dient als Referenz Führen Sie TensorFlow-gpu auf ubuntu18.04 aus Oder Tensorflow mit GPU in Ubuntu 18.04 einfügen Die neueste CUDA 10.0 besagt dann, dass Tensorflow-gpu nicht unterstützt wird, sodass CIDA 9.0 installiert wurde.

Beide Artikel sind ungefähr ein Jahr alt, also ab dem 20. November 2019, wenn Sie sich die offizielle Website von Tensorflow ansehen.

The following NVIDIA® software must be installed on your system: NVIDIA® GPU drivers —CUDA 10.0 requires 410.x or higher. CUDA® Toolkit —TensorFlow supports CUDA 10.0 (TensorFlow >= 1.13.0) CUPTI ships with the CUDA Toolkit. cuDNN SDK (>= 7.4.1) (Optional) TensorRT 5.0 to improve latency and throughput for inference on some models.

Wurde geschrieben.

CUDA® Toolkit —TensorFlow supports CUDA 10.0 (TensorFlow >= 1.13.0) Es scheint also, dass CUDA 10.0 in Ordnung ist, wenn Sie TensorFlow von 1.13.0 oder höher verwenden.

Es heißt jedoch "NVIDIA® GPU-Treiber - CUDA 10.0 erfordert 410.x oder höher". Was war die Version von NVIDIA? Ich werde zurückkehren, um zu bestätigen.

$ nvidia-smi
Wed Nov 20 13:44:59 2019       
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 390.129                Driver Version: 390.129                   |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|===============================+======================+======================|
|   0  Quadro K620         Off  | 00000000:02:00.0  On |                  N/A |
| 34%   39C    P8     1W /  30W |    124MiB /  1994MiB |      0%      Default |
+-------------------------------+----------------------+----------------------+
|   1  GeForce GTX 108...  Off  | 00000000:03:00.0 Off |                  N/A |
| 23%   40C    P8    26W / 250W |      2MiB / 11178MiB |      0%      Default |
+-------------------------------+----------------------+----------------------+
                                                                               
+-----------------------------------------------------------------------------+
| Processes:                                                       GPU Memory |
|  GPU       PID   Type   Process name                             Usage      |
|=============================================================================|
|    0      2599      G   /usr/lib/xorg/Xorg                            49MiB |
|    0      2929      G   /usr/bin/gnome-shell                          71MiB |
+-----------------------------------------------------------------------------+

Es war 390.120. Es scheint entweder nvidia zu aktualisieren oder CUDA auf 9.0 zu setzen.

Ist es okay für die GPU, die ich überhaupt benutze? Ich dachte nach und bestätigte es unter hier.

スクリーンショット 2019-11-20 14.33.03.png Geben Sie den Namen des Produkts ein und klicken Sie auf SUCHEN. スクリーンショット 2019-11-20 14.33.16.png

Es wurde empfohlen, die Version 440.31 des Treibers zu installieren. Anscheinend ist es überhaupt in Ordnung.

Nachdem ich nvidia aktualisiert und TensorFlow 1.13.0 und CUDA 10.0 installiert hatte oder mir etwa 30 Sekunden lang Gedanken über TensorFlow 1.12.0 oder früher und CUDA 9.0 gemacht hatte, entschied ich mich für Letzteres.

Nun, es ist ein gemeinsam genutzter Server, daher wäre es ein Problem, wenn es ein Update gäbe, und es ist sicherer, eines vor dem letzten zu sein.

Übrigens, um die Versionsbeziehung von Nvidia, CUDA, TensorFlow usw. zu untersuchen, dieser Artikel → [Nvidia-Treiber, CUDA, cuDNN, Tensorflow-gpu, Python-Versionskorrespondenz](https://qiita.com/konzo_ / items / a6f2e8818e5e8fcdb896) War sehr hilfreich! Vielen Dank.

Fahren Sie abschließend mit der Installation von CUDA 9.0 fort. Offizielle NVIDIA-Installationsseite → CUDA Toolkit 9.0-Downloads Wählen Sie bis. Ist es okay, weil es keinen 18.04 gibt? Ich dachte, aber als ich es nachgeschlagen habe, scheint es, dass 17.04 in Ordnung ist.

スクリーンショット 2019-11-20 14.57.10.png スクリーンショット 2019-11-20 16.56.10.png

Da ich diesmal lokal arbeite, werde ich es herunterladen und mit scp an den Server senden.

local


$ scp -P [Port-Nummer] Downloads/cuda-repo-ubuntu1704_9.0.176-1_amd64.deb [Nutzername]@[IP Adresse]:[Zielpfad kopieren]

Normalerweise wird der Port -p angegeben, aber wenn scp, ist es -P.

$ wget http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/[Deb-Datei]

Aber es ist okay.

Fahren Sie danach mit der Installation gemäß der offiziellen Website fort. ** Außerdem scheint die neueste Version installiert zu werden, wenn die letzte "sudo apt-get install cuda" verwendet wird. Daher scheint es wichtig, die dem Ende entsprechende Version anzugeben. Dieses Mal wird -toolkit-9-0 hinzugefügt. ** ** **

$ sudo dpkg -i cuda-repo-ubuntu1704_9.0.176-1_amd64.deb
$ sudo apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1704/x86_64/7fa2af80.pub
$ sudo apt-get update
$ sudo apt-get install cuda-toolkit-9-0

Als nächstes scheint es notwendig zu sein, den PATH zu durchlaufen. Geben Sie den folgenden Befehl ein und bearbeiten Sie ".bashrc".

$ nano ~/.bashrc

Geben Sie am Ende die folgende Zeichenfolge ein und speichern Sie.

.bashrc


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

Starten Sie neu

$ sudo reboot

Überprüfen Sie nach dem Start, ob CUDA mit dem folgenden Befehl installiert ist.

$ nvcc -V
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2017 NVIDIA Corporation
Built on Fri_Sep__1_21:08:03_CDT_2017
Cuda compilation tools, release 9.0, V9.0.176

Wird angezeigt, also OK.

CuDNN installieren

cuDNN ist eine mit CUDA installierte Mehrfachbibliothek und scheint für die Hochgeschwindigkeitsberechnung auf einer GPU mit CUDA verwendet zu werden.

Sie müssen auf die folgende Site zugreifen und sich als Mitglied registrieren. https://developer.nvidia.com/rdp/cudnn-download

Installieren Sie danach die folgenden 3 von Download cuDNN v7.6.4 for CUDA 9.0.

Führen Sie die folgenden Befehle der Reihe nach im heruntergeladenen Verzeichnis aus. Ändern Sie die Version entsprechend in die heruntergeladene Version.

$ sudo dpkg -i libcudnn7_7.6.4.38-1+cuda9.0_amd64.deb
$ sudo dpkg -i libcudnn7-dev_7.6.4.38-1+cuda9.0_amd64.deb
$ sudo dpkg -i libcudnn7-doc_7.6.4.38-1+cuda9.0_amd64.deb

Damit ist die Installation von cuDNN abgeschlossen.

Installation von Pyenv und Anaconda, Umgebungskonstruktion (Python-Umgebungskonstruktion)

Ich möchte eine Umgebung erstellen, in der ich Anaconda von pyenv aus installieren und mit Anaconda eine virtuelle Umgebung erstellen kann, während pyenv jederzeit zwischen Anaconda-Versionen wechseln kann.

pyenv

$ git clone https://github.com/yyuu/pyenv.git ~/.pyenv
$ nano ~/.bashrc

Fügen Sie nach der Installation Folgendes zu .bashrc hinzu.

.bashrc


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

Fahren Sie nach dem Neustart und der Bestätigung, dass der Pyenv-Pfad vorhanden ist, mit der Installation von Anaconda fort.

Anaconda

$ pyenv install --list | grep anaconda

Überprüfen Sie die Version von Anaconda, mit der installiert werden kann. Installieren Sie dieses Mal 5.2.0.

$ pyenv install anaconda3-5.2.0

Wechseln Sie die Version und prüfen Sie, ob sie wiedergegeben wird.

$ pyenv global anaconda3-5.2.0
$ pyenv versions
  system
* anaconda3-5.2.0 (set by /home/okuda/.pyenv/version)
$ python --version
Python 3.6.5 :: Anaconda, Inc.

Sieht gut aus.

Erstellen Sie als Nächstes eine virtuelle Umgebung mit anaconda.

$ conda -V
conda 4.5.4

Stellen Sie sicher, dass es richtig funktioniert

$ conda create -n tensor pip python=3.6

Erstellen Sie eine virtuelle Umgebung mit dem Namen "Tensor". Installieren Sie pip und python3.6 zusammen.

Und ich möchte die virtuelle Umgebung wechseln, Bei Verwendung von Anaconda in der Pyenv-Umgebung kann "conda enable" nicht so verwendet werden, wie es ist.

$ conda activate tensor
CommandNotFoundError: Your shell has not been properly configured to use 'conda activate'.
If your shell is Bash or a Bourne variant, enable conda for the current user with

    $ echo ". /home/okuda/.pyenv/versions/anaconda3-5.2.0/etc/profile.d/conda.sh" >> ~/.bashrc

or, for all users, enable conda with

    $ sudo ln -s /home/okuda/.pyenv/versions/anaconda3-5.2.0/etc/profile.d/conda.sh /etc/profile.d/conda.sh

The options above will permanently enable the 'conda' command, but they do NOT
put conda's base (root) environment on PATH.  To do so, run

    $ conda activate

in your terminal, or to put the base environment on PATH permanently, run

    $ echo "conda activate" >> ~/.bashrc

Previous to conda 4.4, the recommended way to activate conda was to modify PATH in
your ~/.bashrc file.  You should manually remove the line that looks like

    export PATH="/home/okuda/.pyenv/versions/anaconda3-5.2.0/bin:$PATH"

^^^ The above line should NO LONGER be in your ~/.bashrc file! ^^^

Ich werde böse.

If your shell is Bash or a Bourne variant, enable conda for the current user with

$ echo ". /home/okuda/.pyenv/versions/anaconda3-5.2.0/etc/profile.d/conda.sh" >> ~/.bashrc

Weil es so geschrieben ist, wie es ist

$ echo ". /home/okuda/.pyenv/versions/anaconda3-5.2.0/etc/profile.d/conda.sh" >> ~/.bashrc

Wenn Sie bashrc erneut ausführen und lesen

$ source .bashrc
$ conda activate tensor
(tensor) :~$ 

Es hat sicher geschaltet!

Der Rest ist die Installation der notwendigen Bibliotheken. Installieren Sie zunächst das berühmte Framework TensorFlow.

TensorFlow-GPU-Installation

Die Version befindet sich auf der offiziellen TensorFlow-Website. スクリーンショット 2019-11-20 18.53.45.png スクリーンショット 2019-11-20 18.52.49.png Laden Sie dieses Mal also tensorflow_gpu-1.12.0 herunter.

$ pip install tensorflow-gpu==1.12.0

Überprüfen Sie nach Abschluss des Vorgangs, ob TensorFlow auf der GPU funktioniert.

$ python 
Python 3.6.9 |Anaconda, Inc.| (default, Jul 30 2019, 19:07:31) 
[GCC 7.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>>
>>>import tensorflow as tf
>>> tf.test.gpu_device_name()
2019-11-20 19:02:23.713902: I tensorflow/core/platform/cpu_feature_guard.cc:141] Your CPU supports instructions that this TensorFlow binary was not compiled to use: AVX2 FMA
2019-11-20 19:02:24.115406: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1432] Found device 0 with properties: 
name: GeForce GTX 1080 Ti major: 6 minor: 1 memoryClockRate(GHz): 1.582
pciBusID: 0000:03:00.0
totalMemory: 10.92GiB freeMemory: 10.76GiB
2019-11-20 19:02:24.278457: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1432] Found device 1 with properties: 
name: Quadro K620 major: 5 minor: 0 memoryClockRate(GHz): 1.124
pciBusID: 0000:02:00.0
totalMemory: 1.95GiB freeMemory: 1.80GiB
2019-11-20 19:02:24.278929: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1496] Ignoring visible gpu device (device: 1, name: Quadro K620, pci bus id: 0000:02:00.0, compute capability: 5.0) with Cuda multiprocessor count: 3. The minimum required count is 8. You can adjust this requirement with the env var TF_MIN_GPU_MULTIPROCESSOR_COUNT.
2019-11-20 19:02:24.278972: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1511] Adding visible gpu devices: 0
2019-11-20 19:02:24.784359: I tensorflow/core/common_runtime/gpu/gpu_device.cc:982] Device interconnect StreamExecutor with strength 1 edge matrix:
2019-11-20 19:02:24.784436: I tensorflow/core/common_runtime/gpu/gpu_device.cc:988]      0 1 
2019-11-20 19:02:24.784450: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1001] 0:   N N 
2019-11-20 19:02:24.784459: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1001] 1:   N N 
2019-11-20 19:02:24.784905: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1115] Created TensorFlow device (/device:GPU:0 with 10403 MB memory) -> physical GPU (device: 0, name: GeForce GTX 1080 Ti, pci bus id: 0000:03:00.0, compute capability: 6.1)
'/device:GPU:0'

Erkennst du eine andere GPU? Ich werde es etwas später untersuchen. Es ist in Ordnung, weil es zu '/ device: GPU: 0' wurde.

Installieren Sie Jupyter Lab

Von hier aus mag ich Jupyter persönlich, also werde ich es hinzufügen. Ich mag das.

$ conda install jupyterlab

Machen Sie danach das, was Sie mit [hier] gemacht haben (https://qiita.com/nyanco888/items/6da004c78c471a15c0d7), damit Sie remote darauf zugreifen können, und fertig.

Überraschenderweise ist es schwierig, eine GPU zu verwenden. Danke für deine harte Arbeit.

Recommended Posts

Von nichts unter Ubuntu 18.04 bis zum Einrichten einer Deep Learning-Umgebung auf Tensor
Vom Einrichten der Rust-Umgebung bis zum Ausführen von Hello World
Erstellen Sie mit Cloud9 (jupyter miniconda python3) eine Lernumgebung für "Deep Learning von Grund auf neu".
Vom Einrichten des Raspberry Pi bis zur Installation der Python-Umgebung
Schritte zum schnellen Erstellen einer umfassenden Lernumgebung auf einem Mac mit TensorFlow und OpenCV
So erstellen Sie eine neue virtuelle Python-Umgebung unter Ubuntu
Hinweise zum Laden einer virtuellen Umgebung mit PyCharm
Erstellen einer Python-Umgebung unter Ubuntu
Ab Ubuntu 20.04 Einführung in die Umgebungskonstruktion
Deep Learning Tutorial aus dem Umgebungsbau
So erstellen Sie eine Python-Umgebung mit Virtualenv unter Ubuntu 18.04 LTS
Von der Installation von Ansible bis zum Erstellen einer Python-Umgebung in der virtuellen Umgebung von Vagrant
Shellscript zum Erstellen einer Pyenv-Umgebung auf Ubuntu auf einmal
Alles vom Erstellen einer Python-Umgebung bis zur Ausführung unter Windows
[Deep Learning von Grund auf neu] Informationen zu den Ebenen, die für die Implementierung der Backpropagation-Verarbeitung in einem neuronalen Netzwerk erforderlich sind
Verbessertes Lernen, um von null bis tief zu lernen
So installieren Sie das Deep Learning Framework Caffe auf einem Mac im CPU-Modus
Schritte zum Installieren der Python-Umgebung unter Ubuntu
Eine Geschichte über einen Anfänger im Deep Learning, der versucht, Gitarren mit CNN zu klassifizieren
Bildausrichtung: von SIFT bis Deep Learning
"Deep Learning von Grund auf neu" mit Haskell (unvollendet)
[Windows 10] Aufbau einer "Deep Learning from Scratch" -Umgebung
Lesen von Umgebungsvariablen aus einer ENV-Datei mit PyCharm (für Mac)
Einführung in Docker Erstellen einer Ubuntu-Umgebung in Ubuntu
Deep Learning von Grund auf neu - Kapitel 4 Tipps für die in Python erlernte Theorie und Implementierung von Deep Learning
Verwenden Sie dHash, um eine Szene in einem Rennspiel auf der Strecke zu lokalisieren
Erstellen Sie eine Python-Umgebung, um die Theorie und Implementierung von Deep Learning zu erlernen
Ich habe versucht, die Strichzeichnung mit Deep Learning aus dem Bild zu extrahieren
Erstellen Sie Einstellungen in Terraform, um Nachrichten von AWS Lambda Python3.8 an Slack zu senden
Erstellen Sie eine PYNQ-Umgebung auf Ultra96 V2 und melden Sie sich bei Jupyter Notebook an
So installieren Sie das Deep Learning Framework Tensorflow 1.0 in der Windows Anaconda-Umgebung
Deep Learning von Grund auf neu ① Kapitel 6 "Lerntechniken"
GitHub des guten Buches "Deep Learning von Grund auf neu"
[Neueste] So erstellen Sie eine Java-Umgebung unter Ubuntu
Installieren Sie das Python-Paket in einer persönlichen Umgebung unter Ubuntu
Hinweise zum maschinellen Lernen (von Zeit zu Zeit aktualisiert)
[Venv] Erstellen Sie eine virtuelle Python-Umgebung unter Ubuntu
Erstellen Sie eine Kubernetes-Umgebung für die Entwicklung unter Ubuntu
Richten Sie eine Python-Entwicklungsumgebung auf Marvericks ein
So bereiten Sie die Umgebung mit Courseras fortgeschrittenem Kurs für maschinelles Lernen auf Google Colab vor
Erstellen Sie eine maschinelle Lernumgebung mit PyCharm in einer Ubuntu-Umgebung (TensorFlow wird ebenfalls eingeführt!).
Ich habe versucht, eine Umgebung mit WSL + Ubuntu + VS-Code in einer Windows-Umgebung zu erstellen
Versuchen Sie, eine Blackjack-Strategie zu entwickeln, indem Sie das Lernen stärken (② Registrieren Sie die Umgebung im Fitnessstudio).
Verschieben Sie auf einem PC, der nicht von NVMe booten kann, / usr usw. zu NVMe, um die Geschwindigkeit zu erhöhen
So stellen Sie pyenv unter Amazon Linux und Ubuntu ein, um eine Python 3.6.0-Umgebung zu erstellen
Memo Ein Anfänger hat versucht, eine Java-Umgebung zu erstellen und unter Ubuntu 18.04.2 LTS ins Japanische zu übersetzen.
Betreiben Sie mongoDB von Python in einer Ubuntu-Umgebung. ① Einführung von mongoDB
So richten Sie eine Python-Umgebung mit pyenv ein
# 2 Erstellen Sie eine Python-Umgebung mit einer EC2-Instanz von AWS (ubuntu18.04).
Richten Sie mit Samba einen Dateiserver unter Ubuntu 20.04 ein
Erstellen Sie eine Python-Umgebung für maschinelles Lernen unter Mac OS
Ein Memorandum zur Verwendung von Keras 'keras.preprocessing.image
Ich habe eine Python3-Umgebung unter Ubuntu mit direnv erstellt.
So erstellen Sie eine Django (Python) -Umgebung auf Docker
Richten Sie in 30 Minuten einen kostenlosen Server unter AWS ein
Learning Deep Forest, ein neues Lerngerät, das mit DNN vergleichbar ist
Ich habe versucht, Dropout zu erklären
So erstellen Sie eine Python-Umgebung unter Amazon Linux 2