YAML
了解 YAML 如何简化 AI 工作流。发现如何使用 YAML 文件来配置数据集和训练 Ultralytics YOLO26 模型,以实现更快、更简单的 MLOps。
YAML (YAML Ain't Markup Language) 是一种人类可读的数据序列化标准,广泛用于软件行业以编写配置文件。与更复杂的标记语言不同,YAML 优先考虑整洁的格式和可读性,这使其成为需要快速检查或修改参数的开发者和数据科学家的绝佳选择。其简单的结构依赖于缩进而不是括号或标签,这允许用户以极少的视觉混乱来定义分层数据结构(如列表和字典)。在人工智能和机器学习的背景下,YAML 充当了人类意图与机器执行之间的关键桥梁,以易于版本控制和共享的格式存储了从数据集路径到 hyperparameter tuning 设置的所有内容。
在机器学习中的相关性#
在现代 machine learning operations (MLOps) 中,保持可复现且有条理的实验至关重要。YAML 文件充当这些实验的蓝图,将所有必要的配置细节封装在单个文档中。诸如 Ultralytics YOLO26 模型之类的框架严重依赖这些配置文件来定义模型架构和训练协议。
当你训练计算机视觉模型时,通常需要指定你的 training data 存储位置、你正在检测的类别数量以及这些类别的名称。与其将这些值硬编码到可能导致代码库混乱的 Python 脚本中,不如将这些数据分离到一个 YAML 文件中。这种关注点分离允许研究人员在不触及核心代码库的情况下更换数据集或调整 learning rates,从而促进更好的 experiment tracking 和协作。
YAML 与 JSON 与 XML#
虽然 YAML 经常与 JSON (JavaScript Object Notation) 和 XML (eXtensible Markup Language) 进行比较,但它们在 AI 生态系统中有着略微不同的用途。
- **YAML:**最适合由人类编写和读取的配置文件。它支持注释,这对于记录为什么选择特定的 model weights 或参数至关重要。
- **JSON:**非常适合机器与机器之间的通信,例如 Web API 或保存 inference results。由于需要引号和大括号,它更严格且对人类手动编辑而言更困难,并且它缺乏注释支持。
- **XML:**一种更冗长的格式,通常用于遗留系统或复杂文档存储(如 Pascal VOC annotations)。在现代深度学习工作流中,它通常被认为对于简单的配置任务过于笨重。
人工智能的实际应用#
YAML 在 AI 开发生命周期的多个关键阶段都发挥着作用:
- **数据集配置:**当处理诸如 COCO 或 Ultralytics Platform 上的自定义数据等 object detection 数据集时,YAML 文件 (
data.yaml) 通常定义训练集、验证集和测试集的目录路径。它还将类索引(0、1、2)映射到类名(person、bicycle、car),确保模型理解数据结构。 - **CI/CD 流水线:**在 continuous integration 工作流中,诸如 GitHub Actions 之类的工具使用 YAML 来定义自动化步骤。这可能包括在新神经网络架构上运行单元测试,或者每当代码被推送到仓库时将模型部署到 Docker container。
示例:配置 YOLO 训练运行#
以下示例演示了典型的 YAML 文件如何充当用于训练 YOLO26 模型的数据集接口。下面的 Python 代码片段展示了 Ultralytics 库如何使用此文件来启动训练过程。
1. coco8.yaml 文件 (概念): 此文件将包含指向图像的路径和类别名称列表。
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. Python 用法: 该代码读取配置并使用指定的参数启动训练。
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)语法关键概念#
理解几个关键的语法规则有助于避免常见错误,例如 ScannerError 或 ParserError,这些错误通常由于不正确的缩进而发生。
- 缩进: YAML 使用空格(空格,非制表符)来表示结构。嵌套项的缩进必须比其父项更深。
- **键值对:**数据以
key: value的形式存储。例如,epochs: 100设置了训练周期的数量。 - **列表:**序列由连字符
-表示。这对于定义 data augmentation 步骤列表或多个输入源非常有用。 - **注释:**以
#开头的行会被解析器忽略,允许你直接在文件中留下关于特定 hyperparameters 的注释。
通过掌握 YAML,从业者可以简化他们的 model training 工作流,减少配置错误,并确保他们的 AI 项目保持可扩展且易于维护。






