Best Practices und Tipps für das Training von Machine Learning Modellen

Einführung

Einer der wichtigsten Schritte bei der Arbeit an einem Computer Vision Projekt ist das Modelltraining. Bevor du diesen Schritt erreichst, musst du deine Ziele definieren sowie Daten sammeln und annotieren. Nachdem du die Daten vorverarbeitet hast, um sicherzustellen, dass sie sauber und konsistent sind, kannst du mit dem Training deines Modells fortfahren.



Watch: Model Training Tips | How to Handle Large Datasets | Batch Size, GPU Utilization and Mixed Precision

Was ist also Modelltraining? Modelltraining ist der Prozess, bei dem deinem Modell beigebracht wird, visuelle Muster zu erkennen und Vorhersagen auf Basis deiner Daten zu treffen. Dies beeinflusst direkt die Leistung und Genauigkeit deiner Anwendung. In diesem Leitfaden behandeln wir Best Practices, Optimierungstechniken und Tipps zur Fehlerbehebung, damit du deine Computer Vision Modelle effektiv trainieren kannst.

So trainierst du ein Machine Learning Modell

Ein Computer Vision Modell wird trainiert, indem seine internen Parameter angepasst werden, um Fehler zu minimieren. Zu Beginn wird dem Modell ein großer Satz gelabelter Bilder zugeführt. Es erstellt Vorhersagen darüber, was auf diesen Bildern zu sehen ist, und diese Vorhersagen werden mit den tatsächlichen Labels oder Inhalten verglichen, um Fehler zu berechnen. Diese Fehler zeigen, wie weit die Vorhersagen des Modells von den wahren Werten abweichen.

Während des Trainings trifft das Modell iterativ Vorhersagen, berechnet Fehler und aktualisiert seine Parameter durch einen Prozess namens Backpropagation. In diesem Prozess passt das Modell seine internen Parameter (Gewichte und Biases) an, um die Fehler zu reduzieren. Durch das wiederholte Durchlaufen dieses Zyklus verbessert das Modell allmählich seine Genauigkeit. Mit der Zeit lernt es, komplexe Muster wie Formen, Farben und Texturen zu erkennen.

What is Backpropagation?

Dieser Lernprozess ermöglicht es dem Computer Vision Modell, verschiedene Aufgaben auszuführen, darunter Objekterkennung, Instanzsegmentierung und Bildklassifizierung. Das ultimative Ziel ist die Erstellung eines Modells, das sein Gelerntes auf neue, ungesehene Bilder verallgemeinern kann, um visuelle Daten in realen Anwendungen präzise zu verstehen.

Jetzt, da wir wissen, was hinter den Kulissen passiert, wenn wir ein Modell trainieren, schauen wir uns Punkte an, die beim Training eines Modells zu berücksichtigen sind.

Training auf großen Datensätzen

Es gibt einige verschiedene Aspekte, die du berücksichtigen solltest, wenn du planst, einen großen Datensatz zum Trainieren eines Modells zu verwenden. Du kannst zum Beispiel die Batch-Größe anpassen, die GPU-Auslastung steuern, sich für multiskaliges Training entscheiden usw. Gehen wir jede dieser Optionen im Detail durch.

Batch-Größe und GPU-Auslastung

Beim Trainieren von Modellen auf großen Datensätzen ist die effiziente Nutzung deiner GPU entscheidend. Die Batch-Größe ist ein wichtiger Faktor. Sie ist die Anzahl der Datenbeispiele, die ein Machine Learning Modell in einer einzigen Trainingsiteration verarbeitet. Nutze die maximale Batch-Größe, die von deiner GPU unterstützt wird, um ihre Fähigkeiten voll auszuschöpfen und die benötigte Trainingszeit des Modells zu reduzieren. Du solltest jedoch vermeiden, dass der GPU-Speicher voll läuft. Wenn du Speicherfehler erhältst, reduziere die Batch-Größe schrittweise, bis das Modell reibungslos trainiert.



Watch: How to Use Batch Inference with Ultralytics YOLO26 | Speed Up Object Detection in Python 🎉

In Bezug auf YOLO26 kannst du den batch_size Parameter in der Trainingskonfiguration so einstellen, dass er deiner GPU-Kapazität entspricht. Außerdem wird durch das Setzen von batch=-1 in deinem Trainingsskript automatisch die Batch-Größe bestimmt, die basierend auf den Fähigkeiten deines Geräts effizient verarbeitet werden kann. Durch die Feinabstimmung der Batch-Größe kannst du deine GPU-Ressourcen optimal nutzen und den gesamten Trainingsprozess verbessern.

Teilmengentraining

Teilmengentraining ist eine intelligente Strategie, bei der dein Modell auf einer kleineren Datenmenge trainiert wird, die den größeren Datensatz repräsentiert. Dies kann Zeit und Ressourcen sparen, insbesondere bei der ersten Modellentwicklung und beim Testen. Wenn du unter Zeitdruck stehst oder mit verschiedenen Modellkonfigurationen experimentierst, ist Teilmengentraining eine gute Option.

Wenn es um YOLO26 geht, kannst du das Teilmengentraining einfach über den fraction Parameter implementieren. Dieser Parameter lässt dich festlegen, welcher Bruchteil deines Datensatzes für das Training verwendet werden soll. Zum Beispiel trainiert fraction=0.1 dein Modell auf 10% der Daten. Du kannst diese Technik für schnelle Iterationen und zur Abstimmung deines Modells verwenden, bevor du dich dazu verpflichtest, ein Modell mit einem vollständigen Datensatz zu trainieren. Teilmengentraining hilft dir dabei, schnelle Fortschritte zu machen und potenzielle Probleme frühzeitig zu erkennen.

Multiskaliges Training

Multiskaliges Training ist eine Technik, die die Verallgemeinerungsfähigkeit deines Modells verbessert, indem es auf Bildern unterschiedlicher Größe trainiert wird. Dein Modell kann lernen, Objekte in verschiedenen Skalierungen und Entfernungen zu erkennen und wird dadurch robuster.

Wenn du beispielsweise YOLO26 trainierst, kannst du multiskaliges Training durch Einstellen des scale Parameters aktivieren. Dieser Parameter passt die Größe der Trainingsbilder um einen bestimmten Faktor an und simuliert Objekte in unterschiedlichen Entfernungen. Zum Beispiel zoomt scale=0.5 die Trainingsbilder während des Trainings zufällig um einen Faktor zwischen 0,5 und 1,5. Die Konfiguration dieses Parameters ermöglicht es deinem Modell, eine Vielzahl von Bildskalierungen zu erleben und seine Erkennungsfähigkeiten über verschiedene Objektgrößen und Szenarien hinweg zu verbessern.

Ultralytics unterstützt auch multiskaliges Training der Bildgröße über den multi_scale Parameter. Im Gegensatz zu scale, das Bilder zoomt und dann zurück auf imgsz polstert/zuschneidet, ändert multi_scale bei jedem Batch das imgsz selbst (abgerundet auf den Modell-Stride). Zum Beispiel wird bei imgsz=640 und multi_scale=0.25 die Trainingsgröße in Stride-Schritten von 480 bis 800 (z. B. 480, 512, 544, ..., 800) abgetastet, während multi_scale=0.0 eine feste Größe beibehält.

Caching

Caching ist eine wichtige Technik zur Verbesserung der Effizienz beim Trainieren von Machine Learning Modellen. Durch das Speichern vorverarbeiteter Bilder im Arbeitsspeicher reduziert Caching die Zeit, die die GPU darauf wartet, dass Daten von der Festplatte geladen werden. Das Modell kann kontinuierlich Daten empfangen, ohne durch Festplatten-I/O-Operationen verzögert zu werden.

Caching kann beim Trainieren von YOLO26 über den cache Parameter gesteuert werden:

  • cache=True: Speichert Datensatzbilder im RAM, was die schnellste Zugriffsgeschwindigkeit bietet, aber auf Kosten eines erhöhten Speicherverbrauchs geht.
  • cache='disk': Speichert die Bilder auf der Festplatte; langsamer als RAM, aber schneller als das jedes Mal frische Laden der Daten.
  • cache=False: Deaktiviert Caching und verlässt sich vollständig auf Festplatten-I/O, was die langsamste Option ist.

Gemischte Genauigkeit (Mixed Precision) Training

Gemischte Genauigkeit (Mixed Precision) Training verwendet sowohl 16-Bit (FP16) als auch 32-Bit (FP32) Fließkommatypen. Die Stärken von FP16 und FP32 werden genutzt, indem FP16 für schnellere Berechnungen und FP32 zur Erhaltung der Genauigkeit dort, wo es nötig ist, verwendet wird. Die meisten Operationen des neuronalen Netzes werden in FP16 durchgeführt, um von schnellerer Berechnung und geringerem Speicherverbrauch zu profitieren. Eine Hauptkopie der Gewichte des Modells wird jedoch in FP32 gehalten, um die Genauigkeit bei den Gewichtungsaktualisierungsschritten sicherzustellen. Du kannst größere Modelle oder größere Batch-Größen innerhalb derselben Hardwareeinschränkungen handhaben.

Mixed precision FP16 training benefits

Um Mixed Precision Training zu implementieren, musst du deine Trainingsskripte ändern und sicherstellen, dass deine Hardware (wie GPUs) dies unterstützt. Viele moderne Deep Learning Frameworks, wie PyTorch und TensorFlow, bieten eingebaute Unterstützung für gemischte Genauigkeit.

Mixed Precision Training ist bei der Arbeit mit YOLO26 unkompliziert. Du kannst das amp Flag in deiner Trainingskonfiguration verwenden. Das Setzen von amp=True aktiviert Automatic Mixed Precision (AMP) Training. Mixed Precision Training ist ein einfacher, aber effektiver Weg, um deinen Modelltrainingsprozess zu optimieren.

Vortrainierte Gewichte

Die Verwendung von vortrainierten Gewichten ist eine intelligente Methode, um den Trainingsprozess deines Modells zu beschleunigen. Vortrainierte Gewichte stammen von Modellen, die bereits auf großen Datensätzen trainiert wurden, was deinem Modell einen Vorsprung verschafft. Transfer Learning passt vortrainierte Modelle an neue, verwandte Aufgaben an. Das Fine-Tuning eines vortrainierten Modells beinhaltet das Starten mit diesen Gewichten und das anschließende Fortsetzen des Trainings auf deinem spezifischen Datensatz. Diese Trainingsmethode führt zu schnelleren Trainingszeiten und oft zu einer besseren Leistung, da das Modell mit einem soliden Verständnis grundlegender Merkmale beginnt.

Der pretrained Parameter macht Transfer Learning mit YOLO26 einfach. Das Setzen von pretrained=True verwendet standardmäßige vortrainierte Gewichte, oder du kannst einen Pfad zu einem benutzerdefinierten vortrainierten Modell angeben. Die effektive Nutzung vortrainierter Gewichte und Transfer Learning steigert die Fähigkeiten deines Modells und reduziert die Trainingskosten.

Andere Techniken, die bei der Handhabung eines großen Datensatzes zu berücksichtigen sind

Es gibt noch einige weitere Techniken, die bei der Handhabung eines großen Datensatzes in Betracht gezogen werden sollten:

  • Lernraten Scheduler: Die Implementierung von Lernraten-Schedulern passt die Lernrate während des Trainings dynamisch an. Eine gut abgestimmte Lernrate kann verhindern, dass das Modell über Minima hinausschießt und die Stabilität verbessern. Beim Training von YOLO26 hilft der lrf Parameter dabei, das Lernraten-Scheduling zu verwalten, indem er die endgültige Lernrate als Bruchteil der Anfangsrate festlegt.
  • Verteiltes Training: Für die Handhabung großer Datensätze kann verteiltes Training bahnbrechend sein. Du kannst die Trainingszeit reduzieren, indem du die Trainingslast auf mehrere GPUs oder Maschinen verteilst. Dieser Ansatz ist besonders wertvoll für Projekte in Unternehmensgröße mit erheblichen Rechenressourcen.

Die Anzahl der Epochen für das Training

Beim Trainieren eines Modells bezieht sich eine Epoche auf einen vollständigen Durchlauf durch den gesamten Trainingsdatensatz. Während einer Epoche verarbeitet das Modell jedes Beispiel im Trainingsset einmal und aktualisiert seine Parameter basierend auf dem Lernalgorithmus. Mehrere Epochen werden normalerweise benötigt, damit das Modell im Laufe der Zeit lernen und seine Parameter verfeinern kann.

Eine häufige Frage ist, wie die Anzahl der Epochen bestimmt werden soll, für die das Modell trainiert wird. Ein guter Ausgangspunkt sind 300 Epochen. Wenn das Modell frühzeitig überanpasst, kannst du die Anzahl der Epochen reduzieren. Wenn nach 300 Epochen keine Overfitting auftritt, kannst du das Training auf 600, 1200 oder mehr Epochen verlängern.

Die ideale Anzahl an Epochen kann jedoch je nach Größe deines Datensatzes und Projektzielen variieren. Größere Datensätze erfordern möglicherweise mehr Epochen, damit das Modell effektiv lernen kann, während kleinere Datensätze weniger Epochen benötigen könnten, um Overfitting zu vermeiden. In Bezug auf YOLO26 kannst du den epochs Parameter in deinem Trainingsskript einstellen.

Frühes Stoppen (Early Stopping)

Frühes Stoppen ist eine wertvolle Technik zur Optimierung des Modelltrainings. Durch die Überwachung der Validierungsleistung kannst du das Training abbrechen, sobald sich das Modell nicht mehr verbessert. Du kannst Rechenressourcen sparen und Overfitting verhindern.

Der Prozess beinhaltet das Einstellen eines Geduld-Parameters (Patience), der bestimmt, wie viele Epochen auf eine Verbesserung der Validierungsmetriken gewartet werden soll, bevor das Training gestoppt wird. Wenn sich die Leistung des Modells innerhalb dieser Epochen nicht verbessert, wird das Training gestoppt, um Zeit und Ressourcen nicht zu verschwenden.

Early stopping to prevent model overfitting

Für YOLO26 kannst du das frühe Stoppen aktivieren, indem du den Patience-Parameter in deiner Trainingskonfiguration festlegst. Zum Beispiel bedeutet patience=5, dass das Training stoppt, wenn es 5 aufeinanderfolgende Epochen lang keine Verbesserung der Validierungsmetriken gibt. Die Verwendung dieser Methode stellt sicher, dass der Trainingsprozess effizient bleibt und ohne übermäßige Berechnungen eine optimale Leistung erzielt wird.

Wahl zwischen Cloud- und lokalem Training

Es gibt zwei Optionen für das Training deines Modells: Cloud-Training und lokales Training.

Cloud-Training bietet Skalierbarkeit und leistungsstarke Hardware und ist ideal für die Handhabung großer Datensätze und komplexer Modelle. Plattformen wie Google Cloud, AWS und Azure bieten On-Demand-Zugriff auf Hochleistungs-GPUs und TPUs, was Trainingszeiten verkürzt und Experimente mit größeren Modellen ermöglicht. Cloud-Training kann jedoch teuer sein, besonders über lange Zeiträume, und Datentransfers können die Kosten und Latenz erhöhen.

Lokales Training bietet mehr Kontrolle und Anpassungsmöglichkeiten, sodass du deine Umgebung auf spezifische Bedürfnisse zuschneiden und laufende Cloud-Kosten vermeiden kannst. Es kann für langfristige Projekte wirtschaftlicher sein, und da deine Daten lokal bleiben, ist es sicherer. Lokale Hardware kann jedoch Ressourcenbeschränkungen haben und Wartung erfordern, was bei großen Modellen zu längeren Trainingszeiten führen kann.

Auswahl eines Optimierers

Ein Optimierer ist ein Algorithmus, der die Gewichte deines neuronalen Netzes anpasst, um die Verlustfunktion zu minimieren, die misst, wie gut das Modell funktioniert. Einfach ausgedrückt hilft der Optimierer dem Modell beim Lernen, indem er seine Parameter anpasst, um Fehler zu reduzieren. Die Wahl des richtigen Optimierers wirkt sich direkt darauf aus, wie schnell und präzise das Modell lernt.

Du kannst auch Optimierer-Parameter feinabstimmen, um die Modellleistung zu verbessern. Das Anpassen der Lernrate legt die Größe der Schritte bei der Aktualisierung der Parameter fest. Für Stabilität könntest du mit einer moderaten Lernrate beginnen und diese im Laufe der Zeit allmählich verringern, um das langfristige Lernen zu verbessern. Außerdem bestimmt das Einstellen des Impulses (Momentum), wie viel Einfluss vergangene Aktualisierungen auf aktuelle Aktualisierungen haben. Ein üblicher Wert für den Impuls liegt bei etwa 0,9. Er bietet im Allgemeinen ein gutes Gleichgewicht.

Häufige Optimierer

Verschiedene Optimierer haben unterschiedliche Stärken und Schwächen. Werfen wir einen Blick auf einige häufige Optimierer.

  • SGD (Stochastic Gradient Descent):

    • Aktualisiert Modellparameter unter Verwendung des Gradienten der Verlustfunktion in Bezug auf die Parameter.
    • Einfach und effizient, aber die Konvergenz kann langsam sein und es kann in lokalen Minima stecken bleiben.
  • Adam (Adaptive Moment Estimation):

    • Kombiniert die Vorteile von SGD mit Impuls und RMSProp.
    • Passt die Lernrate für jeden Parameter basierend auf Schätzungen der ersten und zweiten Momente der Gradienten an.
    • Gut geeignet für verrauschte Daten und spärliche Gradienten.
    • Effizient und erfordert im Allgemeinen weniger Tuning, was es zu einem empfohlenen Optimierer für YOLO26 macht.
  • RMSProp (Root Mean Square Propagation):

    • Passt die Lernrate für jeden Parameter an, indem der Gradient durch einen laufenden Durchschnitt der Magnituden der jüngsten Gradienten geteilt wird.
    • Hilft bei der Handhabung des Problems verschwindender Gradienten und ist effektiv für rekurrente neuronale Netze.
  • MuSGD (Muon + SGD Hybrid):

    • Kombiniert SGD-artige Aktualisierungen mit einem von Muon inspirierten Verhalten für verbesserte Stabilität bei großflächigem Training.
    • Eine gute Wahl, wenn du eine SGD-ähnliche Verallgemeinerung möchtest, aber eine glattere Konvergenz als bei Standard-SGD benötigst.
    • Besonders relevant für YOLO26 Trainingsrezepte; wenn du unsicher bist, starte mit optimizer=auto und vergleiche dies mit MuSGD auf deinem Datensatz.

Für YOLO26 lässt dich der optimizer Parameter aus verschiedenen Optimierern wählen, darunter SGD, MuSGD, Adam, AdamW, NAdam, RAdam und RMSProp, oder du kannst ihn auf auto für eine automatische Auswahl basierend auf der Modellkonfiguration setzen.

yolo train model=yolo26n.pt data=coco8.yaml optimizer=MuSGD

Verbindung mit der Community

Teil einer Gemeinschaft von Computer-Vision-Enthusiasten zu sein, kann dir helfen, Probleme zu lösen und schneller zu lernen. Hier sind einige Möglichkeiten, dich zu vernetzen, Hilfe zu erhalten und Ideen zu teilen.

Community-Ressourcen

  • GitHub Issues: Besuche das YOLO26 GitHub Repository und nutze den Issues-Tab, um Fragen zu stellen, Bugs zu melden und neue Features vorzuschlagen. Die Community und die Betreuer sind sehr aktiv und bereit zu helfen.
  • Ultralytics Discord-Server: Tritt dem Ultralytics Discord-Server bei, um dich mit anderen Benutzern und Entwicklern zu unterhalten, Support zu erhalten und deine Erfahrungen zu teilen.

Offizielle Dokumentation

  • Ultralytics YOLO26-Dokumentation: Sieh dir die offizielle YOLO26-Dokumentation an, um detaillierte Anleitungen und hilfreiche Tipps für verschiedene Computer-Vision-Projekte zu erhalten.

Die Nutzung dieser Ressourcen wird dir helfen, Herausforderungen zu lösen und mit den neuesten Trends und Praktiken in der Computer-Vision-Community auf dem Laufenden zu bleiben.

Wichtige Erkenntnisse

Das Training von Computer Vision Modellen beinhaltet das Befolgen guter Praktiken, das Optimieren deiner Strategien und das Lösen von Problemen, sobald sie auftreten. Techniken wie das Anpassen der Batch-Größen, das Training mit gemischter Genauigkeit und der Start mit vortrainierten Gewichten können dazu führen, dass deine Modelle besser funktionieren und schneller trainieren. Methoden wie Teilmengentraining und frühes Stoppen helfen dir, Zeit und Ressourcen zu sparen. Mit der Community in Verbindung zu bleiben und über neue Trends auf dem Laufenden zu bleiben, wird dir helfen, deine Fähigkeiten im Modelltraining kontinuierlich zu verbessern.

FAQ

Wie kann ich die GPU-Auslastung verbessern, wenn ich einen großen Datensatz mit Ultralytics YOLO trainiere?

Um die GPU-Auslastung zu verbessern, stelle den batch_size Parameter in deiner Trainingskonfiguration auf die maximale Größe ein, die von deiner GPU unterstützt wird. Dies stellt sicher, dass du die Fähigkeiten der GPU voll ausnutzt und die Trainingszeit reduzierst. Wenn du Speicherfehler erhältst, reduziere die Batch-Größe schrittweise, bis das Training reibungslos läuft. Für YOLO26 bestimmt das Setzen von batch=-1 in deinem Trainingsskript automatisch die optimale Batch-Größe für eine effiziente Verarbeitung. Weitere Informationen findest du in der Trainingskonfiguration.

Was ist Mixed Precision Training und wie aktiviere ich es in YOLO26?

Mixed Precision Training nutzt sowohl 16-Bit (FP16) als auch 32-Bit (FP32) Fließkommatypen, um Rechengeschwindigkeit und Genauigkeit auszubalancieren. Dieser Ansatz beschleunigt das Training und reduziert den Speicherverbrauch, ohne die Genauigkeit des Modells zu beeinträchtigen. Um Mixed Precision Training in YOLO26 zu aktivieren, setze den amp Parameter in deiner Trainingskonfiguration auf True. Dies aktiviert das Automatic Mixed Precision (AMP) Training. Weitere Details zu dieser Optimierungstechnik findest du in der Trainingskonfiguration.

Wie verbessert multiskaliges Training die Leistung des YOLO26 Modells?

Multiskaliges Training verbessert die Modellleistung durch das Training auf Bildern unterschiedlicher Größe, was es dem Modell ermöglicht, besser über verschiedene Skalierungen und Entfernungen hinweg zu verallgemeinern. In YOLO26 kannst du multiskaliges Training aktivieren, indem du den scale Parameter in der Trainingskonfiguration einstellst. Zum Beispiel tastet scale=0.5 einen Zoomfaktor zwischen 0,5 und 1,5 ab und polstert/schneidet dann zurück auf imgsz. Diese Technik simuliert Objekte in unterschiedlichen Entfernungen und macht das Modell in verschiedenen Szenarien robuster. Für Einstellungen und weitere Details schau dir die Trainingskonfiguration an.

Wie kann ich vortrainierte Gewichte verwenden, um das Training in YOLO26 zu beschleunigen?

Die Verwendung von vortrainierten Gewichten kann das Training erheblich beschleunigen und die Modellgenauigkeit verbessern, indem ein Modell genutzt wird, das bereits mit grundlegenden visuellen Merkmalen vertraut ist. Setze in YOLO26 einfach den pretrained Parameter in der Trainingskonfiguration auf True oder gib einen Pfad zu deinen benutzerdefinierten vortrainierten Gewichten an. Diese Methode, Transfer Learning genannt, ermöglicht es, Modelle, die auf großen Datensätzen trainiert wurden, effektiv an deine spezifische Anwendung anzupassen. Erfahre mehr darüber, wie man vortrainierte Gewichte verwendet und welche Vorteile sie haben, im Leitfaden zur Trainingskonfiguration.

Was ist die empfohlene Anzahl an Epochen für das Training eines Modells und wie stelle ich das in YOLO26 ein?

Die Anzahl der Epochen bezieht sich auf die vollständigen Durchläufe durch den Trainingsdatensatz während des Modelltrainings. Ein typischer Ausgangspunkt sind 300 Epochen. Wenn dein Modell frühzeitig überanpasst, kannst du die Anzahl reduzieren. Alternativ, wenn kein Overfitting beobachtet wird, könntest du das Training auf 600, 1200 oder mehr Epochen verlängern. Um dies in YOLO26 einzustellen, verwende den epochs Parameter in deinem Trainingsskript. Für zusätzliche Ratschläge zur Bestimmung der idealen Anzahl von Epochen siehe diesen Abschnitt über die Anzahl der Epochen.

Kommentare