Erstellen Sie eine Python-Ausführungsumgebung mithilfe der GPU mit der GCP Compute Engine

Hintergrund und was Sie tun möchten

In meiner Abschlussforschung musste ich den in tensorflow geschriebenen Code ausführen. Das Programm verbraucht viel Speicher, und der Computer im Labor hat geschrien und nicht funktioniert. Deshalb habe ich [GCP] geweint (https://console.cloud.google.com/home/dashboard?project). Es war notwendig, eine Ausführungsumgebung mit = angelic-turbine-257310 & hl = ja) zu erstellen ... Äh ...

Außerdem bestand der Verdacht (?!), Dass ich ohne GCP nicht rechtzeitig zu meinem Abschluss kommen würde (es ist schwierig). Ich habe eine Python-Ausführungsumgebung erstellt, damit GCP auch verwendet werden kann ...

Zuerst wusste ich überhaupt nicht, wie ich es machen sollte, und ich habe Tage damit verbracht, halb zu schreien (ganz zu schweigen davon, dass meine Forschung nicht gut vorangekommen ist: unschuldig :)! !!

Für diejenigen, die Probleme mit ähnlichen Dingen haben, möchte ich mit der Idee beginnen, dass sogar ein wenig ...!

Umgebungseinstellung

Dieses Mal erstellen wir die Umgebung mit den folgenden Einstellungen.

Es scheint, dass TensolFlow die Version je nach Version mit CUDA abgleichen muss ...: neutral_face: Wenn diese Version nicht synchron ist, wird GCP möglicherweise nicht richtig erkannt Wir empfehlen Ihnen, Folgendes zu überprüfen. (Übrigens habe ich ein paar Fehler gemacht, ja.)

TensolFlow GPU Build Settings

Bauverfahren für die Umwelt

0. Registrierung bei GCP

Referenzseite: Kostenloses Deep Learning (NVIDIA DIGITS) mit GCP-GPU (NVIDIA Tesla K80)

1. Installation von CUDA- und NVIDIA-Treibern

Führen Sie den folgenden Befehl auf der VM-Instanz aus, um CUDA und Treiber zu installieren

$ curl -O http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1604/x86_64/cuda-repo-ubuntu1604_9.0.176-1_amd64.deb
$ sudo dpkg -i cuda-repo-ubuntu1604_9.0.176-1_amd64.deb
$ sudo apt-key adv --fetch-keys http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1604/x86_64/7fa2af80.pub
$ sudo apt-get update
$ sudo apt-get install cuda-9-0

Führen Sie außerdem den folgenden Befehl aus, um die GPU-Leistung zu optimieren.

$ sudo nvidia-smi -pm 1

2. Installieren Sie cuDNN 7.0

Erstellen Sie ein Entwicklerkonto mit Von hier und Download den folgenden drei Dateien von cuDNN. / cudnn-download).

version : ubuntu 16.04 cuda-9.0 version

Laden Sie nach Abschluss des Downloads die drei Dateien auf Starage hoch. Hier lautet der Name des Buckets "cuda_9" (ändern Sie ihn nach Ihren Wünschen!).

Wenn der Upload abgeschlossen ist, verwenden Sie den Befehl gsutil, um ihn unverändert auf die Instanz zu übertragen. Bitte wählen Sie das Verzeichnis zum Hochladen.

$ cd {UP_LOAD_PATH}
$ gsutil cp gs://cuda_9/libcudnn7_7.6.4.38-1+cuda9.0_amd64.deb .
$ gsutil cp gs://cuda_9/libcudnn7-dev_7.6.4.38-1+cuda9.0_amd64.deb .
$ gsutil cp gs://cuda_9/libcudnn7-doc_7.6.4.38-1+cuda9.0_amd64.deb .

Entpacken Sie die Datei nach Abschluss der Übertragung und installieren Sie sie.

$ sudo dpkg -i *.deb

3. Tauschen Sie die Dateieinstellungen aus

Ohne die Auslagerungsdatei kann während der Programmausführung ein Speicherverlust auftreten. Es scheint, dass beim Erstellen einer virtuellen Linux-Maschine mit GCE, egal ob mUbuntu oder CentOS, die virtuelle Maschine ohne Auslagerungsdatei erstellt wird ... (Ich wusste das nicht einmal einen Millimeter, also blieb ich hier stecken)

Überprüfen Sie also zuerst das Vorhandensein von Swap mit dem Befehl free.

$ free -m

Wenn es wie folgt aussieht, ist Swap: Null, daher müssen Sie eine Swap-Datei erstellen.

               total        used        free      shared  buff/cache   available
Mem:            581         148          90           0         342         336
Swap:             0           0           0

Auslagendatei erstellen. Die Kapazität der Auslagerungsdatei ist Ihre Wahl (diesmal 10G)

$ sudo fallocate -l 10G /swapfile
$ sudo chmod 600 /swapfile
$ sudo mkswap /swapfile
$ sudo swapon /swapfile

Überprüfen Sie die Auslagerungsdatei

$ free -m
               total        used        free      shared  buff/cache   available
Mem:            581         148          88           0         344         336
Swap:          1023           0        10023

** Tipps **: Um die Auslagerungsdatei beim Neustart automatisch bereitzustellen, sollten Sie anscheinend Folgendes zu / etc / fstab hinzufügen.

/swapfile none swap sw 0 0

4. Bestätigung der GPU-Erkennung und CUDA-Einstellungen

Wir werden CUDA einrichten.

$ echo "export PATH=/usr/local/cuda-9.0/bin\${PATH:+:\${PATH}}" >> ~/.bashrc
$ source ~/.bashrc
$ sudo /usr/bin/nvidia-persistenced

Überprüfen Sie dann, ob die GPU erkannt wird.

$ nvidia-smi

Wenn Sie die folgende Antwort erhalten, sind die GPU-Einstellungen abgeschlossen!

+-----------------------------------------------------------------------------+
| NVIDIA-SMI 410.72       Driver Version: 410.72       CUDA Version: 10.0     |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|===============================+======================+======================|
|   0  Tesla K80           Off  | 00000000:00:04.0 Off |                    0 |
| N/A   42C    P0    65W / 149W |      0MiB / 11441MiB |    100%      Default |
+-------------------------------+----------------------+----------------------+

+-----------------------------------------------------------------------------+
| Processes:                                                       GPU Memory |
|  GPU       PID   Type   Process name                             Usage      |
|=============================================================================|
|  No running processes found                                                 |
+-----------------------------------------------------------------------------+

5. Erstellen Sie eine Python-Umgebung

Schließlich werden wir mit Anadonda eine Python-Umgebung erstellen. (Ich benutze normalerweise Anaconda und warum das Programm nicht mit anderen Methoden funktioniert hat, also habe ich mich diesmal für Anaconda entschieden.)

Laden Sie Anaconda mit wget herunter.

$ wget https://repo.anaconda.com/archive/Anaconda3-5.3.1-Linux-x86_64.sh
$ sh ./Anaconda3-5.3.1-Linux-x86_64.sh
$ echo ". /home/{USER_NAME}/anaconda3/etc/profile.d/conda.sh" >> ~/.bashrc
$ source ~/.bashrc

Erstellen Sie als Nächstes die Anaonda-Kostümumgebung. Python-Version und ENV_NAME sind Ihre Wahl. (Dieses Mal möchte ich tensorflow == 1.12.0 verwenden, also Python3.6.5)

$ conda create -n {ENV_NAME} python=3.6.5
$ conda activate {ENV_NAME}

6. Installieren Sie die Tensorflow-GPU

von conda installieren (ich bin erleichtert, wenn ich hierher komme ...)

$ conda install tensorflow-gpu==1.12.0

Führen Sie das folgende Programm aus, und wenn "GPU" angezeigt wird, erkennt "tensorflow-gpu" die GPU.

test.py


from tensorflow.python.client import device_lib
device_lib.list_local_devices()
[name: "/device:CPU:0"
device_type: "CPU"
memory_limit: 268435456
locality {
}
incarnation: 2319180638018740093
, name: "/device:GPU:0"
device_type: "GPU"
memory_limit: 11324325888
locality {
  bus_id: 1
}
incarnation: 13854674477442207273
physical_device_desc: "device: 0, name: Tesla K80, pci bus id: 0000:00:04.0, compute capability: 3.7"
]

Wenn es eine erforderliche Bibliothek gibt, installieren Sie sie außerdem über conda. (↓ so)

$ conda install numpy==1.15.4
$ conda install scipy==1.1.0 
$ conda install scikit-learn==0.20.0

Sie sollten jetzt in der Lage sein, Python-Programme mit GCP auf Ihrer Instanz-Engine-Instanz auszuführen ...! Danke für deine harte Arbeit...!!

Wenn Sie Fehler haben, hinterlassen Sie bitte einen Kommentar: bow_tone2:

Recommended Posts

Erstellen Sie eine Python-Ausführungsumgebung mithilfe der GPU mit der GCP Compute Engine
Erstellen Sie eine Python3 + -Kolbenumgebung auf der Compute Engine von GCP
Erstellen Sie eine Python-Ausführungsumgebung mit VS-Code
Erstellen Sie mit pyenv eine virtuelle Umgebung für Python
Erstellen Sie mit Neovim eine moderne Python-Umgebung
Erstellen Sie einfach eine Python 3-Ausführungsumgebung unter Windows
Erstellen Sie mit Sublime Text3 eine Python3-Build-Umgebung
Erstellen einer Python-Umgebung mit OSX Elcapitan
Erstellen Sie mit IntelliJ schnell eine Python Django-Umgebung
Erstellen Sie eine Python-Umgebung für maschinelles Lernen mit Containern
[Detaillierte Version] Erstellen einer komfortablen Python-Umgebung mit Google Compute Engine (Ubuntu 16.04)
Erstellen Sie eine virtuelle Python-Umgebung mit virtualenv und virtualenvwrapper
Erstellen Sie mit pyenv-virtualenv eine Python-Umgebung für jedes Verzeichnis
Erstellen Sie eine Python3-Umgebung mit Ubuntu 16.04
Erstellen Sie mit direnv eine Python-Umgebung
Erstellen Sie eine virtuelle Python-Umgebung mit venv (Django + MySQL ①)
Erstellen Sie mit pyenv eine Python-Umgebung auf Ihrem Mac
Erstellen Sie mit Python eine Entwicklungsumgebung für maschinelles Lernen
Erstellen Sie eine virtuelle Python-Umgebung mit virtualenv und virtualenvwrapper
Erstellen Sie eine Python-Entwicklungsumgebung mit pyenv unter MacOS
Erstellen Sie die Python-Umgebung offline
(Jetzt) Erstellen Sie eine GPU Deep Learning-Umgebung mit GeForce GTX 960
Starten einer maschinellen Lernumgebung mit Google Compute Engine (GCE)
Erstellen einer Entwicklungsumgebung für die Python2.7-Serie mit Vagrant
Erstellen Sie eine Python-Umgebung mit pyenv (OS X El Capitan 10.11.3).
Erstellen Sie eine GPU-Umgebung mit GCP und kaggle offiziellem Image (Docker)
Erstellen Sie eine Python-Umgebung mit WSL + Pyenv + Jupyter + VSCode
Erstellen Sie mit Docker eine Go-Umgebung
Erstellen Sie eine MySQL + Python-Umgebung mit Docker
Erstellen Sie eine virtuelle Umgebung mit Python!
Erstellen Sie eine Python3-Umgebung unter CentOS7
Erstellen Sie eine Windows Python-Ausführungsumgebung mit VScode + Remote WSL
Erstellen Sie eine 64-Bit-Python 2.7-Umgebung mit TDM-GCC und MinGW-w64 unter Windows 7
Erstellen Sie mit dem Serverless Framework eine lokale Entwicklungsumgebung für Lambda + Python
Erstellen Sie mit Anaconda und PyCharm eine Python-Umgebung auf Ihrem Mac
So erstellen Sie eine Python-Umgebung mit Virtualenv unter Ubuntu 18.04 LTS
So erstellen Sie eine Python- und Jupyter-Ausführungsumgebung mit VSCode
Erstellen Sie mit Laragon ganz einfach eine Entwicklungsumgebung
Erstellen Sie mit Docker eine Jupyter Lab (Python) -Umgebung
Erstellen Sie eine Python-Umgebung unter MacOS (Catallina)
Erstellen Sie eine Tensorflow-Umgebung mit Raspberry Pi [2020]
[Python] Erstellen Sie mit Anaconda eine virtuelle Umgebung
Erstellen einer Python 3.6-Umgebung mit Windows + PowerShell
[Python] Erstellen Sie eine Stapelumgebung mit AWS-CDK
Ich möchte eine Python-Umgebung erstellen
Erstellen Sie eine Python-Umgebung mit Anaconda auf einem Mac
[Linux] Erstellen einer Jenkins-Umgebung mit Docker
Erstellen Sie eine Python + OpenCV-Umgebung in Cloud9
Erstellen Sie mit pyenv unter Ubuntu 12.04 schnell eine Ausführungsumgebung für Python3.4 + Nginx + uWSGI + Flask-Webanwendungen
Aufbau einer KI / maschinellen Lernumgebung mit Python
[Linux] Aufbau einer Docker-Umgebung mit Amazon Linux 2
Erstellen Sie mit Docker auf RaspberryPi3 eine Python + Flasche + MySQL-Umgebung! [Einfache Konstruktion]
[Mac] Erstellen Sie mit Docker eine Python 3.x-Umgebung mit der schnellsten Geschwindigkeit
Ich habe versucht, eine Mac Python-Entwicklungsumgebung mit pythonz + direnv zu erstellen
Erstellen Sie eine Entwicklungsumgebung mit Jupyter und Flask mit Python in Docker (unterstützt sowohl VS Code als auch Code-Server).