YAML
Scopri come YAML semplifica i workflow dell'AI. Impara a utilizzare i file YAML per configurare i dataset e addestrare i modelli Ultralytics YOLO26, rendendo l'MLOps più rapido e semplice.
YAML (YAML non è un linguaggio di markup) è uno standard di serializzazione dei dati leggibile dagli esseri umani, ampiamente utilizzato nel settore del software per scrivere file di configurazione. A differenza dei linguaggi di markup più complessi, YAML privilegia una formattazione pulita e la leggibilità, rappresentando una scelta eccellente per sviluppatori e data scientist che devono ispezionare o modificare rapidamente i parametri. La sua struttura semplice si basa sull'indentazione anziché su parentesi o tag, consentendo agli utenti di definire strutture dati gerarchiche come elenchi e dizionari con il minimo ingombro visivo. Nel contesto dell'intelligenza artificiale e del machine learning, YAML funge da ponte essenziale tra l'intento umano e l'esecuzione da parte della macchina, memorizzando qualsiasi elemento, dai percorsi dei dataset alle impostazioni di ottimizzazione degli iperparametri, in un formato facile da sottoporre al controllo versione e da condividere.
Rilevanza nel machine learning#
Nelle moderne operazioni di machine learning (MLOps), mantenere esperimenti riproducibili e organizzati è essenziale. I file YAML fungono da modelli per questi esperimenti, racchiudendo tutti i dettagli di configurazione necessari in un unico documento. Framework come i modelli Ultralytics YOLO26 fanno ampio affidamento su questi file di configurazione per definire le architetture dei modelli e i protocolli di addestramento.
Quando addestri un modello di computer vision, spesso devi specificare dove si trovano i tuoi dati di addestramento, quante classi stai rilevando e i nomi di tali classi. Invece di codificare questi valori direttamente negli script Python, creando basi di codice disordinate, puoi separare questi dati in un file YAML. Questa separazione delle responsabilità consente ai ricercatori di sostituire i dataset o modificare i tassi di apprendimento senza toccare la base di codice principale, facilitando un migliore monitoraggio degli esperimenti e la collaborazione.
YAML vs. JSON vs. XML#
Sebbene YAML venga spesso confrontato con JSON (notazione a oggetti JavaScript) e XML (linguaggio di markup estensibile), questi formati svolgono funzioni leggermente diverse nell'ecosistema dell'AI.
- YAML: ideale per i file di configurazione scritti e letti dagli esseri umani. Supporta i commenti, fondamentali per documentare perché sono stati scelti determinati pesi del modello o parametri.
- JSON: ideale per la comunicazione da macchina a macchina, ad esempio per le API web o per il salvataggio dei risultati dell'inferenza. È più rigido e più difficile da modificare manualmente per gli esseri umani a causa delle virgolette e delle parentesi graffe necessarie, inoltre non supporta i commenti.
- XML: un formato più verboso, spesso utilizzato nei sistemi legacy o per l'archiviazione di documenti complessi, come le annotazioni Pascal VOC. In genere è considerato troppo pesante per semplici attività di configurazione nei moderni flussi di lavoro di deep learning.
Applicazioni reali nell'IA#
YAML trova applicazione in diverse fasi critiche del ciclo di vita dello sviluppo dell'AI:
- Configurazione del dataset: quando lavori con dataset per il rilevamento degli oggetti come COCO o con dati personalizzati sulla Ultralytics Platform, un file YAML (
data.yaml) definisce in genere i percorsi delle directory per i set di addestramento, convalida e test. Inoltre, associa gli indici delle classi (0, 1, 2) ai nomi delle classi (persona, bicicletta, automobile), assicurando che il modello comprenda la struttura dei dati. - Pipeline CI/CD: nei flussi di lavoro di integrazione continua, strumenti come GitHub Actions utilizzano YAML per definire le fasi dell'automazione. Queste possono includere l'esecuzione di test unitari su una nuova architettura di rete neurale o la distribuzione di un modello in un container Docker ogni volta che il codice viene inviato a un repository.
Esempio: configurazione di un'esecuzione di addestramento YOLO#
L'esempio seguente mostra come un tipico file YAML funga da interfaccia per il dataset durante l'addestramento di un modello YOLO26. Lo snippet Python seguente mostra come la libreria Ultralytics utilizza questo file per avviare il processo di addestramento.
1. Il file coco8.yaml (concetto): questo file conterrebbe i percorsi delle immagini e un elenco dei nomi delle classi.
path: ../datasets/coco8 # dataset root dir
train: images/train # train images (relative to 'path')
val: images/val # val images (relative to 'path')
# Classes
names:
0: person
1: bicycle
2: car
...2. Utilizzo di Python: il codice legge la configurazione e avvia l'addestramento utilizzando i parametri specificati.
from ultralytics import YOLO
# Load the YOLO26 model (recommended for new projects)
model = YOLO("yolo26n.pt")
# Train the model using the dataset configuration defined in the YAML file
# The 'data' argument points directly to the YAML file
results = model.train(data="coco8.yaml", epochs=5, imgsz=640)Concetti chiave della sintassi#
Comprendere alcune regole chiave della sintassi aiuta a evitare errori comuni, come ScannerError o ParserError, che spesso si verificano a causa di un'indentazione errata.
- Indentazione: YAML utilizza gli spazi bianchi (spazi, non tabulazioni) per indicare la struttura. Gli elementi annidati devono avere un'indentazione maggiore rispetto agli elementi di livello superiore.
- Coppie chiave-valore: i dati vengono memorizzati come
key: value. Ad esempio,epochs: 100imposta il numero di cicli di addestramento. - Elenchi: le sequenze sono indicate da un trattino
-. Questo è utile per definire elenchi di fasi di aumento dei dati o più fonti di input. - Commenti: le righe che iniziano con
#vengono ignorate dal parser, consentendoti di lasciare note su specifici iperparametri direttamente nel file.
Padroneggiando YAML, i professionisti possono semplificare i propri flussi di lavoro di addestramento dei modelli, ridurre gli errori di configurazione e garantire che i loro progetti di AI rimangano scalabili e facili da gestire.









