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 ...!
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.)
Referenzseite: Kostenloses Deep Learning (NVIDIA DIGITS) mit GCP-GPU (NVIDIA Tesla K80)
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
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
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
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 |
+-----------------------------------------------------------------------------+
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}
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