YAML
Aprende cómo YAML simplifica los flujos de trabajo de IA. Descubre cómo utilizar archivos YAML para configurar datasets y entrenar modelos Ultralytics YOLO26 para un MLOps más rápido y sencillo.
YAML (YAML Ain't Markup Language) es un estándar de serialización de datos legible por humanos que se utiliza ampliamente en la industria del software para escribir archivos de configuración. A diferencia de los lenguajes de marcado más complejos, YAML prioriza un formato limpio y la legibilidad, lo que lo convierte en una excelente opción para desarrolladores y científicos de datos que necesitan inspeccionar o modificar parámetros rápidamente. Su estructura simple se basa en la sangría en lugar de corchetes o etiquetas, lo que permite a los usuarios definir estructuras de datos jerárquicas como listas y diccionarios con un desorden visual mínimo. En el contexto de la inteligencia artificial y el aprendizaje automático, YAML sirve como un puente fundamental entre la intención humana y la ejecución de la máquina, almacenando desde rutas de conjuntos de datos hasta ajustes de hyperparameter tuning en un formato fácil de versionar y compartir.
Relevancia en el aprendizaje automático#
En las operaciones de machine learning operations (MLOps) modernas, mantener experimentos reproducibles y organizados es esencial. Los archivos YAML funcionan como planos para estos experimentos, encapsulando todos los detalles de configuración necesarios en un solo documento. Los marcos como los modelos de Ultralytics YOLO26 dependen en gran medida de estos archivos de configuración para definir las arquitecturas de los modelos y los protocolos de entrenamiento.
Cuando entrenas un modelo de visión artificial, a menudo necesitas especificar dónde se encuentran tus training data, cuántas clases estás detectando y los nombres de esas clases. En lugar de codificar estos valores de forma rígida en scripts de Python, lo que puede dar lugar a bases de código desordenadas, separas estos datos en un archivo YAML. Esta separación de responsabilidades permite a los investigadores intercambiar conjuntos de datos o ajustar las learning rates sin tocar la base de código principal, lo que facilita un mejor experiment tracking y colaboración.
YAML frente a JSON frente a XML#
Si bien YAML se compara a menudo con JSON (JavaScript Object Notation) y XML (eXtensible Markup Language), cumplen propósitos ligeramente diferentes en el ecosistema de IA.
- YAML: Es ideal para archivos de configuración escritos y leídos por humanos. Admite comentarios, que son cruciales para documentar por qué se eligieron determinados model weights o parámetros.
- JSON: Ideal para la comunicación entre máquinas, como las API web o para guardar inference results. Es más estricto y más difícil de editar manualmente para los humanos debido a las comillas y llaves necesarias, y carece de compatibilidad con comentarios.
- XML: Un formato más detallado que se utiliza a menudo en sistemas heredados o en el almacenamiento de documentos complejos (como las Pascal VOC annotations). En general, se considera demasiado pesado para tareas de configuración simples en flujos de trabajo de aprendizaje profundo modernos.
Aplicaciones en el mundo real en IA#
YAML encuentra su lugar en varias etapas críticas del ciclo de desarrollo de IA:
- Dataset Configuration: Al trabajar con conjuntos de datos de object detection como COCO o datos personalizados en la Ultralytics Platform, un archivo YAML (
data.yaml) define normalmente las rutas de los directorios para los conjuntos de entrenamiento, validación y prueba. También asigna los índices de clase (0, 1, 2) a los nombres de las clases (persona, bicicleta, coche), lo que garantiza que el modelo comprenda la estructura de los datos. - CI/CD Pipelines: En flujos de trabajo de continuous integration, herramientas como GitHub Actions utilizan YAML para definir pasos de automatización. Esto puede incluir la ejecución de pruebas unitarias en una nueva arquitectura de red neuronal o la implementación de un modelo en un Docker container cada vez que se envía código a un repositorio.
Ejemplo: Configuración de una ejecución de entrenamiento YOLO#
El siguiente ejemplo demuestra cómo un archivo YAML típico actúa como una interfaz de conjuntos de datos para entrenar un modelo YOLO26. El fragmento de Python que aparece a continuación muestra cómo la biblioteca Ultralytics consume este archivo para iniciar el proceso de entrenamiento.
1. El archivo coco8.yaml (Concepto): Este archivo contendría rutas a imágenes y una lista de nombres de clases.
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. Uso de Python: El código lee la configuración e inicia el entrenamiento utilizando los parámetros especificados.
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)Conceptos clave de sintaxis#
Comprender algunas reglas clave de sintaxis ayuda a evitar errores comunes, como ScannerError o ParserError, que a menudo ocurren debido a una sangría incorrecta.
- Sangría: YAML utiliza espacios en blanco (espacios, no tabulaciones) para indicar la estructura. Los elementos anidados deben tener una sangría mayor que sus elementos padres.
- Key-Value Pairs: Los datos se almacenan como
key: value. Por ejemplo,epochs: 100establece el número de ciclos de entrenamiento. - Lists: Las secuencias se denotan con un guion
-. Esto es útil para definir listas de pasos de data augmentation o múltiples fuentes de entrada. - Comments: El analizador ignora las líneas que comienzan con
#, lo que te permite dejar notas sobre hyperparameters específicos directamente en el archivo.
Al dominar YAML, los profesionales pueden optimizar sus flujos de trabajo de model training, reducir los errores de configuración y garantizar que sus proyectos de IA sigan siendo escalables y fáciles de mantener.






