Beim Training von Deep-Learning-Modellen spielen Rechenressourcen eine entscheidende Rolle für die Durchführbarkeit und Geschwindigkeit von Experimenten. Die meisten Consumer-Laptops verfügen nicht über leistungsstarke GPUs oder ausreichend Arbeitsspeicher, um große Datensätze oder komplexe neuronale Netzwerkarchitekturen effizient zu verarbeiten; daher können sich die Trainingszeiten auf mehrere Stunden oder Tage verlängern. Die Nutzung cloudbasierter virtueller Maschinen (VMs) mit dedizierten GPUs mindert diese Einschränkungen erheblich und ermöglicht schnelles Prototyping und iteratives Arbeiten. Die Google Cloud Platform (GCP) bietet Deep-Learning-VM-Images an – vorkonfigurierte virtuelle Maschinen, die für Machine-Learning-Aufgaben optimiert sind.
Effizientes Modelltraining mit einer Google Cloud VM mit GPU und JupyterLab
1. Auswahl des geeigneten Deep-Learning-VM-Images
Google Cloud bietet Deep-Learning-VM-Images mit vorinstallierten, gängigen Frameworks wie TensorFlow, PyTorch und JAX sowie GPU-Treibern und -Bibliotheken (z. B. CUDA, cuDNN, NCCL). Diese Images enthalten außerdem JupyterLab, eine leistungsstarke interaktive Entwicklungsumgebung. Wählen Sie zunächst ein Deep-Learning-VM-Image, das Ihren Anforderungen hinsichtlich des Deep-Learning-Frameworks und des gewünschten GPU-Typs (z. B. NVIDIA Tesla T4, P100, V100 oder A100, je nach Verfügbarkeit und Budget) entspricht.
2. Erstellen der VM-Instanz
Erstellen Sie mithilfe der Google Cloud Console oder der `gcloud`-Befehlszeilenschnittstelle eine neue VM-Instanz:
– Wählen Sie einen Maschinentyp mit ausreichend vCPUs und RAM (z. B. n1-standard-8 oder höher).
– Geben Sie die Anzahl und den Typ der GPUs im Abschnitt „GPUs“ an.
– Wählen Sie ein Deep Learning VM-Image aus dem Marketplace aus.
– Die Festplattengröße wird an die Anforderungen des Datensatzes und des Modells angepasst.
– Öffnen Sie die erforderlichen Ports (insbesondere TCP:8080 oder TCP:8888), um den Zugriff auf JupyterLab zu ermöglichen.
Beispiel für den `gcloud`-Befehl:
bash gcloud compute instances create my-dl-vm \ --zone=us-central1-a \ --machine-type=n1-standard-8 \ --accelerator=type=nvidia-tesla-t4,count=1 \ --image-family=tf-latest-gpu \ --image-project=deeplearning-platform-release \ --maintenance-policy=TERMINATE \ --metadata="install-nvidia-driver=True" \ --boot-disk-size=200GB \ --scopes=https://www.googleapis.com/auth/cloud-platform
Dieser Befehl erstellt eine VM mit einem 8 vCPU-Prozessor, einer T4-GPU und einer 200 GB großen Boot-Disk unter Verwendung des neuesten TensorFlow-GPU-Images.
3. Zugriff auf JupyterLab
Sobald die VM läuft, stellen Sie eine SSH-Verbindung her und starten Sie JupyterLab. Auf Google Cloud Deep Learning VMs ist JupyterLab in der Regel vorkonfiguriert und kann über die externe IP-Adresse der VM im Browser aufgerufen werden. Je nach Konfiguration fügen Sie `:8080` oder `:8888` (den Standardport) hinzu.
Falls JupyterLab noch nicht läuft, kann es manuell gestartet werden:
bash jupyter lab --ip=0.0.0.0 --port=8080 --no-browser
Für einen sicheren Zugriff richten Sie einen SSH-Tunneling-Tunnel ein oder konfigurieren Sie eine HTTPS-Verbindung. Google Cloud bietet für Deep-Learning-VMs eine integrierte Schaltfläche „JupyterLab öffnen“, die diesen Vorgang vereinfacht.
4. Abhängigkeiten mithilfe virtueller Umgebungen organisieren
Eine häufige Herausforderung im maschinellen Lernen ist das Abhängigkeitsmanagement. Unterschiedliche Projekte benötigen möglicherweise unterschiedliche Versionen von Bibliotheken, und das globale Aktualisieren oder Herabstufen von Paketen kann zu Konflikten oder Inkompatibilitäten führen. Um Abhängigkeiten zu isolieren, verwenden Sie virtuelle Python-Umgebungen oder `conda`-Umgebungen.
– So erstellen Sie eine virtuelle Umgebung mit `venv`:
bash python3 -m venv myenv source myenv/bin/activate pip install -r requirements.txt
– Zur Verwendung von `conda` (standardmäßig auf Deep Learning VMs installiert):
bash conda create -n myenv python=3.8 conda activate myenv conda install tensorflow-gpu==2.8.0 numpy pandas matplotlib
Nach der Aktivierung der Umgebung stellen Sie sicher, dass JupyterLab diese als Kernel erkennt:
bash pip install ipykernel python -m ipykernel install --user --name=myenv --display-name="Python (myenv)"
Dies ermöglicht es Ihnen, Ihre Umgebung als Kernel innerhalb von JupyterLab auszuwählen und so sicherzustellen, dass Ihre Notebooks die richtigen Abhängigkeiten verwenden.
5. Datenübertragung und Notebook-Übertragung
Laden Sie Ihre Datensätze und Notebooks auf die VM hoch. Dies kann wie folgt erfolgen:
– Google Cloud Storage (GCS): Daten in einen GCS-Bucket hochladen und mit dem Befehl `gsutil` oder dem Python GCS-Client auf die VM herunterladen.
– SCP: Verwenden Sie Secure Copy (SCP), um Dateien direkt von Ihrem lokalen Rechner auf die VM zu übertragen.
– Grafische Benutzeroberfläche von JupyterLab: Dateien per Drag & Drop über den Browser ablegen.
Beispiel mit `gsutil`:
bash gsutil cp gs://your-bucket/dataset.csv /home/jupyter/
6. Trainieren Sie Ihr Modell auf der mit einer GPU ausgestatteten VM
Nachdem Sie Ihre Umgebung eingerichtet haben, öffnen Sie Ihr Notebook in JupyterLab. Stellen Sie sicher, dass das Framework (z. B. TensorFlow, PyTorch) die GPU erkennt. Führen Sie beispielsweise in TensorFlow folgenden Befehl aus:
python
import tensorflow as tf
print("Num GPUs Available: ", len(tf.config.list_physical_devices('GPU')))
Wird eine GPU erkannt, nutzt das Modelltraining diese, wodurch die Trainingszeit im Vergleich zu reinen CPU-Umgebungen deutlich reduziert wird. Die GPU-Auslastung kann mithilfe von Befehlszeilentools wie `nvidia-smi` überwacht werden.
bash watch -n 1 nvidia-smi
Dieser Befehl zeigt die GPU-Speichernutzung, die Temperatur und die laufenden Prozesse an und ermöglicht Ihnen so eine effiziente Nutzung.
7. Management und Erhaltung der Umwelt
Um Schäden an Ihrer Umgebung zu vermeiden:
– Vermeiden Sie die globale Installation oder Aktualisierung von Paketen.
– Verwenden Sie für jedes Projekt virtuelle oder `conda`-Umgebungen.
– Exportieren Sie die Abhängigkeiten Ihrer Umgebung, um die Reproduzierbarkeit zu gewährleisten:
bash pip freeze > requirements.txt # For venv conda env export > environment.yml # For conda
Falls Sie die Umgebung neu erstellen müssen, verwenden Sie diese Dateien, um dieselben Abhängigkeiten zu installieren.
– Bei Teamprojekten empfiehlt es sich, diese Dateien zusammen mit dem Code in der Versionskontrolle zu speichern.
– Sichern Sie regelmäßig wichtige Daten und Notizbücher in GCS oder auf Ihrem lokalen Rechner.
8. Abschalten von Ressourcen
Cloud-Ressourcen verursachen nutzungsabhängige Kosten. Wenn keine Rechenleistung benötigt wird, sollte die VM gestoppt oder gelöscht werden, um unnötige Gebühren zu vermeiden. Daten können in GCS-Buckets oder auf angeschlossenen persistenten Datenträgern gespeichert werden.
Beispielhafter Workflow: Vom lokalen Laptop zur Cloud-GPU-VM
Angenommen, Sie trainieren ein Convolutional Neural Network (CNN) mit TensorFlow auf dem CIFAR-10-Datensatz. Das Training auf Ihrem Laptop (nur CPU) dauert 3 Stunden pro Epoche. Durch die Migration zu einer Google Cloud VM mit einer T4-GPU und die Konfiguration Ihrer Umgebung wie beschrieben:
– Die Trainingszeit pro Epoche sinkt auf 10 Minuten.
– Ihre Abhängigkeiten werden in einer `conda`-Umgebung mit TensorFlow 2.8, NumPy und Matplotlib verwaltet.
– Der Datensatz wird in einem GCS-Bucket gespeichert und bei Bedarf heruntergeladen.
– JupyterLab ermöglicht interaktive Entwicklung und Visualisierung.
– Die GPU-Auslastung wird mit `nvidia-smi` überwacht.
– Die Umgebung kann an anderer Stelle mithilfe der exportierten `environment.yml` wiederhergestellt werden.
Vorteile dieses Ansatzes
- SchnelligkeitDie GPU-Beschleunigung reduziert die Trainingszeiten drastisch und ermöglicht so schnellere Experimente und Ergebnisiterationen.
- SkalierbarkeitDie VM-Ressourcen können an Ihre wachsenden Bedürfnisse angepasst werden, beispielsweise durch Hinzufügen weiterer GPUs oder durch Erhöhung des Arbeitsspeichers und des Speicherplatzes.
- ReproduzierbarkeitEine gut organisierte Abhängigkeitsverwaltung verhindert Versionskonflikte und gewährleistet konsistente Ergebnisse über alle Teammitglieder und Sitzungen hinweg.
- FlexibilitätJupyterLab unterstützt interaktive Entwicklung, schnelles Prototyping und kollaboratives Arbeiten, während virtuelle Umgebungen die Projektabhängigkeiten isolieren.
- KosteneffizienzDie temporäre Nutzung leistungsstarker Hardware macht teure persönliche GPU-Hardware überflüssig und ermöglicht das Abschalten von VMs bei Nichtgebrauch.
Mögliche Fallstricke und Lösungen
- UmweltdriftVerwenden Sie stets virtuelle Umgebungen und protokollieren Sie Abhängigkeiten.
- Datensicherheit: Den Zugriff auf die VM einschränken (Firewallregeln, IAM-Berechtigungen verwenden).
- Sitzungsverwaltung: Speichern Sie Ihre Arbeit regelmäßig und erstellen Sie Datensicherungen; Cloud-VMs können unterbrochen oder beendet werden.
- RessourcengrenzenBeachten Sie das GPU-Kontingent Ihres Kontos und beantragen Sie gegebenenfalls eine Erhöhung.
Automatisierung und Infrastruktur als Code
Fortgeschrittene Benutzer können die Infrastruktur programmatisch mit Terraform oder dem Deployment Manager verwalten, was eine wiederholbare und versionskontrollierte VM-Bereitstellung ermöglicht. Docker-Container können zur weiteren Verbesserung der Reproduzierbarkeit und Portabilität eingesetzt werden, die Deep Learning VM Images decken jedoch bereits die meisten Anforderungen der meisten Benutzer ab.
Die Nutzung von Google Cloud Deep Learning VM-Images mit GPU-Beschleunigung und JupyterLab bietet eine skalierbare, effiziente und strukturierte Lösung für das Modelltraining, die die Leistungsfähigkeit eines herkömmlichen Laptops weit übertrifft. Durch die Isolation von Abhängigkeiten in virtuellen Umgebungen und die Anwendung bewährter Methoden für das Cloud-Ressourcenmanagement maximieren Sie die Produktivität bei gleichzeitiger Reproduzierbarkeit und minimalen Kosten.
Weitere aktuelle Fragen und Antworten zu Fortschritte im maschinellen Lernen:
- Inwieweit vereinfacht Kubeflow tatsächlich die Verwaltung von Machine-Learning-Workflows auf Kubernetes, wenn man die zusätzliche Komplexität der Installation, Wartung und den Lernaufwand für multidisziplinäre Teams berücksichtigt?
- Wie kann ein Colab-Experte die Nutzung freier GPU/TPU optimieren, die Datenpersistenz und Abhängigkeiten zwischen Sitzungen verwalten und Reproduzierbarkeit und Zusammenarbeit in groß angelegten Data-Science-Projekten gewährleisten?
- Wie beeinflussen die Ähnlichkeit zwischen Quell- und Zieldatensätzen, Regularisierungstechniken und die Wahl der Lernrate die Effektivität des Transferlernens über TensorFlow Hub?
- Worin unterscheidet sich der Ansatz der Merkmalsextraktion vom Feinabstimmen beim Transferlernen mit TensorFlow Hub, und in welchen Situationen ist welcher Ansatz besser geeignet?
- Was verstehen Sie unter Transferlernen und wie sehen Sie den Zusammenhang zu den vortrainierten Modellen, die von TensorFlow Hub angeboten werden?
- Wenn ich bereits lokal mit Notebooks arbeite, warum sollte ich JupyterLab auf einer VM mit GPU nutzen? Wie verwalte ich Abhängigkeiten (pip/conda), Daten und Berechtigungen, ohne meine Umgebung zu beschädigen?
- Kann jemand ohne Erfahrung in Python und mit grundlegenden KI-Kenntnissen TensorFlow.js verwenden, um ein aus Keras konvertiertes Modell zu laden, die model.json-Datei und die Shards zu interpretieren und interaktive Echtzeitvorhersagen im Browser zu gewährleisten?
- Wie kann ein Experte für künstliche Intelligenz, der aber ein Anfänger in der Programmierung ist, von TensorFlow.js profitieren?
- Wie sieht der vollständige Arbeitsablauf für die Vorbereitung und das Training eines benutzerdefinierten Bildklassifizierungsmodells mit AutoML Vision aus, von der Datenerfassung bis zur Modellbereitstellung?
- Wie kann ein Data Scientist Kaggle nutzen, um fortgeschrittene ökonometrische Modelle anzuwenden, Datensätze sorgfältig zu dokumentieren und effektiv mit der Community an gemeinsamen Projekten zusammenzuarbeiten?
Weitere Fragen und Antworten finden Sie unter „Advancing in Machine Learning“.

