YAML
YAML이 AI 워크플로를 간소화하는 방식을 알아보세요. 더 빠르고 간편한 MLOps를 위해 YAML 파일로 데이터 세트를 구성하고 Ultralytics YOLO26 모델을 학습하는 방법을 살펴보세요.
YAML(YAML은 마크업 언어가 아닙니다)은 소프트웨어 업계에서 구성 파일을 작성하는 데 널리 사용되는 사람이 읽기 쉬운 데이터 직렬화 표준입니다. YAML은 더 복잡한 마크업 언어와 달리 깔끔한 서식과 가독성을 우선시하므로, 매개변수를 빠르게 검사하거나 수정해야 하는 개발자와 데이터 과학자에게 탁월한 선택입니다. YAML의 단순한 구조는 대괄호나 태그 대신 들여쓰기에 의존하므로, 사용자는 시각적 복잡성을 최소화하면서 목록과 딕셔너리 같은 계층적 데이터 구조를 정의할 수 있습니다. 인공지능과 머신 러닝의 맥락에서 YAML은 사람의 의도와 머신 실행 사이를 연결하는 중요한 가교 역할을 하며, 버전 관리와 공유가 쉬운 형식으로 데이터셋 경로부터 하이퍼파라미터 튜닝 설정까지 모든 항목을 저장합니다.
머신 러닝에서의 중요성#
최신 머신 러닝 운영(MLOps)에서는 재현 가능하고 체계적인 실험을 유지하는 것이 필수적입니다. YAML 파일은 이러한 실험의 청사진 역할을 하며, 필요한 모든 구성 세부 정보를 하나의 문서에 담습니다. Ultralytics YOLO26 모델과 같은 프레임워크는 모델 아키텍처와 학습 프로토콜을 정의하기 위해 이러한 구성 파일에 크게 의존합니다.
컴퓨터 비전 모델을 학습할 때는 학습 데이터의 위치, 탐지할 클래스 수, 각 클래스의 이름을 지정해야 하는 경우가 많습니다. 이러한 값을 Python 스크립트에 하드코딩하면 코드베이스가 복잡해질 수 있으므로, 대신 이 데이터를 YAML 파일로 분리합니다. 이러한 관심사 분리를 통해 연구자는 핵심 코드베이스를 수정하지 않고도 데이터셋을 교체하거나 학습률을 조정할 수 있으며, 더욱 향상된 실험 추적과 협업을 지원합니다.
YAML vs. JSON vs. XML#
YAML은 JSON(JavaScript 객체 표기법) 및 XML(확장형 마크업 언어)과 자주 비교되지만, AI 생태계에서 각각 약간씩 다른 목적을 수행합니다.
- YAML: 사람이 작성하고 읽는 구성 파일에 가장 적합합니다. 특정 모델 가중치나 매개변수가 선택된 이유를 문서화하는 데 중요한 주석을 지원합니다.
- JSON: 웹 API나 추론 결과 저장과 같은 머신 간 통신에 적합합니다. 필요한 따옴표와 중괄호 때문에 더 엄격하고 사람이 수동으로 편집하기 어려우며, 주석을 지원하지 않습니다.
- XML: 레거시 시스템이나 복잡한 문서 저장(예: Pascal VOC 어노테이션)에 자주 사용되는 보다 장황한 형식입니다. 일반적으로 최신 딥러닝 워크플로의 단순한 구성 작업에는 지나치게 무거운 형식으로 간주됩니다.
AI의 실제 활용 사례#
YAML은 AI 개발 수명 주기의 여러 핵심 단계에서 활용됩니다.
- 데이터셋 구성: COCO와 같은 객체 탐지 데이터셋이나 Ultralytics Platform의 사용자 지정 데이터를 사용할 때 YAML 파일(
data.yaml)은 일반적으로 학습, 검증, 테스트 세트의 디렉터리 경로를 정의합니다. 또한 클래스 인덱스(0, 1, 2)를 클래스 이름(person, bicycle, car)에 매핑하여 모델이 데이터 구조를 이해하도록 합니다. - CI/CD 파이프라인: 지속적 통합 워크플로에서 GitHub Actions와 같은 도구는 YAML을 사용하여 자동화 단계를 정의합니다. 여기에는 새로운 신경망 아키텍처에 대한 단위 테스트 실행이나 코드가 리포지토리에 푸시될 때 모델을 Docker 컨테이너에 배포하는 작업이 포함될 수 있습니다.
예시: 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은 학습 사이클 수를 설정합니다. - 목록: 시퀀스는 하이픈
-으로 표시합니다. 이는 데이터 증강 단계 목록이나 여러 입력 소스를 정의하는 데 유용합니다. - 주석:
#으로 시작하는 줄은 파서에서 무시되므로, 파일에 특정 하이퍼파라미터에 대한 메모를 직접 남길 수 있습니다.
YAML을 능숙하게 활용하면 실무자는 모델 학습 워크플로를 간소화하고 구성 오류를 줄이며, AI 프로젝트의 확장성과 유지 관리 편의성을 확보할 수 있습니다.









