YAML
YAMLがAIワークフローを効率化する仕組みを学びます。YAMLファイルを使用してデータセットを構成し、Ultralytics YOLO26モデルをトレーニングすることで、MLOpsをより迅速かつ簡単に実現する方法を探求しましょう。
YAML (YAML Ain't Markup Language) は、ソフトウェア業界で設定ファイルの記述に広く使用されている、人間が読めるデータシリアル化標準です。より複雑なマークアップ言語とは異なり、YAMLはクリーンなフォーマットと可読性を優先しているため、パラメータを迅速に検査または変更する必要がある開発者やデータサイエンティストにとって優れた選択肢となります。そのシンプルな構造は、括弧やタグではなくインデントに依存しており、リストや辞書などの階層的なデータ構造を最小限の視覚的雑音で定義することができます。人工知能や機械学習の文脈において、YAMLは人間の意図とマシーンの実行をつなぐ重要な架け橋として機能し、データセットのパスからハイパーパラメータ調整の設定に至るまで、バージョン管理と共有が容易なフォーマットで保存します。
機械学習における関連性#
近代的な機械学習運用(MLOps)においては、再現可能で組織化された実験を維持することが不可欠です。YAMLファイルはこれらの実験の青写真として機能し、必要なすべての設定詳細を単一のドキュメントにカプセル化します。Ultralytics YOLO26モデルのようなフレームワークは、モデルアーキテクチャやトレーニングプロトコルを定義するために、これらの設定ファイルに大きく依存しています。
コンピュータビジョンモデルをトレーニングする際、トレーニングデータの保存場所、検出するクラスの数、およびそれらのクラス名を指定する必要がよくあります。これらの値をPythonスクリプト内にハードコーディングするとコードベースが煩雑になる可能性があるため、このデータをYAMLファイルに分離します。この関心の分離により、研究者はコアコードベースに手を加えることなく、データセットを入れ替えたり学習率を調整したりすることができ、より優れた実験追跡とコラボレーションが容易になります。
YAML、JSON、XMLの比較#
YAMLはJSON(JavaScript Object Notation)やXML(eXtensible Markup Language)と比較されることが多いですが、AIエコシステムにおいてはそれぞれ少し異なる目的に役立っています。
- YAML: 人間が書き、読む設定ファイルに最適です。特定のモデル重みやパラメータが選ばれた理由を文書化するために不可欠な、コメントをサポートしています。
- JSON: Web APIや推論結果の保存など、マシン間通信に理想的です。必要な引用符や波括弧のために人間が手動で編集するのがより厳格で難しく、コメントのサポートがありません。
- XML: レガシーシステムや複雑なドキュメントストレージ(Pascal VOCアノテーションなど)でよく使用される、より冗長なフォーマットです。近代的なディープラーニングワークフローにおける単純な設定タスクには、一般的に重すぎるとみなされます。
AIにおける現実世界の応用#
YAMLは、AI開発ライフサイクルのいくつかの重要な段階で利用されています。
- データセット設定: COCOなどの物体検出データセットやUltralytics プラットフォーム上のカスタムデータを扱う場合、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プロジェクトをスケーラブルかつ保守しやすい状態に保つことができます。






