YAML
Aprende cómo YAML optimiza los flujos de trabajo de IA. Descubre cómo utilizar archivos YAML para configurar conjuntos de datos y entrenar modelos de Ultralytics YOLO26 para agilizar y simplificar MLOps.
YAML (YAML no es un lenguaje de marcado) 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, por lo que es una opción excelente para desarrolladores y científicos de datos que necesitan inspeccionar o modificar parámetros rápidamente. Su estructura sencilla se basa en la indentación en lugar de corchetes o etiquetas, lo que permite a los usuarios definir estructuras de datos jerárquicas, como listas y diccionarios, con un mínimo de ruido visual. En el contexto de la inteligencia artificial y el machine learning, YAML actúa como un puente esencial entre la intención humana y la ejecución de la máquina, ya que almacena desde rutas de conjuntos de datos hasta la configuración del ajuste de hiperparámetros en un formato fácil de someter a control de versiones y compartir.
Relevancia en machine learning#
En las modernas operaciones de machine learning (MLOps), mantener experimentos reproducibles y organizados es esencial. Los archivos YAML funcionan como planos para estos experimentos, ya que encapsulan todos los detalles de configuración necesarios en un único documento. Los frameworks 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 por ordenador, a menudo tienes que especificar dónde se encuentran tus datos de entrenamiento, cuántas clases detectas y cuáles son sus nombres. En lugar de codificar estos valores directamente 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 cambiar de conjunto de datos o ajustar las tasas de aprendizaje sin tocar la base de código principal, lo que facilita un mejor seguimiento de experimentos y la colaboración.
YAML frente a JSON y XML#
Aunque YAML suele compararse con JSON (notación de objetos JavaScript) y XML (lenguaje de marcado extensible), tienen finalidades ligeramente distintas en el ecosistema de la IA.
- YAML: Ideal para archivos de configuración escritos y leídos por humanos. Admite comentarios, que son fundamentales para documentar por qué se eligieron determinados pesos del modelo o parámetros.
- JSON: Ideal para la comunicación entre máquinas, como las API web o el almacenamiento de resultados de inferencia. Es más estricto y más difícil de editar manualmente para los humanos debido a las comillas y llaves necesarias, y no admite comentarios.
- XML: Un formato más verboso que se utiliza a menudo en sistemas heredados o para almacenar documentos complejos, como las anotaciones de Pascal VOC. Por lo general, se considera demasiado pesado para tareas de configuración sencillas en los flujos de trabajo modernos de deep learning.
Aplicaciones reales en IA#
YAML tiene cabida en varias etapas críticas del ciclo de vida del desarrollo de la IA:
- Configuración del conjunto de datos: Al trabajar con conjuntos de datos de detección de objetos, como COCO, o con datos personalizados en Ultralytics Platform, un archivo YAML (
data.yaml) suele definir las rutas de los directorios de los conjuntos de entrenamiento, validación y prueba. También asigna los índices de clase (0, 1, 2) a los nombres de clase (persona, bicicleta, coche), lo que garantiza que el modelo entienda la estructura de los datos. - Pipelines de CI/CD: En los flujos de trabajo de integración continua, herramientas como GitHub Actions utilizan YAML para definir los pasos de automatización. Esto puede incluir la ejecución de pruebas unitarias en una nueva arquitectura de red neuronal o el despliegue de un modelo en un contenedor Docker cada vez que se envía código a un repositorio.
Ejemplo: configuración de una ejecución de entrenamiento de YOLO#
El siguiente ejemplo muestra cómo un archivo YAML típico actúa como interfaz de conjunto 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 las rutas a las imágenes y una lista de nombres de clase.
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 la sintaxis#
Comprender algunas reglas sintácticas clave ayuda a evitar errores comunes, como ScannerError o ParserError, que suelen producirse por una indentación incorrecta.
- Indentación: YAML utiliza espacios en blanco (espacios, no tabuladores) para indicar la estructura. Los elementos anidados deben tener una indentación mayor que la de sus elementos principales.
- Pares clave-valor: Los datos se almacenan como
key: value. Por ejemplo,epochs: 100establece el número de ciclos de entrenamiento. - Listas: Las secuencias se indican mediante un guion
-. Esto resulta útil para definir listas de pasos de aumento de datos o varias fuentes de entrada. - Comentarios: Las líneas que empiezan por
#se ignoran durante el análisis, lo que te permite dejar notas sobre hiperparámetros específicos directamente en el archivo.
Al dominar YAML, los profesionales pueden agilizar sus flujos de trabajo de entrenamiento de modelos, reducir los errores de configuración y garantizar que sus proyectos de IA sigan siendo escalables y fáciles de mantener.









