YAML
YAMLがAIワークフローを効率化する仕組みを学びます。YAMLファイルを使用してデータセットを構成し、Ultralytics YOLO26モデルをトレーニングすることで、MLOpsをより迅速かつ簡単に実現する方法を探求しましょう。
YAML (YAML Ain't Markup Language) は、ソフトウェア業界で設定ファイルの記述に広く使用されている、人間が読み取り可能なデータシリアル化標準です。複雑なマークアップ言語とは異なり、YAMLはクリーンなフォーマットと可読性を優先しているため、パラメータを迅速に確認または変更する必要がある開発者やデータサイエンティストにとって優れた選択肢となります。その単純な構造は、括弧やタグではなくインデントに依存しているため、リストや辞書などの階層的なデータ構造を視覚的な混乱を最小限に抑えて定義できます。人工知能や機械学習の文脈では、YAMLは人間の意図と機械の実行を結ぶ重要な架け橋として機能し、データセットのパスからハイパーパラメータチューニングの設定まで、すべてをバージョン管理や共有が容易な形式で保存します。
Link to this section機械学習における関連性#
最新の機械学習オペレーション (MLOps)において、再現性が高く整理された実験を維持することは不可欠です。YAMLファイルは、必要な構成詳細のすべてを単一のドキュメントにカプセル化することで、これらの実験の設計図として機能します。Ultralytics YOLO26モデルのようなフレームワークは、モデルアーキテクチャや学習プロトコルを定義するために、これらの設定ファイルに大きく依存しています。
When you train a computer vision model, you often need to specify where your training data lives, how many classes you are detecting, and the names of those classes. Instead of hard-coding these values into Python scripts, which can lead to messy codebases, you separate this data into a YAML file. This separation of concerns allows researchers to swap datasets or adjust learning rates without touching the core codebase, facilitating better experiment tracking and collaboration.
Link to this sectionYAML、JSON、XMLの比較#
YAMLはしばしばJSON (JavaScript Object Notation) やXML (eXtensible Markup Language) と比較されますが、これらはAIエコシステムにおいてそれぞれ少しずつ異なる目的を果たしています。
- YAML: 人間が読み書きする設定ファイルに最適です。特定のモデル重みやパラメータがなぜ選択されたのかを記録するために不可欠なコメントをサポートしています。
- JSON: Web APIや推論結果の保存など、マシン同士の通信に理想的です。引用符や中括弧が必要なため、人間が手動で編集するにはより厳格で難しく、コメントもサポートされていません。
- XML: レガシーシステムや複雑なドキュメントストレージ(Pascal VOCアノテーションなど)でよく使用される、より冗長なフォーマットです。現代の深層学習ワークフローにおける単純な設定タスクには、一般的に重すぎるとみなされています。
Link to this sectionAIにおける現実世界の応用#
YAMLは、AI開発ライフサイクルのいくつかの重要な段階で利用されています。
- データセット構成: COCOのような物体検出データセットや、Ultralytics Platform上のカスタムデータを使用する場合、YAMLファイル (
data.yaml) は通常、学習、検証、テストセットのディレクトリパスを定義します。また、クラスインデックス (0, 1, 2) とクラス名 (person, bicycle, car) をマッピングし、モデルがデータ構造を確実に理解できるようにします。 - CI/CDパイプライン: 継続的インテグレーションワークフローにおいて、GitHub ActionsなどのツールはYAMLを使用して自動化ステップを定義します。これには、新しいニューラルネットワークアーキテクチャのユニットテストの実行や、コードがリポジトリにプッシュされるたびにモデルをDockerコンテナにデプロイする作業などが含まれます。
Link to this section例: 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)Link to this section構文の重要な概念#
いくつかの主要な構文ルールを理解しておくと、インデントの誤りによって頻繁に発生する ScannerError や ParserError などの一般的なエラーを回避するのに役立ちます。
- インデント: YAMLは構造を示すために(タブではなくスペースによる)空白を使用します。ネストされたアイテムは、親アイテムよりも深くインデントする必要があります。
- キーと値のペア: データは
key: valueとして保存されます。例えば、epochs: 100は学習サイクル数を設定します。 - リスト: シーケンスはハイフン
-で示されます。これは、データ拡張ステップのリストや複数の入力ソースを定義するのに便利です。 - コメント:
#で始まる行はパーサーによって無視されるため、特定のハイパーパラメータに関するメモをファイル内に直接残すことができます。
YAMLを習得することで、実務者はモデル学習ワークフローを合理化し、設定エラーを削減し、AIプロジェクトのスケーラビリティと保守性を確保することができます。






