YAML
Entdecken Sie die Leistungsfähigkeit von YAML in AI/ML! Vereinfachen Sie Konfigurationen, optimieren Sie Workflows und verbessern Sie die Lesbarkeit mit diesem vielseitigen Datenformat.
YAML Ain't Markup Language (YAML) ist eine für Menschen lesbare Sprache zur Datenserialisierung, die häufig für Konfigurationsdateien und in Anwendungen verwendet wird, in denen Daten gespeichert oder übertragen werden. YAML wurde im Hinblick auf Einfachheit und Lesbarkeit entwickelt und ist besonders in den Bereichen Künstliche Intelligenz (KI) und Maschinelles Lernen (ML) nützlich, um komplexe Konfigurationen für Modelle, Trainingsprozesse und Deployment-Pipelines zu verwalten. Die unkomplizierte Syntax macht AI/ML-Workflows verständlicher, wartbar und reproduzierbar.
Wesentliche Merkmale von YAML
Bei YAML steht die Lesbarkeit im Vordergrund. Seine Struktur stützt sich stark auf Einrückungen, um die Hierarchie zu verdeutlichen, ähnlich wie bei Python, was im Vergleich zu Formaten wie XML oder JSON zu saubereren Dateien führt. Zu den wichtigsten Merkmalen gehören:
- Von Menschen lesbare Syntax: Durch die minimale Verwendung von Klammern oder Tags sind die Dateien leicht zu lesen und zu bearbeiten.
- Struktur durch Einrückung: Verwendet Leerzeichen (keine Tabulatoren), um verschachtelte Strukturen zu definieren, was die Übersichtlichkeit erhöht.
- Unterstützung für Datenstrukturen: Unterstützt von Haus aus gängige Datentypen wie Skalare (Strings, Zahlen, Boolesche Werte), Listen (Sequenzen) und Dictionaries (Mappings/Schlüssel-Wert-Paare).
- Kommentare: Ermöglicht das Hinzufügen von Kommentaren mit der
#
Symbol für die Dokumentation in der Datei. - Vielseitigkeit: Kann komplexe Datenstrukturen darstellen, die für verschiedene Konfigurationsanforderungen geeignet sind.
Mehr über die Struktur von YAML erfahren Sie in der offiziellen YAML-Spezifikation.
YAML in KI- und ML-Anwendungen
YAML-Dateien sind in der KI- und ML-Landschaft weit verbreitet, um verschiedene Aspekte eines Projektlebenszyklus zu definieren und zu verwalten und durch die Trennung von Konfiguration und Code die Konsistenz und Zusammenarbeit zu fördern. Zu den wichtigsten Anwendungsbereichen gehören:
- Modell-Konfiguration: Definieren der Architektur von neuronalen Netzen (NN), einschließlich Schichten, Aktivierungsfunktionen wie ReLU oder SiLU und Verbindungen. Frameworks wie PyTorch und TensorFlow verwenden häufig YAML für die Konfiguration von Modellen. Ultralytics YOLO-Modelle, wie YOLOv8 und YOLO11, verwenden beispielsweise YAML-Dateien, um die Modellstruktur zu spezifizieren, einschließlich des Backbone und des Detektionskopfes.
- Definition des Datensatzes: Angabe von Pfaden zu Trainingsdaten, Validierungsdaten, Klassennamen und anderen datensatzspezifischen Parametern. Dies ist bei Aufgaben wie der Objekterkennung mit Datensätzen wie COCO oder VOC üblich. Ultralytics verwendet YAML-Dateien in großem Umfang zur Definition von Datensätzen.
- Konfiguration der Schulungspipeline: Festlegen von Hyperparametern und Einstellungen für die Modellbildungsprozess. Dazu gehören Parameter wie Losgrößen, Lernraten, Anzahl der Epochen, Optimierungsalgorithmen (z.B., Adam), und Datenerweiterung Strategien. Beispiel: Eine YAML-Datei könnte folgende Angaben enthalten
epochs: 100
, batch_size: 16
, learning_rate: 0.001
und Techniken zur Listenerweiterung wie zufällige Umdrehungen oder Rotationen. Dies ermöglicht es Forschern und Ingenieuren, Trainingsexperimente leicht zu verfolgen und zu ändern. - MLOps-Pipelines: Definition von Workflows in Machine Learning Operations (MLOps) Plattformen. Tools wie Kubeflow Pipelines und MLflow Projects verwenden YAML, um die Abfolge der Schritte in einer ML-Pipeline zu beschreiben, von der Datenvorverarbeitung bis zur Modellbereitstellung und Überwachung.
- Bereitstellungskonfiguration: Festlegung von Einstellungen für die Bereitstellung von Modellen, z. B. Ressourcenanforderungen (z. B. CPU-/GPU-Zuweisung ), Skalierungsparameter und Umgebungsvariablen, die häufig in Verbindung mit Containerisierungstechnologien wie Docker verwendet werden. Beispiel: Eine Deployment-YAML für einen Kubernetes-Cluster könnte die Anzahl der Replikate für einen Model-Serving-Endpunkt, Speichergrenzen und das zu verwendende Docker-Image definieren. Siehe den Ultralytics Docker Quickstart für entsprechende Setups.
YAML vs. andere Formate
YAML dient zwar ähnlichen Zwecken wie andere Daten-Serialisierungsformate, weist jedoch andere Eigenschaften auf:
- YAML vs. JSON (JavaScript Object Notation): Beide sind für Menschen lesbar und unterstützen ähnliche Datenstrukturen. JSON ist strenger, erfordert Anführungszeichen um Zeichenketten und verwendet geschweifte Klammern
{}
und Klammern []
. YAML wird aufgrund der Einrückung und der minimalen Syntax oft als besser lesbar für komplexe Konfigurationen angesehen. JSON wird jedoch häufiger für Web-APIs verwendet. Weitere Einzelheiten finden Sie unter JSON.org. - YAML vs. XML (Extensible Markup Language): XML ist eine Auszeichnungssprache, die von der W3C die Tags verwendet (
<tag>...</tag>
), um Elemente zu definieren. Es ist ausführlicher als YAML und JSON. Während es für die Strukturierung und Validierung von Dokumenten (z. B. in Datenkommentar), wird XML für Konfigurationsdateien, bei denen die Lesbarkeit im Vordergrund steht, im Allgemeinen weniger bevorzugt als der saubere Stil von YAML.
YAMLs Fokus auf menschliche Lesbarkeit macht es zu einer ausgezeichneten Wahl für Konfigurationsdateien in KI/ML-Projekten, vereinfacht die Verwaltung und verbessert die Zusammenarbeit, insbesondere innerhalb von Plattformen wie Ultralytics HUB, die den ML-Lebenszyklus rationalisieren.