Глоссарий

YAML

Открой для себя возможности YAML в AI/ML! Упрощай конфигурации, оптимизируй рабочие процессы и улучшай читаемость с помощью этого универсального формата данных.

Обучай модели YOLO просто
с помощью Ultralytics HUB.

Узнай больше

YAML Ain't Markup Language (YAML) - это человекочитаемый язык сериализации данных, который часто используется для конфигурационных файлов и в приложениях, где данные хранятся или передаются. Созданный для простоты и читабельности, YAML особенно ценен в искусственном интеллекте (AI) и машинном обучении (ML) для управления сложными конфигурациями, связанными с моделями, процессами обучения и конвейерами развертывания. Его понятный синтаксис делает рабочие процессы AI/ML более понятными, удобными в обслуживании и воспроизводимыми.

Ключевые особенности YAML

YAML ставит во главу угла читабельность. Его структура в значительной степени опирается на отступы для обозначения иерархии, подобно Pythonчто приводит к созданию более чистых файлов по сравнению с такими форматами, как XML или JSON. К основным характеристикам относятся:

  • Синтаксис, читаемый человеком: Минимальное использование скобок и тегов облегчает чтение и редактирование файлов.
  • Структура через отступы: Используй пробелы (а не табуляцию) для определения вложенных структур, что повышает ясность изложения.
  • Поддержка структур данных: Нативно поддерживает такие распространенные типы данных, как скаляры (строки, числа, булевы), списки (последовательности) и словари (отображения/пары ключ-значение).
  • Комментарии: Позволяет добавлять комментарии с помощью # символ для документации внутри файла.
  • Универсальность: Может представлять сложные структуры данных, подходящие для различных конфигураций.

Подробнее о его структуре ты можешь узнать из официальной спецификации YAML.

YAML в приложениях для искусственного интеллекта и ML

Файлы YAML широко используются в сфере AI и ML для определения и управления различными аспектами жизненного цикла проекта, способствуя согласованности и сотрудничеству за счет отделения конфигурации от кода. Основные области применения включают:

  • Конфигурация модели: Определение архитектуры нейронных сетей (НС), включая слои, функции активации, такие как ReLU или SiLU, и соединения. Такие фреймворки, как PyTorch и TensorFlow часто используют YAML для конфигурирования моделей. Например, Ultralytics YOLO модели, такие как YOLOv8 и YOLO11используют YAML-файлы для задания структуры модели, включая позвоночник и головку обнаружения.
  • Определение набора данных: Указание путей к обучающим и проверочным данным, названий классов и других параметров, характерных для конкретного набора данных. Это характерно для таких задач, как обнаружение объектов с использованием наборов данных типа COCO или VOC. Ultralytics широко использует файлы YAML для определения наборов данных.
  • Конфигурация тренировочного конвейера: Задание гиперпараметров и настроек для процесс обучения модели. Сюда входят такие параметры, как размеры партии, темпы обучения, количество Эпохи, Алгоритмы оптимизации (например, Адам), и увеличение объема данных стратегии. Пример: В файле YAML может быть указано epochs: 100, batch_size: 16, learning_rate: 0.001, а также техники дополнения списка, такие как случайное переворачивание или вращение. Это позволяет исследователям и инженерам легко отслеживать и изменять тренировочные эксперименты.
  • Конвейеры MLOps: Определение рабочих процессов в платформах Machine Learning Operations (MLOps). Такие инструменты, как Kubeflow Pipelines и MLflow Projects, используют YAML для описания последовательности шагов в ML-конвейере, от предварительной обработки данных до развертывания модели и мониторинга.
  • Конфигурация развертывания: Задание параметров для развертывания моделей, таких как требования к ресурсам (например, CPU/GPU распределение), параметры масштабирования и переменные окружения, часто используемые в сочетании с технологиями контейнеризации вроде Docker. Пример: В YAML развертывания для кластера Kubernetes можно указать количество реплик для конечной точки обслуживания модели, ограничения на память и используемый образ Docker. О соответствующих настройках читай в Ultralytics Docker Quickstart.

YAML по сравнению с другими форматами

Хотя YAML служит схожим целям с другими форматами сериализации данных, у него есть отличительные особенности:

  • YAML против JSON (JavaScript Object Notation): Оба варианта являются человекочитаемыми и поддерживают схожие структуры данных. JSON более строгий, он требует кавычек вокруг строк и использования скобок. {} и скобки []. YAML часто считается более читабельным для сложных конфигураций благодаря использованию отступов и минимальному синтаксису. Однако JSON более широко используется для веб-интерфейсов. Более подробную информацию можно найти на сайте JSON.org.
  • YAML против XML (расширяемый язык разметки): XML - это язык разметки, определенный W3C который использует теги (<tag>...</tag>) для определения элементов. Он более многословен, чем YAML и JSON. Несмотря на то, что он отлично подходит для структурирования и проверки документов (например, в аннотация к данным), XML, как правило, менее предпочтителен для конфигурационных файлов, где читабельность имеет первостепенное значение, по сравнению с более чистым стилем YAML.

Ориентация YAML на читаемость человеком делает его отличным выбором для конфигурационных файлов в AI/ML-проектах, упрощая управление и улучшая совместную работу, особенно в рамках таких платформ, как Ultralytics HUB, которые оптимизируют жизненный цикл ML.

Читать полностью