Gemischte Präzision
Steigern Sie die Effizienz von Deep Learning mit gemischtem Präzisionstraining! Erzielen Sie höhere Geschwindigkeiten, eine geringere Speichernutzung und Energieeinsparungen ohne Einbußen bei der Genauigkeit.
Gemischte Präzision ist eine Technik, die beim Deep Learning verwendet wird, um das Modelltraining zu beschleunigen und den Speicherverbrauch zu verringern. Dabei wird während der Berechnung eine Kombination aus numerischen Formaten mit geringerer Genauigkeit, wie 16-Bit-Gleitkommazahlen (FP16), und Formaten mit höherer Genauigkeit, wie 32-Bit-Gleitkommazahlen (FP32), verwendet. Durch die strategische Verwendung von Zahlen mit geringerer Genauigkeit für bestimmte Teile des Modells, wie z. B. die Gewichtsmultiplikation, und die Beibehaltung von kritischen Komponenten, wie z. B. Gewichtsaktualisierungen, in höherer Genauigkeit, kann das Training mit gemischter Genauigkeit die Leistung auf modernen GPUs erheblich beschleunigen, ohne dass die Modellgenauigkeit wesentlich beeinträchtigt wird.
Wie funktioniert Mixed Precision?
Der Grundgedanke hinter der gemischten Genauigkeit ist die Nutzung der Geschwindigkeit und Speichereffizienz von Datentypen mit geringerer Genauigkeit. Moderne Hardware, insbesondere NVIDIA-GPUs mit Tensor Cores, können Operationen mit 16-Bit-Zahlen viel schneller durchführen als mit 32-Bit-Zahlen. Der Prozess umfasst in der Regel drei wichtige Schritte:
- Umwandlung in niedrigere Präzision: Die meisten Operationen des Modells, insbesondere die rechenintensiven Matrixmultiplikationen und Faltungen, werden mit halber Genauigkeit (FP16) durchgeführt. Dadurch wird der Speicherplatzbedarf reduziert und die Berechnungen werden beschleunigt.
- Beibehaltung einer Masterkopie der Gewichte: Um die Genauigkeit und Stabilität des Modells aufrechtzuerhalten, wird eine Masterkopie der Gewichte des Modells im standardmäßigen 32-Bit-Gleitkommaformat (FP32) aufbewahrt. Diese Masterkopie wird verwendet, um Gradienten zu akkumulieren und die Gewichte während des Trainingsprozesses zu aktualisieren.
- Verlust-Skalierung: Um einen numerischen Unterlauf zu verhindern - bei dem kleine Gradientenwerte bei der Umwandlung in FP16 zu Null werden - wird eine Technik namens Verlustskalierung verwendet. Dabei wird der Verlust vor der Backpropagation mit einem Skalierungsfaktor multipliziert, um die Gradientenwerte in einem für FP16 darstellbaren Bereich zu halten. Bevor die Gewichte aktualisiert werden, werden die Gradienten wieder nach unten skaliert.
Deep-Learning-Frameworks wie PyTorch und TensorFlow verfügen über integrierte Unterstützung für automatische gemischte Präzision und sind daher leicht zu implementieren.
Anwendungen und Beispiele
Gemischte Präzision wird häufig beim Training großer Modelle des maschinellen Lernens (ML) eingesetzt, wo Effizienz an erster Stelle steht.
- Training großer Sprachmodelle (LLMs): Modelle wie GPT-3 und BERT haben Milliarden von Parametern. Sie nur mit FP32 zu trainieren, würde unerschwingliche Mengen an GPU-Speicher und Zeit erfordern. Die gemischte Präzision macht das Training solcher Basismodelle möglich, indem sie den Speicherbedarf erheblich reduziert und die Berechnungen beschleunigt. So können Forscher schneller iterieren und noch leistungsfähigere Sprachmodelle erstellen.
- Beschleunigung von Computer Vision Modellen: In der Computer Vision (CV) beschleunigt die gemischte Präzision das Training komplexer Modelle wie Convolutional Neural Networks (CNNs) und Vision Transformers (ViTs). Bei Aufgaben wie Objekterkennung und Bildsegmentierung nutzen Ultralytics YOLO-Modelle, einschließlich des neuesten Ultralytics YOLO11, die gemischte Präzision für eine schnellere Konvergenz. Dies ist besonders nützlich für die Abstimmung von Hyperparametern und die schnelle Entwicklung innerhalb von Plattformen wie Ultralytics HUB. Ein schnelleres Training ermöglicht auch ein schnelleres Experimentieren mit großen Datensätzen wie COCO. Gemischte Präzision kann auch während der Inferenz verwendet werden, um die Modellbereitstellung zu beschleunigen, insbesondere beim Export in Formate wie TensorRT, das stark für niedrigere Genauigkeiten optimiert ist.
Verwandte Konzepte
Gemischte Präzision ist eine von mehreren Optimierungstechniken, die verwendet werden, um Deep-Learning-Modelle effizienter zu machen. Es ist wichtig, sie von verwandten Konzepten zu unterscheiden:
- Modell-Quantisierung: Die Quantisierung verringert die Modellgröße und die Rechenkosten, indem Fließkommazahlen (wie FP32 oder FP16) in niedrigere Ganzzahlformate wie INT8 umgewandelt werden. Während bei der gemischten Präzision verschiedene Fließkommaformate während des Trainings verwendet werden, wird die Quantisierung in der Regel nach dem Training(Quantisierung nach dem Training) oder während des Trainings(quantisierungsbewusstes Training) angewendet, um die Inferenz zu optimieren, insbesondere auf Edge-Geräten.
- Modell-Bereinigung: Pruning ist eine Technik, bei der redundante oder unwichtige Verbindungen (Gewichte) aus einem neuronalen Netz entfernt werden. Im Gegensatz zur gemischten Präzision, bei der das numerische Format der Gewichte geändert wird, wird beim Pruning die Architektur des Modells selbst geändert, um seine Größe und Komplexität zu verringern. Diese Techniken können zusammen eingesetzt werden, um noch größere Leistungssteigerungen zu erzielen.