Ultralytics YOLO27: Trag dich in die Warteliste ein.
Get Started
Mit der Ultralytics Platform entwickeln·Trainieren und auswerten·Lektion 5/10
LektionFortgeschrittene

Durchläufe trainieren, auswerten und fein abstimmen

Starte einen budgetierten Cloud-Durchlauf, bewerte ihn anhand seiner Kurven pro Epoche und stimme das Modell fein ab, ohne dass der Standardoptimierer deine Lernrate ignoriert.

Eine Cloud-GPU kostet für jede Minute, die ein aussichtsloser Durchlauf weiterläuft. Der häufigste Fehler bei der Feinabstimmung kostet nichts, verschwendet aber unbemerkt den Durchlauf: Der Standardoptimierer ignoriert die eingestellte Lernrate. In dieser Lektion trainierst du ein echtes Modell mit dem Datensatz medical pills, wertest seine Kurven anhand einer Entscheidungsregel aus und stimmst das Modell so fein ab, dass deine Einstellungen tatsächlich angewendet werden.

Lernergebnis

Du kannst einen Trainingsdurchlauf auf der Plattform mit bekannten Kosten starten, anhand seiner Kurven entscheiden, ob du ihn stoppst, fortsetzt oder beibehältst, und ein früheres Modell mit der gewünschten Lernrate fein abstimmen.

Schnellkurs
Wenn du dich bereits auskennst, findest du hier die Kurzfassung.
  1. Klicke auf New Model, wähle ein YOLO26-Basismodell und deinen Datensatz aus und aktiviere Save Dataset Version.

  2. Verwende 100 Epochen, automatische Batch-Größe und eine Bildgröße von 640, sofern es keinen besonderen Grund für andere Werte gibt. Prüfe die Kostenschätzung.

  3. Bewerte den Durchlauf: Verbessert sich das Modell noch in der letzten Epoche, sind weitere Epochen sinnvoll. Bleibt die Leistung gleich und steigt gleichzeitig der Validierungsverlust, musst du die Daten korrigieren.

  4. Um die Feinabstimmung mit deinem eigenen lr0 durchzuführen, setze außerdem optimizer auf SGD oder AdamW. auto ignoriert lr0.

  5. Trainiere lokal mit project="username/project" und ULTRALYTICS_API_KEY, um einen Durchlauf an die Plattform zu übertragen.

Praxisnah

Einen Durchlauf starten#

Klicke auf einer Projekt- oder Datensatzseite auf New Model. Der Tab Cloud Training führt dich durch die folgenden Einstellungen:

Dialog „New Model“ für das Training in der Ultralytics Platform mit yolo26n als Basismodell, dem Datensatz COCO8, 100 Epochen, automatischer Batch-Größe, der GPU RTX PRO 6000, dem Kontostand und geschätzten Kosten von $0.03

EinstellungStandardÄndern, wenn
BasismodellWähle ein Modell unter Official aus (YOLO26 wird empfohlen).Bei einer Feinabstimmung wählst du deinen früheren Durchlauf unter My Models aus.
Datensatz—Aktiviere immer Save Dataset Version, damit der Durchlauf an die Daten gebunden ist.
Epochen100Schnelltests (10–20) oder sehr große Datensätze
Batch-Größe-1 (passt sich automatisch an den GPU-Speicher an)Du brauchst zwei Durchläufe, die exakt vergleichbar sein sollen.
Bildgröße640Die Objekte sind klein: Erhöhe die Bildgröße (der Regler endet bei 1280, der YAML-Editor akzeptiert bis zu 4096).
Erweiterte EinstellungenStandardeinstellungenMehr als 50 Argumente von model.train() in YAML, darunter Optimierer, Lernrate und Augmentierung

Es sind dieselben Argumente, die model.train(...) bei einem lokalen Durchlauf verwendet. Auf der Modellseite wird später ein kopierbarer yolo train-Befehl mit den Werten angezeigt, die von den Standardeinstellungen abweichen.

GPU auswählen und Durchlauf budgetieren#

KlasseBeispiele (VRAM, Preis pro Stunde)Geeignet für
BudgetRTX 2000 Ada (16 GB, $0.24), RTX A5000 (24 GB, $0.27), RTX 4090 (24 GB, $0.69)Schnelltests, Nano- und kleine Modelle
MittelL40S (48 GB, $0.86), RTX 5090 (32 GB, $0.99), A100 SXM (80 GB, $1.49)Mittlere Modelle, größere Batches
StandardRTX PRO 6000 (96 GB, $2.09)Die meisten Aufgaben
High-EndH100 SXM (80 GB, $3.29), H200 SXM (141 GB, $4.39)Große Datensätze, wenn es auf die Zeit ankommt
Pro und EnterpriseB200 (180 GB, $5.89), B300 (288 GB, $7.39)Die größten Aufträge

Die Kostenübersicht schätzt Dauer und Preis, bevor du startest: etwa $0.23 für 1,000 Bilder × YOLO26n × 100 Epochen auf der Standard-RTX PRO 6000 und etwa $1.56 für 5,000 Bilder × YOLO26s × 100 Epochen auf einer H100 SXM, die ungefähr 3.4× schneller trainiert als eine RTX 4090. Abgerechnet wird die tatsächliche GPU-Laufzeit: Abgeschlossene, abgebrochene und fehlgeschlagene Läufe werden berechnet, sobald eine GPU gestartet wurde. Für einen Lauf muss dein Guthaben die geschätzten Kosten abdecken (mindestens 15 Minuten GPU-Laufzeit), und aktive Läufe werden beendet, wenn dein Guthaben negativ wird. Aktiviere daher unter Einstellungen > Abrechnung die automatische Aufladung für lange Aufträge. Wenn du eine günstigere GPU als die RTX PRO 6000 auswählst, kannst du kostenlos auf diese GPU hochgestuft werden, sobald von Ultralytics verwaltete Kapazität ungenutzt ist; abgerechnet wird weiterhin dein ausgewählter Tarif.

Entscheidungsregeln: Teste einen neuen Datensatz zuerst mit 10–20 Epochen auf der Standard-GPU. Wechsle zu einer H100 oder H200, wenn ein Lauf Stunden dauert und jemand darauf wartet. Wähle eine günstigere statt einer schnelleren GPU, wenn die GPU-Auslastung niedrig bleibt.

Lauf überwachen#

Der Tab Training auf der Modellseite enthält drei Untertabs mit laufender Aktualisierung. Diagramme zeigt Metriken, Trainings- und Validierungsverluste sowie die Lernrate pro Epoche an; Konsole behält die letzten 2,000 Zeilen und beendet den Lauf sofort bei einem Traceback oder einem CUDA-Speicherfehler; System zeigt GPU-Auslastung, Speicher und Temperatur an:

Modellseite der Ultralytics Platform mit geöffnetem Tab „Training“: vier Metrik-Übersichtskarten und der Untertab „Diagramme“ mit Kurven für Precision, Recall und mAP50-95 pro Epoche

Modellseite der Ultralytics Platform mit geöffnetem Tab „Training“ und Untertab „System“: Host-Karte mit GPU-Modell sowie Diagramme zur CPU- und RAM-Auslastung pro Epoche

Ein Lauf, der 4 Stunden lang keine Meldung ausgibt, wird als fehlgeschlagen markiert. Der beste Checkpoint wird regelmäßig hochgeladen, sodass bei einem abgebrochenen Lauf die bis dahin beste Epoche erhalten bleibt. Über Slack-Benachrichtigungen kannst du dich informieren lassen, wenn Läufe abgeschlossen sind oder fehlschlagen.

Praxisbeispiel: Einen Lauf trainieren, streamen und auswerten#

Du kannst überall trainieren und den Lauf trotzdem in Platform verfolgen. Exportiere einen API-Schlüssel aus Einstellungen > API-Schlüssel als ULTRALYTICS_API_KEY. Mit einem project im Format username/project werden Diagramme, Konsole und der beste Checkpoint in dieses Projekt übertragen:

from ultralytics import YOLO

# export ULTRALYTICS_API_KEY="..." first to stream this run into your Platform project
model = YOLO("yolo26n.pt")
results = model.train(data="medical-pills.yaml", epochs=10, imgsz=320, project="username/pill-inspection", name="v1-baseline")
print(f"mAP50-95 {results.box.map:.3f}, best checkpoint: {model.trainer.best}")
                 Class     Images  Instances      Box(P          R      mAP50  mAP50-95)
                   all         23        399       0.97      0.957      0.977      0.659
mAP50-95 0.659, best checkpoint: .../runs/detect/username/pill-inspection/v1-baseline/weights/best.pt

Derselbe Befehl läuft auf den GPUs von Platform, wenn du auf Neues Modell klickst; lokal dauerte es auf einer Laptop-CPU weniger als zwei Minuten mit imgsz=320. Das results.csv des Laufs enthält die Reihen pro Epoche, die der Untertab „Diagramme“ darstellt. Mit ein paar Zeilen wird aus „Kurven beobachten“ eine klare Regel:

import pandas as pd

df = pd.read_csv("results.csv")  # the per-epoch metrics behind the Charts subtab
df.columns = df.columns.str.strip()
m = df["metrics/mAP50-95(B)"]
best_epoch = int(df.loc[m.idxmax(), "epoch"])
recent_gain = m.iloc[-1] - m.iloc[-4]  # change over the last 3 epochs
val_loss = df["val/box_loss"]
print(f"epochs={len(df)} best mAP50-95={m.max():.3f} at epoch {best_epoch}")
print(f"gain over last 3 epochs: {recent_gain:+.3f}")
print(f"val box loss: {val_loss.iloc[0]:.3f} -> {val_loss.iloc[-1]:.3f}")
if recent_gain < 0.005 and val_loss.iloc[-1] >= val_loss.iloc[-4]:
    print("verdict: plateaued - stop, and fix the data before training longer")
elif best_epoch == len(df):
    print("verdict: still improving at the last epoch - more epochs should help")
else:
    print("verdict: converged - keep best.pt")
epochs=10 best mAP50-95=0.659 at epoch 10
gain over last 3 epochs: +0.028
val box loss: 1.367 -> 1.045
verdict: still improving at the last epoch - more epochs should help

Die beste Epoche ist die letzte, mAP50-95 ist in den letzten drei Epochen um 2.8 Punkte gestiegen und der Validierungsverlust sinkt weiterhin: Dieser Lauf über 10 Epochen wurde vorzeitig beendet, und ein längerer Lauf oder ein Fine-Tuning wird helfen. Verwende dieselben drei Signale im Untertab „Diagramme“ jedes Platform-Laufs: die Lage der besten Epoche, den jüngsten Zuwachs und die Richtung des Validierungsverlusts.

Ein früheres Modell feinabstimmen#

Wähle unter Meine Modelle dein vorheriges Modell als Basismodell aus. Platform erstellt ein neues Modell, das mit diesem Checkpoint beginnt, und lässt das alte unverändert. Üblicherweise wird eine niedrigere Lernrate empfohlen. Beim standardmäßigen optimizer: auto wählt das Training jedoch selbst Optimierer und Lernrate und ignoriert lr0. Die ersten Zeilen der Konsole weisen darauf hin:

optimizer: 'optimizer=auto' found, ignoring 'lr0=0.01' and determining best 'optimizer' and 'lr0' automatically...
optimizer: AdamW(lr=0.002, momentum=0.9) with parameter groups 114 weight(decay=0.0), 126 weight(decay=0.0005), 126 bias(decay=0.0)

Lege optimizer ausdrücklich in den erweiterten Einstellungen fest, damit der Wert übernommen wird. Beim Fine-Tuning des Pillenmodells über weitere 5 Epochen mit optimizer: SGD und lr0: 0.001 wird Folgendes protokolliert:

optimizer: SGD(lr=0.001, momentum=0.937) with parameter groups 114 weight(decay=0.0), 126 weight(decay=0.0005), 126 bias(decay=0.0)
                   all         23        399      0.969      0.962      0.983      0.687

mAP50-95 stieg von 0.659 auf 0.687. In der nächsten Lektion prüfst du diesen Kandidaten anhand einer Freigabeschwelle.

Dialog „Neues Modell trainieren“ der Ultralytics Platform mit ausgeklappten erweiterten Einstellungen und YAML-Editor mit Trainingseinstellungen wie Epochen, Batch, imgsz, patience und seed

Um einen früheren Lauf zu reproduzieren, öffne auf der Modellseite die Tabelle „Trainingskonfiguration“, wähle JSON kopieren und füge die Konfiguration in die erweiterten Einstellungen ein. Der Leitfaden zum Fine-Tuning behandelt das Einfrieren von Schichten; der Leitfaden zur Hyperparameteroptimierung behandelt systematische Durchläufe.

Stolperfallen#

Die Lernrate für das Fine-Tuning wird ignoriert

Symptom: Du legst lr0: 0.001 fest, aber in der Konsole wird ignoring 'lr0=...' angezeigt. Lösung: Mit optimizer: auto wählt das Training den Optimierer und die Lernrate selbst. Setze optimizer zusammen mit lr0 auf SGD oder AdamW und prüfe anschließend die Zeile optimizer: in der Konsole.

Für eine unterforderte GPU bezahlen

Symptom: Der Untertab „System“ zeigt während des gesamten Laufs eine GPU-Auslastung deutlich unter 80 %. Lösung: Der Engpass ist das Laden der Daten, nicht die GPU. Eine schnellere GPU kostet daher nur mehr. Wähle eine günstigere GPU oder erhöhe die Batchgröße, sofern der Speicher ausreicht.

Über den Punkt ohne Wiederkehr hinaus trainieren

Symptom: Der Validierungs-mAP50-95 ist seit 10 Epochen unverändert, während der Validierungsverlust langsam steigt. Lösung: Brich das Training ab. Der bisher beste Checkpoint bleibt erhalten, und der nächste Fortschritt kommt von den Daten (Lektionen 3 und 4), nicht von weiteren Epochen.

Ausprobieren

Trainiere ein YOLO26n-Modell auf deinem Datensatz (in der Cloud mit „Datensatzversion speichern“ oder lokal gestreamt mit project="username/project") über 10–20 Epochen. Führe read_run.py auf dessen results.csv aus oder wende dieselben drei Prüfungen auf den Untertab „Diagramme“ an. Stimme das Modell anschließend mit einem ausdrücklich festgelegten optimizer und lr0 fein ab und prüfe, ob die Zeile optimizer: in der Konsole deine Werte verwendet.

Abgeschlossen, wenn
Du hast die Lektion abgeschlossen, wenn alle folgenden Punkte zutreffen.
  • Ein abgeschlossener Lauf ist in deinem Platform-Projekt vorhanden und mit einer Datensatzversion oder einem ul://-Datensatz verknüpft.

  • Du hast die Bewertung des Laufs (stoppen, fortsetzen oder beibehalten) zusammen mit den drei begründenden Zahlen festgehalten.

  • Die Konsole eines feinabgestimmten Laufs zeigt deinen ausgewählten Optimierer und deine Lernrate an, nicht optimizer=auto.

Lösung anzeigen

Ausgearbeitetes Beispiel mit medizinischen Pillen: Die 10-Epochen-Baseline erreicht ihr Maximum in Epoche 10 mit mAP50-95 von 0.659, einem Zuwachs von +0.028 in den letzten drei Epochen, während der Validierungs-Boxverlust von 1.367 auf 1.045 fällt. Die Bewertung lautet daher „fortsetzen“. Statt von Grund auf neu zu trainieren, führe ein Fine-Tuning durch: Basismodell v1-baseline unter „Meine Modelle“, 5 Epochen, erweiterte Einstellungen optimizer: SGD und lr0: 0.001. Die Konsole bestätigt SGD(lr=0.001, momentum=0.937), und mAP50-95 erreicht 0.687. Die Kosten auf der Standard-GPU betragen ein paar Cent. Die Kostenübersicht zeigt die Schätzung, bevor du auf „Training starten“ klickst, und unter Einstellungen > Abrechnung siehst du anschließend den tatsächlichen Betrag.

Wie es weitergeht

Du hast eine Baseline und einen Kandidaten. Als Nächstes entscheidest du anhand vorher festgelegter Schwellenwerte, ob der Kandidat freigegeben werden soll.