YAML
Tìm hiểu cách YAML hợp lý hóa các quy trình làm việc AI. Khám phá cách sử dụng các tệp YAML để cấu hình bộ dữ liệu và huấn luyện các mô hình Ultralytics YOLO26 để đạt được MLOps nhanh và dễ dàng hơn.
YAML (YAML Ain't Markup Language) là một tiêu chuẩn tuần tự hóa dữ liệu dễ đọc cho con người, được sử dụng rộng rãi trong ngành phần mềm để viết các tệp cấu hình. Không giống như các ngôn ngữ đánh dấu phức tạp hơn, YAML ưu tiên định dạng sạch sẽ và tính dễ đọc, biến nó thành lựa chọn xuất sắc cho các nhà phát triển và nhà khoa học dữ liệu cần kiểm tra hoặc chỉnh sửa thông số nhanh chóng. Cấu trúc đơn giản của nó dựa vào khoảng thụt lề thay vì dấu ngoặc hoặc thẻ, cho phép người dùng định nghĩa các cấu trúc dữ liệu phân cấp như danh sách và từ điển với mức độ rối mắt tối thiểu. Trong bối cảnh trí tuệ nhân tạo và học máy, YAML đóng vai trò là cầu nối quan trọng giữa ý định của con người và quá trình thực thi của máy tính, lưu trữ mọi thứ từ đường dẫn tập dữ liệu đến cài đặt hyperparameter tuning ở định dạng dễ kiểm soát phiên bản và chia sẻ.
Sự liên quan trong học máy#
Trong các machine learning operations (MLOps) hiện đại, việc duy trì các thí nghiệm có thể tái tạo và tổ chức ngăn nắp là điều thiết yếu. Các tệp YAML đóng vai trò như bản thiết kế cho những thí nghiệm này, gói gọn tất cả các chi tiết cấu hình cần thiết trong một tài liệu duy nhất. Các framework như mô hình Ultralytics YOLO26 phụ thuộc rất nhiều vào các tệp cấu hình này để định nghĩa kiến trúc mô hình và quy trình huấn luyện.
Khi bạn huấn luyện một mô hình thị giác máy tính, bạn thường cần chỉ định nơi training data của mình được lưu trữ, bạn đang phát hiện bao nhiêu lớp, và tên của các lớp đó. Thay vì mã hóa cứng (hard-code) các giá trị này vào các tập lệnh Python có thể dẫn đến cơ sở mã rối rắm, bạn tách dữ liệu này thành một tệp YAML. Việc tách biệt các mối quan tâm này cho phép các nhà nghiên cứu hoán đổi tập dữ liệu hoặc điều chỉnh learning rates mà không cần chạm vào mã nguồn cốt lõi, giúp tạo điều kiện thuận lợi cho việc experiment tracking và cộng tác tốt hơn.
YAML so với JSON so với XML#
Mặc dù YAML thường được so sánh với JSON (JavaScript Object Notation) và XML (eXtensible Markup Language), chúng phục vụ các mục đích hơi khác nhau trong hệ sinh thái AI.
- YAML: Tốt nhất cho các tệp cấu hình do con người viết và đọc. Nó hỗ trợ các chú thích, rất quan trọng để ghi tài liệu lý do tại sao các model weights hoặc thông số cụ thể được chọn.
- JSON: Lý tưởng cho giao tiếp giữa máy với máy, chẳng hạn như API web hoặc lưu inference results. Nó nghiêm ngặt hơn và khó hơn cho con người chỉnh sửa thủ công do cần có dấu ngoặc kép và dấu ngoặc nhọn, và nó thiếu hỗ trợ chú thích.
- XML: Một định dạng dài dòng hơn thường được sử dụng trong các hệ thống cũ hoặc lưu trữ tài liệu phức tạp (như Pascal VOC annotations). Nó thường được coi là quá nặng nề cho các tác vụ cấu hình đơn giản trong các quy trình học sâu hiện đại.
Các ứng dụng thực tế trong AI#
YAML tìm thấy vị trí của mình trong một số giai đoạn quan trọng của vòng đời phát triển AI:
- Cấu hình tập dữ liệu: Khi làm việc với các tập dữ liệu object detection như COCO hoặc dữ liệu tùy chỉnh trên Ultralytics Platform, một tệp YAML (
data.yaml) thường định nghĩa các đường dẫn thư mục cho tập huấn luyện, kiểm định và kiểm tra. Nó cũng ánh xạ các chỉ số lớp (0, 1, 2) với tên lớp (person, bicycle, car), đảm bảo mô hình hiểu được cấu trúc dữ liệu. - Pipeline CI/CD: Trong các quy trình continuous integration, các công cụ như GitHub Actions sử dụng YAML để định nghĩa các bước tự động hóa. Điều này có thể bao gồm việc chạy các bài kiểm tra đơn vị trên kiến trúc mạng thần kinh mới hoặc triển khai mô hình vào một Docker container bất cứ khi nào mã được đẩy lên kho lưu trữ.
Ví dụ: Cấu hình một lượt huấn luyện YOLO#
Ví dụ sau đây minh họa cách một tệp YAML điển hình đóng vai trò là giao diện tập dữ liệu để huấn luyện mô hình YOLO26. Đoạn mã Python bên dưới cho thấy cách thư viện Ultralytics tiêu thụ tệp này để bắt đầu quá trình huấn luyện.
1. Tệp coco8.yaml (Khái niệm): Tệp này sẽ chứa các đường dẫn đến hình ảnh và danh sách tên các lớp.
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. Sử dụng Python: Mã nguồn đọc cấu hình và bắt đầu quá trình huấn luyện bằng các tham số đã chỉ định.
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)Các khái niệm chính về cú pháp#
Hiểu một vài quy tắc cú pháp quan trọng giúp tránh các lỗi phổ biến, chẳng hạn như ScannerError hoặc ParserError, thường xảy ra do thụt lề không chính xác.
- Thụt đầu dòng: YAML sử dụng khoảng trắng (dấu cách, không dùng tab) để biểu thị cấu trúc. Các mục lồng nhau phải được thụt đầu dòng sâu hơn các mục cha của chúng.
- Cặp khóa-giá trị: Dữ liệu được lưu trữ dưới dạng
key: value. Ví dụ,epochs: 100thiết lập số lượng chu kỳ huấn luyện. - Danh sách: các trình tự được biểu thị bằng dấu gạch nối
-. Điều này hữu ích để định nghĩa danh sách các bước data augmentation hoặc nhiều nguồn đầu vào. - Chú thích: Các dòng bắt đầu bằng
#bị trình phân tích cú pháp bỏ qua, cho phép bạn để lại ghi chú về các hyperparameters cụ thể trực tiếp trong tệp.
Bằng cách thành thạo YAML, các kỹເນ (practitioners) có thể hợp lý hóa quy trình model training của họ, giảm lỗi cấu hình và đảm bảo rằng các dự án AI của họ vẫn có khả năng mở rộng và dễ bảo trì.






