• Компонент машинного обучения — это отдельный API или группа API и утилит, которые реализуют определенную задачу в жизненном цикле модели.
  • Подготовка данных, обучение, оценка, публикация для вывода, сжатие модели — вот примеры задач, включающих компонент машинного обучения.
  • В машинном обучении, как правило, нет универсального подхода. Поэтому фреймворки машинного обучения содержат инструкции о том, как разработчики машинного обучения могут также создавать собственные компоненты.
  • TFX компоненты, Sagemaker компоненты, Azure компоненты!

Структуры машинного обучения ‹› Компоненты машинного обучения:

  • Фреймворки машинного обучения, такие как Google TFX, Amazon Sagemaker, предоставляют набор стандартных компонентов для часто используемых задач в жизненном цикле машинного обучения.
  • Помимо стандартных компонентов, фреймворки мл имеют конвейерный доменный язык (DSL) и оркестратор для запуска API.
  • API-интерфейс компонента можно использовать в конвейере мл, написанном с использованием определенного DSL. Когда конвейер выполняется, создается граф заданий, соответствующий компонентам мл, а затем он передается оркестратору с подсказками по выполнению (аппаратное обеспечение, емкость и т. д.).

Тестирование компонентов ML:

  1. Модульные тесты. Достаточно ли тестируют ваши API и утилиты с использованием фиктивных артефактов: наборов данных, моделей и т. д.
  2. Интеграционные тесты. Можете ли вы запустить свой компонент в фиктивном конвейере? Как правило, входные данные здесь будут имитированы или заморожены.
  3. Проверки правильности: если используются фиксированные входные данные, компонент мл должен выводить одни и те же выходные данные при каждом запуске. Если в компоненте мл есть недетерминированные источники, они должны быть задокументированы и приняты во внимание при обеспечении правильности выходных данных.
  4. Тесты производительности: сравните свой компонент мл (запросов в секунду или запросов в секунду, памяти) на доступном оборудовании с замороженными входными данными. Любые значительные регрессии в показателях производительности должны вызывать предупреждения.

Проблемы:

  1. Проблемы совместимости. Одной из ключевых проблем при тестировании компонентов машинного обучения являются проблемы совместимости между кодом, данными и артефактом (моделью). С каждым изменением кода могут возникнуть проблемы совместимости с уже используемой моделью. Поддержка версий становится сложной задачей, поскольку модели могут находиться в производстве в течение длительного времени.
  2. Сопровождение набора тестов. Методы машинного обучения меняются очень быстро. API, широко используемый в какой-то момент, может устареть через несколько месяцев. Безжалостно убивайте тесты, которые больше не актуальны / имеют высокую рентабельность.
  3. Аппаратная поддержка. Ускорители (GPU, TPU, ASIC) все чаще используются как для обучения, так и для логических выводов. В результате вам абсолютно необходимо протестировать компоненты мл на процессоре, а также на ускорителях.

Поделитесь своими мыслями в комментариях о том, как вы разрабатываете свой набор тестов ML!