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
- Bitte registrieren Sie sich zunächst bei GCP. Ich denke, es gibt kein Problem, weil ich einfach den Anweisungen folge.
- https://console.cloud.google.com/
- 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
- 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.
- Es kann Stunden bis Tage dauern, bis diese Anfrage genehmigt ist. Bitte laden Sie diese Seite von Zeit zu Zeit neu, um festzustellen, ob die Grenzwerte aktualisiert wurden.
- 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".
- Bereitstellungsname: Legen Sie einen beliebigen Umgebungsnamen fest.
--Zone: Sie können es so lassen, wie es ist.
--Maschinentyp: Legen Sie die Anzahl der CPUs und den Speicher fest. Das Kernel-Notebook von Kaggle verfügt über 4 CPUs und 16 GB RAM als Indikator, obwohl die erforderliche Anzahl von der Analyse abhängt.
- GPUs: Ich denke, es ist in Ordnung, wenn Sie NVIDIA Tesla K80 wählen.
- Rahmenwerk: Sie können es so lassen, wie es ist.
- GPU, Zugang zum Jupyter Lab: Bitte überprüfen Sie beide.
--Boot Disk: Sie können den Festplattentyp unverändert lassen, aber die Einstellung bei Bedarf ändern. Erhöhen Sie die Größe der Startdiskette. Ich denke du brauchst mindestens 300-500.
--Netzwerk: Sie können es so lassen, wie es ist.
- ** Preis **: Der vom aktuellen Einstellungsstatus erwartete Preis wird in der oberen rechten Ecke der Seite angezeigt. Bitte konsultieren Sie Ihr Budget und nehmen Sie geringfügige Anpassungen an den oben genannten Einstellungen vor.
- 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".
- Sie sollten jetzt in der Lage sein, die Instanz zu starten, damit Ihnen eine Gebühr berechnet wird. Wenn Sie es nicht benötigen, wählen Sie "Stop" aus dem gleichen Vorgang.
Umgebung
- 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".
- Zu diesem Zeitpunkt wird möglicherweise ein Fehler auf dem Startbildschirm angezeigt. Schließen Sie in diesem Fall den Startbildschirm und öffnen Sie den schwarzen Bildschirm im selben Vorgang erneut.
- Darüber hinaus gibt es eine Methode zum Verbinden mit gcloud. Wenn Sie interessiert sind, überprüfen Sie es bitte.
- 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
- 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.
- 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.
- Ü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.
- Ü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
- Ü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.
- 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
- Starten Sie zuerst das Jupyter-Notizbuch. Gehen Sie im Container wie folgt vor:
jupyter notebook --port 8888 --ip=0.0.0.0 --allow-root
- 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.
- Installieren Sie das Kaggle-Paket mit Pip.
pip install kaggle
-
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.
-
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
- 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
- Es ist einfacher, sich Linux-Befehle zum Erstellen, Löschen oder Verschieben von Verzeichnissen und Dateien zu merken.
- Hier enthält eine kurze Zusammenfassung wichtiger Befehle.
--Überprüfen Sie die belegte Kapazität
――Es kommt häufig vor, dass ein Fehler aufgrund unzureichender Kapazität auftritt. Es ist gut, sich an die Befehle df und du zu erinnern.
- Hier wird kurz zusammengefasst.
Referenz