Wie man GPU mit PyTorch verwendet
Ein kurzes Tutorial zur Verwendung von GPUs für Ihre Deep-Learning-Modelle mit PyTorch.
Created on January 31|Last edited on February 2
Comment
Sektionen
SektionenEinführungGPU-Verfügbarkeit prüfenGPU verwenden - ProblemeTorch CUDA-PaketBeispiel und Visualisierung von GPU-MetrikenZusammenfassungWeights & BiasesEmpfohlene Lektüre für alle, die sich für PyTorch interessieren
Einführung
In diesem Bericht gehen wir darauf ein, wie Sie Ihren GPU nutzen und besser kontrollieren können. 
Wir verwenden Weights und Biases, mit dem wir automatisch alle Metriken zur GPU- und CPU-Auslastung protokollieren können. Dies macht es einfach, die Nutzung der Rechenressourcen zu überwachen, während wir eine Fülle von Modellen trainieren.
GPU-Verfügbarkeit prüfen
Der einfachste Weg, um zu prüfen, ob Sie Zugriff auf GPUs haben, ist der Aufruf von torch.cuda.is_available(). Wenn diese Funktion True zurückgibt, bedeutet dies, dass der Nvidia-Treiber auf dem System korrekt installiert ist.
>>> import torch>>> torch.cuda.is_available()
GPU verwenden - Probleme
- Standardmäßig werden die Tensoren auf der CPU erzeugt. Auch das Modell wird auf der CPU initialisiert. Daher muss man manuell sicherstellen, dass die Operationen auf der GPU ausgeführt werden.>>> X_train = torch.FloatTensor([0., 1., 2.])>>> X_train.is_cudaFalse
- PyTorch bietet eine einfach zu verwendende API, um den auf der CPU erzeugten Tensor auf den GPU zu übertragen. Glücklicherweise werden die neuen Tensoren auf demselben Gerät erzeugt wie der übergeordnete Tensor.>>> X_train = X_train.to(device)>>> X_train.is_cudaTrue
- Die gleiche Logik gilt für das Modell.model = MyModel(args)model.to(device)
- Daher müssen die Daten und das Modell an den GPU übertragen werden. Nun, was ist ein device?
- Es ist eine gängige PyTorch-Praxis, eine Variable zu initialisieren, die normalerweise device heißt und das Gerät enthält, auf dem wir trainieren (CPU oder GPU).device = torch.device("cuda:0" if torch.cuda.is_available() else "cpu")print(device)
Torch CUDA-Paket
In PyTorch bietet das torch.cuda-Paket zusätzliche Unterstützung für CUDA-Tensortypen, welche die gleiche Funktion wie CPU-Tensoren implementieren, aber GPUs für die Berechnung nutzen.
- Wenn Sie einen Tensor auf dem GPU haben wollen, können Sie . cuda() aufrufen.>>> X_train = torch.FloatTensor([0., 1., 2.])>>> X_train = X_train.cuda()
- Wenn Sie einen Tensor auf dem GPU haben und ihn auf die CPU bringen möchten, können Sie cpu() aufrufen. Dies wird normalerweise verwendet, um die Ausgabe (Tensor) des Modells auf die CPU zu bringen.
- Zum Abrufen des Index des aktuell ausgewählten Geräts.>>> torch.cuda.current_device() # returns 0 in my case
- Um die Anzahl der verfügbaren GPUs zu ermitteln.>>> torch.cuda.device_count() # returns 1 in my case
- So erhalten Sie den Namen des Geräts.>>> torch.cuda.get_device_name(0) # good old Tesla K80
Beispiel und Visualisierung von GPU-Metriken
Probieren Sie das verlinkte Colab-Notebook aus, um einen einfachen MNIST-Klassifikator mit PyTorch zu trainieren. Das Notebook ist mit Weights & Biases integriert. 
Wenn Sie Ihre Modelle mit Weights & Biases verfolgen, werden alle Ihre Systemmetriken, einschließlich der GPU-Auslastung, automatisch protokolliert. Einige der wichtigsten Metriken, die protokolliert werden, sind zugewiesener GPU-Speicher, GPU-Auslastung, CPU-Auslastung usw. Die vollständige Liste der protokollierten Metriken können Sie hier einsehen.
Das unten abgebildete Medienpanel zeigt einige dieser Systemmetriken, die von W&B während des Trainings automatisch aufgezeichnet wurden.
Zusammenfassung
In diesem Artikel haben Sie gesehen, wie Sie GPUs für Ihre Deep-Learning-Forschung mit Keras nutzen und Weights und Biases verwenden können, um Ihren Ressourcenverbrauch zu überwachen. Sehen Sie sich diesen großartigen Artikel von Lambda Labs über die Tracking der Systemressourcennutzung während des Trainings mit Weights & Biases an.
Weights & Biases
Weights & Biases hilft Ihnen, den Überblick über Ihre Experimente zum maschinellen Lernen zu behalten. Nutzen Sie unser Tool, um Hyperparameter und Ausgabemetriken aus Ihren Durchläufen zu protokollieren, die Ergebnisse zu visualisieren und zu vergleichen und die Erkenntnisse schnell mit Ihren Kollegen zu teilen.
Empfohlene Lektüre für alle, die sich für PyTorch interessieren
PyTorch Dropout for regularization - tutorial 
Learn how to regularize your PyTorch model with Dropout, complete with a code tutorial and interactive visualizations
Transfer Learning Using PyTorch Lightning
In this article, we have a brief introduction to transfer learning using PyTorch Lightning, building on the image classification example from a previous article.
Image Classification Using PyTorch Lightning and Weights & Biases
This article provides a practical introduction on how to use PyTorch Lightning to improve the readability and reproducibility of your PyTorch code.
How to save and load models in PyTorch
This article is a machine learning tutorial on how to save and load your models in PyTorch using Weights & Biases for version control.
Add a comment
Iterate on AI agents and models faster. Try Weights & Biases today.
