YAML
YAMLがAIワークフローを効率化する仕組みを学びましょう。YAMLファイルを使用してデータセットを設定し、Ultralytics YOLO26モデルをトレーニングすることで、MLOpsをより迅速かつ簡単に進める方法をご紹介します。
YAML(YAMLはマークアップ言語ではない)は、人が読みやすいデータシリアライゼーション標準であり、ソフトウェア業界で設定ファイルを記述するために広く使用されています。より複雑なマークアップ言語とは異なり、YAMLは整ったフォーマットと可読性を重視しているため、パラメーターをすばやく確認または変更する必要がある開発者やデータサイエンティストにとって優れた選択肢です。シンプルな構造では、角括弧やタグではなくインデントを使用するため、視覚的な煩雑さを最小限に抑えながら、リストや辞書などの階層データ構造を定義できます。人工知能および機械学習の分野では、YAMLは人間の意図と機械による実行をつなぐ重要な橋渡し役として機能し、データセットのパスからハイパーパラメーターチューニングの設定まで、バージョン管理や共有が容易な形式で保存します。
機械学習における関連性#
現代の機械学習運用(MLOps)では、再現性があり整理された実験を維持することが不可欠です。YAMLファイルは、これらの実験の設計図として機能し、必要な設定の詳細を1つのドキュメントにまとめます。Ultralytics YOLO26のようなフレームワークでは、モデルアーキテクチャやトレーニングプロトコルを定義するために、これらの設定ファイルを大きく rely onしています。
コンピュータービジョンモデルをトレーニングする場合、トレーニングデータの保存場所、検出するクラス数、各クラスの名前を指定する必要があることがよくあります。これらの値をPythonスクリプトにハードコーディングすると、コードベースが煩雑になる可能性があるため、データをYAMLファイルに分離します。関心の分離により、コアコードベースに触れることなくデータセットを入れ替えたり、学習率を調整したりできるため、より優れた実験トラッキングとコラボレーションが可能になります。
YAMLとJSONとXMLの比較#
YAMLは、JSON(JavaScriptオブジェクト記法)やXML(拡張可能マークアップ言語)と比較されることがよくありますが、AIエコシステムにおける用途はそれぞれ少し異なります。
- YAML: 人が記述および読み取りを行う設定ファイルに最適です。コメントをサポートしているため、特定のモデルウェイトやパラメーターを選択した理由を記録するうえで重要です。
- JSON: Web 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プロジェクトのスケーラビリティと保守性を確保できます。









