[PYTHON] Erstellen Sie eine GPU-Umgebung mit GCP und kaggle offiziellem Image (Docker)

Einführung

Da für die Teilnahme am Kaggle-Image-Wettbewerb eine mit einer GPU ausgestattete Maschine erforderlich war, haben wir mit GCP eine GPU-Umgebung erstellt. Es gibt bereits eine Reihe von Artikeln, die sehr hilfreich sind, und ich habe sie unter Bezugnahme auf sie erstellt, aber es gab viele Fälle, in denen Fehler aufgrund unterschiedlicher Versionen auftraten. Deshalb werde ich sie hier noch einmal zusammenfassen. Ich hoffe, es hilft denen, die neu bei GCP sind. Wir möchten uns auch bei denjenigen bedanken, die mit der Angelegenheit vertraut sind, um auf Fehler oder Verbesserungen hinzuweisen.

Registrierung bei GCP

  1. Bitte registrieren Sie sich zunächst bei GCP. Ich denke, es gibt kein Problem, weil ich einfach den Anweisungen folge.
  1. Aktivieren Sie die kostenpflichtige Nutzung. Ich denke, es gibt eine Schaltfläche "AKTIVIEREN" in der oberen rechten Ecke des Fensters, also klicken Sie darauf. ―― Darüber hinaus bedeutet dies nicht, dass Sie sofort belastet werden, nur weil Sie es aktivieren. Ich denke, Sie haben während des Registrierungsprozesses ein kostenloses Guthaben von 300 USD (wie einen Gutschein) erhalten, aber die tatsächlichen Kosten werden Ihnen erst in Rechnung gestellt, wenn Sie diese überschreiten. Diese 300 US-Dollar sind nur etwa ein Monat für die Verwendung einer GPU-Instanz.

Instanz starten

  1. Beantragen Sie zunächst die GPU-Nutzung. Klicken Sie oben links auf das Menüsymbol "Drei" → "IAM und Verwaltung" → "Zuordnung" → "Filtertabelle" → "Name der oberen Grenze" → "GPUs (alle Regionen)" → "Compute Engine API". Zuordnung von Es sollte in Ordnung sein, wenn Sie "for kaggle" einschließen.
  1. Stellen Sie als Nächstes die Instanz bereit. Klicken Sie auf das Menüsymbol wie "drei" oben links → "Marktplatz" → Suchen Sie nach "Deep Learning VM" → "Startoperation" → Stellen Sie Folgendes ein. → Klicken Sie nach Abschluss der Einstellungen auf "Bereitstellen".
  1. Starten Sie die Instanz. Klicken Sie auf das Menüsymbol wie "Drei" oben links → "Compute Engine" → "VM-Instanz" → Klicken Sie auf die Markierung "..." (vertikal) am rechten Ende der Instanz, die Sie gerade bereitgestellt haben → Wählen Sie "Start".

Umgebung

  1. Starten Sie zunächst einen schwarzen Bildschirm (Eingabeaufforderung). Klicken Sie auf derselben Seite wie oben (klicken Sie auf das Menüsymbol wie "drei" oben links → "Compute Engine" → "VM-Instanz") auf "▼" in der zweiten "Verbindung" ganz rechts → "Im Browserfenster öffnen".
  1. Erstellen Sie das offizielle Kaggle-Docker-Image. Geben Sie den folgenden Befehl auf einem schwarzen Bildschirm ein. (Ohne die # Zeile)
#Offizielles Bild
# https://github.com/Kaggle/docker-python
git clone https://github.com/Kaggle/docker-python.git
cd docker-python

#GPU-Version erstellen
#Ich denke, es wird ungefähr 30 Minuten dauern
./build --gpu

#Überprüfen Sie das Bild
# kaggle/python-gpu-Wenn der Build angezeigt wird, ist er erfolgreich
docker images

  1. Erstellen Sie einen Container. Geben Sie den folgenden Befehl auf einem schwarzen Bildschirm ein. (Ohne die # Zeile)
docker run -itd  --runtime=nvidia  -p 8888:8888   -v /home:/home   --name cont-1   -h host   kaggle/python-gpu-build /bin/bash

Bitte beachten Sie, dass sich die folgenden Änderungen ändern können.

--cont-1: Der Containername ist beliebig. Diesmal habe ich es so gemacht. Gleiches gilt für cont-1, das danach erscheint. --kaggle / python-gpu-build: Dies ist der Bildname, der im vorherigen Schritt "Docker-Bilder" angezeigt wurde. Wenn Sie die Schritte ausführen, sollte dieses Beispiel in Ordnung sein.

  1. Geben Sie den Container ein. Mach Folgendes:
#Starten Sie den Container
$ docker container start cont-1

#Betritt den Container
$ docker container attach cont-1

Geben Sie `` `exit``` ein, um den Container zu verlassen.

  1. Überprüfen Sie den Betrieb der GPU. Gehen Sie im Container wie folgt vor:
#Pfadeinstellung
export LD_LIBRARY_PATH=/usr/local/cuda/lib64

#Funktionsprüfung
nvidia-smi

Wenn Sie die Details der GPU sehen können, bedeutet dies, dass der Container die GPU erkennt. Wenn Sie eine Fehlermeldung erhalten, führen Sie bitte die folgende Fehlerbehebung durch.

  1. Überprüfen Sie den Betrieb der GPU von Python aus. Geben Sie im Container zuerst `` `python``` ein, um den Python-Client zu starten. Gehen Sie beim Start folgendermaßen vor:
from tensorflow.python.client import device_lib
device_lib.list_local_devices()

Wenn die GPU ohne Fehler angezeigt wird, sind die GPU-Einstellungen wieder perfekt. Wenn ein Fehler auftritt, beheben Sie ihn bitte.

Fehlerbehebung bei der Verwendung der GPU

  1. Überprüfen Sie zunächst, ob die GPU von der Instanz selbst aus verwendet werden kann.
nvidia-smi

Wenn Sie die GPU nicht sehen, haben Sie die GPU wahrscheinlich nicht in Ihren Instanzeinstellungen ausgewählt. GCP "VM-Instanz" -> Klicken Sie im Bildschirm mit den Instanzdetails auf Instanz-> GPU mit Strg + F suchen. Wenn nicht, beginnen Sie erneut im Abschnitt zum Starten der Instanz.

  1. Versuchen Sie eine andere Methode, um die GPU zu erkennen und festzustellen, ob sie gestartet werden kann. Wenn das Ausführen des folgenden Befehls nicht funktioniert, müssen Sie möglicherweise Ihre cudo-Version aktualisieren.
docker run --runtime nvidia -itd -p 8887:8887 -v /home:/home --name gpu-test -h host

Weitere Informationen finden Sie unter Kommentare hier.

Starten Sie das Jupyter-Notizbuch

  1. Starten Sie zuerst das Jupyter-Notizbuch. Gehen Sie im Container wie folgt vor:
jupyter notebook --port 8888 --ip=0.0.0.0 --allow-root
  1. Nehmen Sie als Nächstes Einstellungen vor, um auf das gestartete Notebook zuzugreifen. [Dieser Artikel](jupyter notebook --port 8888 --ip = 0.0.0.0 --allow-root) ist sehr detailliert, daher werde ich die Erklärung hinterlassen.

Darüber hinaus ist es möglicherweise nicht möglich, eine Verbindung mit https herzustellen. Versuchen Sie es in diesem Fall auch mit http.

Einführung der Kaggle-API

Diese Einstellung ist erforderlich, da das Herunterladen und Hochladen des Kaggle-Datasets über die API erfolgt.

  1. Installieren Sie das Kaggle-Paket mit Pip.
pip install kaggle
  1. Besorgen Sie sich den Kaggle-API-Schlüssel. kaggle HP → Mein Konto → API → Klicken Sie auf Neues API-Token erstellen. Die JSON-Datei wird heruntergeladen.

  2. Speichern Sie den API-Schlüssel in der GCP-Instanz. Die Prozedur besteht darin, zuerst ein Verzeichnis auf der Instanz zu erstellen, den Schlüssel dort zu speichern und die Ausführungsberechtigung zu erteilen.

#Ein Verzeichnis erstellen
mkdir ~/.kaggle

#Eine Datei erstellen
touch ~/.kaggle/kaggle.json

#In Datei schreiben
#Es ist einfacher, den von kaggle heruntergeladenen Schlüssel zu kopieren und einzufügen
vim  ~/.kaggle/kaggle.json

#Ausführungsberechtigung erteilen
chmod 777 ~/.kaggle/kaggle.json

  1. Arbeiten Sie mit der Kaggle-API. Weitere Informationen finden Sie im Offiziellen Dokument.

Andere Dinge, die Sie wissen müssen

Ich denke, dass die Entwicklungsumgebung im Wesentlichen mit den oben genannten Einstellungen eingerichtet ist, aber ich denke, dass in Zukunft je nach Experiment unterschiedliche Fehler auftreten werden. Hier sind einige Dinge, die Sie zu diesem Zeitpunkt wissen sollten, damit Sie sich leichter lösen und googeln können.

--Dateibetrieb

Referenz

Recommended Posts

Erstellen Sie eine GPU-Umgebung mit GCP und kaggle offiziellem Image (Docker)
Erstellen Sie eine MySQL + Python-Umgebung mit Docker
Erstellen Sie eine Python-Ausführungsumgebung mithilfe der GPU mit der GCP Compute Engine
[DynamoDB] [Docker] Erstellen Sie mit Docker-Compose eine Entwicklungsumgebung für DynamoDB und Django
Erstellen Sie mit Docker eine Jupyter Lab (Python) -Umgebung
[Linux] Erstellen einer Jenkins-Umgebung mit Docker
Erstellen Sie mit Docker eine Umgebung aus NGINX + NGINX Unit + MySQL
[Linux] Aufbau einer Docker-Umgebung mit Amazon Linux 2
Erstellen Sie mit Docker eine CentOS Linux 8-Umgebung und starten Sie Apache HTTP Server
[Python] Erstellen Sie mit Docker eine Django-Entwicklungsumgebung
Erstellen Sie eine virtuelle Umgebung mit pyenv und venv
Erstellen Sie mit Docker auf RaspberryPi3 eine Python + Flasche + MySQL-Umgebung! [Versuch und Irrtum]
Umgebungskonstruktion: GCP + Docker
Erstellen Sie eine virtuelle Python-Umgebung mit virtualenv und virtualenvwrapper
Deep Learning Bildanalyse beginnend mit Kaggle und Keras
Erstellen Sie eine virtuelle Python-Umgebung mit virtualenv und virtualenvwrapper
Erstellen Sie eine Entwicklungsumgebung mit Poetry Django Docker Pycharm
Erstellen einer numerischen Berechnungsumgebung mit pyenv und miniconda3
Erstellen Sie mit Docker eine Django-Entwicklungsumgebung! (Docker-compose / Django / postgreSQL / nginx)
Erstellen Sie eine Docker-Umgebung, die PyTorch und JupyterLab verwenden kann
Erstellen Sie mit VirtualBox und Ubuntu eine Scikit-Lernumgebung für maschinelles Lernen
[Memo] Erstellen Sie mit Docker eine Entwicklungsumgebung für Django + Nuxt.js
Erstellen Sie einfach eine GCP-Umgebung für Kaggle mit hoher Geschwindigkeit
(Jetzt) Erstellen Sie eine GPU Deep Learning-Umgebung mit GeForce GTX 960
Erstellen Sie eine Python3-Umgebung mit Ubuntu 16.04
Implementieren Sie PyTorch + GPU mit Docker
Erstellen Sie mit direnv eine Python-Umgebung
[Django] Erstellen Sie mit PyCharm schnell eine Entwicklungsumgebung für Django-Container (Docker)
Erstellen einer Todo-App mit Django ① Erstellen Sie eine Umgebung mit Docker
Erstellen Sie mit Anaconda und PyCharm eine Python-Umgebung auf Ihrem Mac
Erstellen und testen Sie mit Docker in wenigen Minuten eine OpenCV- und Python-Umgebung
Erstellen Sie mit GCP + Docker + Jupyter Lab eine beliebige Umgebung für maschinelles Lernen
So erstellen Sie eine Python- und Jupyter-Ausführungsumgebung mit VSCode
Einfacher Slackbot mit Docker und Errbot
Erstellen Sie mit Docker eine Go-Umgebung
Bildsegmentierung mit Scikit-Image und Scikit-Learn
Erstellen Sie eine Deb-Datei mit Docker
Erstellen Sie eine Flask-Umgebung mit Dockerfile + docker-compose.yml
Erstellen Sie eine IPython Notebook-Umgebung mit boot2docker
Aufbau und Grundlagen der Bilderkennungsumgebung
Erstellen Sie die Entwicklungsumgebung von Django mit Docker neu! !! !! !!
Erstellen einer Umgebung mit pyenv und pyenv-virtualenv
Erstellen Sie eine Entwicklungsumgebung mit Jupyter und Flask mit Python in Docker (unterstützt sowohl VS Code als auch Code-Server).
Erstellen Sie mit Docker auf RaspberryPi3 eine Python + Flasche + MySQL-Umgebung! [Einfache Konstruktion]
Realisieren Sie mit Docker und Vagrant die Umgebungskonstruktion für "Deep Learning von Grund auf neu"
Ich habe Umgebungsvariablen in Docker festgelegt und in Python angezeigt.
Erstellen Sie eine Drohnen-Simulator-Umgebung und versuchen Sie einen einfachen Flug mit Mission Planner
Erstellen Sie mit Laragon ganz einfach eine Entwicklungsumgebung
Erstellen Sie Python 3 und OpenCV unter Ubuntu 18.04
Versuchen wir es mit gRPC mit Go und Docker
Erstellen Sie mit Docker-Compose eine schnelle API-Umgebung