Glossar

Gemischte Präzision

Steigere die Effizienz von Deep Learning mit Mixed Precision Training! Erreiche schnellere Geschwindigkeiten, geringeren Speicherverbrauch und Energieeinsparungen ohne Einbußen bei der Genauigkeit.

Trainiere YOLO Modelle einfach
mit Ultralytics HUB

Mehr erfahren

Mixed-Precision-Training ist eine Technik, die beim Deep Learning (DL) eingesetzt wird, um das Modelltraining zu beschleunigen und den Speicherverbrauch zu reduzieren, ohne die Modellgenauigkeit wesentlich zu beeinträchtigen. Dies wird erreicht, indem strategisch eine Kombination verschiedener numerischer Präzisionsformate für die Speicherung und Berechnung von Werten in einem neuronalen Netzwerk (NN) verwendet wird. In der Regel wird dabei das standardmäßige 32-Bit-Gleitkommaformat (FP32 oder Single-Precision) für kritische Teile wie die Speicherung von Modellgewichten verwendet, während die schnelleren, weniger speicherintensiven 16-Bit-Gleitkommaformate (FP16 oder Half-Precision und manchmal BF16 oder BFloat16) für Berechnungen während der Vorwärts- und Rückwärtsdurchläufe(Backpropagation) eingesetzt werden.

So funktioniert gemischte Präzision

Die Grundidee hinter der gemischten Genauigkeit ist es, die Geschwindigkeits- und Speichervorteile von Formaten mit geringerer Genauigkeit zu nutzen und gleichzeitig potenzielle Probleme mit der numerischen Stabilität zu verringern. Ein gängiger Ansatz umfasst diese Schritte:

  1. Master-Gewichte in FP32: Eine primäre Kopie der Gewichte des Modells wird im FP32-Standardformat aufbewahrt, um eine hohe Genauigkeit bei der Aktualisierung der Gewichte zu gewährleisten.
  2. FP16/BF16 für Berechnungen verwenden: Während der Trainingsschleife werden die FP32-Gewichte für den Vorwärts- und Rückwärtsdurchlauf in FP16 oder BF16 umgewandelt. Berechnungen in diesen Formaten mit geringerer Genauigkeit sind auf moderner Hardware wie NVIDIA GPUs mit Tensor Cores, die speziell für die Beschleunigung von Matrixmultiplikationen mit geringerer Genauigkeit entwickelt wurden, deutlich schneller.
  3. Verlustskalierung: Bei der Verwendung von FP16 ist der Bereich der darstellbaren Zahlen viel kleiner als bei FP32. Das kann dazu führen, dass kleine Gradientenwerte, die während der Backpropagation berechnet werden, zu Null werden (Unterlauf), was das Lernen behindert. Um dies zu verhindern, wird der Verlustwert vor der Backpropagation hochskaliert, wodurch die Gradienten in einen Bereich skaliert werden, der durch FP16 darstellbar ist. Vor der Gewichtungsaktualisierung werden diese Gradienten wieder herunterskaliert. BF16 hat einen größeren dynamischen Bereich als FP32, aber eine geringere Genauigkeit, so dass eine Verlustskalierung oft nicht erforderlich ist.
  4. Master-Gewichte aktualisieren: Die berechneten Gradienten (die bei einer Verlustskalierung wieder herunterskaliert werden) werden verwendet, um die Masterkopie der Gewichte zu aktualisieren, die in FP32 verbleiben.

Dank dieser sorgfältigen Balance können die Modelle schneller trainieren und verbrauchen weniger GPU Speicher.

Vorteile der gemischten Präzision

  • Schnelleres Training: Berechnungen mit geringerer Genauigkeit (FP16/BF16) werden auf kompatibler Hardware viel schneller ausgeführt, was die für jede Trainingsepoche benötigte Zeit erheblich reduziert. Dies ermöglicht eine schnellere Iteration und Experimentierung.
  • Geringerer Speicherverbrauch: FP16/BF16-Werte benötigen nur halb so viel Speicher wie FP32-Werte. Diese Reduzierung gilt für Aktivierungen, die während des Vorwärtsdurchlaufs gespeichert werden, und für Gradienten, die während des Rückwärtsdurchlaufs berechnet werden. Der geringere Speicherbedarf ermöglicht das Training größerer Modelle oder die Verwendung größerer Stapelgrößen, was die Modellleistung und die Trainingsstabilität verbessern kann.
  • Verbesserte Effizienz: Die Kombination aus schnelleren Berechnungen und geringeren Anforderungen an die Speicherbandbreite führt zu einer effizienteren Nutzung der Hardwareressourcen, was die Ausbildungskosten für Cloud Computing oder On-Premise-Cluster senken kann.

Gemischte Präzision vs. verwandte Konzepte

  • Volle Präzision (FP32): In der traditionellen Ausbildung wird FP32 für alle Speicher- und Berechnungsvorgänge verwendet. Sie ist im Allgemeinen numerisch stabiler, aber langsamer und speicherintensiver als die gemischte Genauigkeit.
  • Halbe Genauigkeit (FP16/BF16): Die ausschließliche Verwendung von FP16 oder BF16 während des Trainings kann zu erheblicher numerischer Instabilität (insbesondere FP16 ohne Techniken wie Verlustskalierung) und potenziellen Genauigkeitsverlusten führen. Gemischte Präzision ist ein robusterer Ansatz, der FP32 und FP16/BF16 kombiniert.
  • Modellquantisierung: Dies bezieht sich in der Regel auf die Konvertierung von Modellgewichten und/oder Aktivierungen in Formate mit noch geringerer Genauigkeit, wie z. B. 8-Bit-Ganzzahlen (INT8), um die Inferenzgeschwindigkeit und -effizienz zu optimieren, insbesondere auf Edge Devices. Sie wird manchmal während des Trainings verwendet(Quantization-Aware Training), unterscheidet sich aber von der typischen FP32/FP16-Mischpräzision, die während der normalen Trainingsphasen verwendet wird.

Anwendungen und Beispiele

Gemischte Präzision wird häufig für das Training umfangreicher Modelle für maschinelles Lernen (ML) eingesetzt.

  1. Training großer Sprachmodelle (LLMs): Modelle wie GPT-3, BERT und T5 haben Milliarden von Parametern. Sie nur mit FP32 zu trainieren, würde zu viel GPU und Zeit erfordern. Mixed Precision macht das Training solcher Modelle möglich, indem es den Speicherbedarf erheblich reduziert und die Berechnungen beschleunigt. Frameworks wie PyTorch und TensorFlow bieten integrierte Unterstützung für das Training mit gemischter Genauigkeit.
  2. 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), die für Aufgaben wie Objekterkennung, Bildsegmentierung und Bildklassifizierung verwendet werden. DieYOLO Ultralytics , einschließlich der neuesten Ultralytics YOLO11können während des Trainings die gemischte Präzision nutzen, um schneller zu konvergieren und die Ressourcen effizient zu nutzen, wie in unseren Tipps zum Training von Modellen und Modellvergleichen beschrieben. Dies ermöglicht es den Nutzern, Hochleistungsmodelle schneller auf Datensätzen wie COCO zu trainieren. Die schnelleren Trainingszyklen ermöglichen eine schnellere Abstimmung der Hyperparameter und Modellentwicklung auf Plattformen wie Ultralytics HUB. Mixed Precision kann auch während der Inferenz verwendet werden, um die Bereitstellung zu beschleunigen, insbesondere beim Export von Modellen in Formate wie TensorRT exportiert werden, die stark für niedrigere Genauigkeiten optimiert sind.
Alles lesen