YAML
YAML이 AI 워크플로를 간소화하는 방법을 배웁니다. 더 빠르고 쉬운 MLOps를 위해 YAML 파일을 사용하여 데이터셋을 구성하고 Ultralytics YOLO26 모델을 학습하는 방법을 알아보세요.
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 vs. JSON vs. XML#
YAML은 종종 JSON (JavaScript Object Notation) 및 XML (eXtensible Markup Language)과 비교되지만, AI 생태계에서 이들은 약간 다른 용도로 사용됩니다.
- YAML: 사람이 직접 작성하고 읽는 설정 파일에 가장 적합합니다. 특정 model weights나 매개변수가 선택된 이유를 문서화하는 데 중요한 주석을 지원합니다.
- JSON: 웹 API나 inference results 저장과 같은 기계 간 통신에 이상적입니다. 필수적인 따옴표와 중괄호 때문에 사람이 수동으로 편집하기에 더 엄격하고 어렵으며, 주석 지원이 부족합니다.
- XML: 레거시 시스템이나 복잡한 문서 저장소(Pascal VOC annotations 등)에서 자주 사용되는 더 장황한 형식입니다. 현대적인 딥러닝 워크플로우의 단순한 설정 작업에는 일반적으로 너무 무겁다고 여겨집니다.
AI의 실제 응용 사례#
YAML은 AI 개발 수명 주기의 여러 중요한 단계에서 활용됩니다.
- 데이터셋 설정 (Dataset Configuration): COCO와 같은 object detection 데이터셋이나 Ultralytics Platform의 커스텀 데이터로 작업할 때, YAML 파일(
data.yaml)은 일반적으로 학습, 검증, 테스트 세트의 디렉토리 경로를 정의합니다. 또한 클래스 인덱스(0, 1, 2)를 클래스 이름(person, bicycle, car)에 매핑하여 모델이 데이터 구조를 이해하도록 보장합니다. - CI/CD 파이프라인 (CI/CD Pipelines): 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 Pairs): 데이터는
key: value로 저장됩니다. 예를 들어,epochs: 100은 학습 주기 수를 설정합니다. - 목록 (Lists): 시퀀스는 하이픈
-으로 표시됩니다. 이는 data augmentation 단계 목록이나 여러 입력 소스를 정의하는 데 유용합니다. - 주석 (Comments):
#으로 시작하는 줄은 파서에 의해 무시되므로, 파일에 직접 특정 hyperparameters에 대한 메모를 남길 수 있습니다.
YAML을 마스터함으로써 실무자는 model training 워크플로우를 간소화하고, 설정 오류를 줄이며, AI 프로젝트가 확장 가능하고 유지 관리하기 쉽도록 보장할 수 있습니다.






