Что такое эксперимент?

Как и любая научная дисциплина, наука о данных включает в себя проведение экспериментов; обычно для изучения данных или построения и оценки прогностических моделей. В Машинном обучении Azure эксперимент — это именованный процесс, обычно работающий по сценарию или конвейеру, который может генерировать метрики и выходные данные и отслеживаться в Машинном обучении Azure. Рабочее пространство. Кроме того, в журнал заносятся метаданные для запуска эксперимента и события, происходящие во время выполнения. Зарегистрированные метаданные включают в себя контекст для эксперимента — например, если эксперимент основан на сценарии, хранящемся в репозитории GitHub, метаданные о ветке GitHub включаются в зарегистрированные метаданные.

Эксперимент можно запускать несколько раз с разными данными, кодом или настройками; а Машинное обучение Azure отслеживает каждый запуск, позволяя вам просматривать историю запусков и сравнивать результаты для каждого запуска.

Запуск встроенного эксперимента

Вы можете использовать Python SDK для запуска эксперимента машинного обучения Azure в режиме реального времени, например в записной книжке. Ключевые шаги, которые необходимо выполнить в коде:

1. Создайте или извлеките именованный эксперимент в своей рабочей области.

2. Запустить эксперимент — получить активный объект Run.

3. Используйте объект Выполнить для регистрации показателей, которые вы хотите просмотреть позже.

4. Сохраните или загрузите файлы в папку outputs запуска, чтобы они сохранялись в истории выполнения.

5. Завершите прогон

После завершения выполнения вы можете просмотреть его журналы, метрики и выходные данные в студии машинного обучения Azure или использовать SDK для получения их в коде. Также есть виджет, который можно использовать для отображения сведений о прогоне в записной книжке.

Запись показателей

Для каждого эксперимента создаются файлы журналов, содержащие сообщения, которые будут записываться на терминал во время интерактивного выполнения. Это позволяет использовать простые операторы печати для записи сообщений в журнал. Однако если вы хотите записать именованные показатели для сравнения между запусками, вы можете сделать это с помощью объекта Run; который предоставляет ряд функций ведения журнала специально для этой цели. К ним относятся:

  • журнал: запись одного именованного значения.
  • log_list: запись именованного списка значений.
  • log_row: запись строки с несколькими столбцами.
  • log_table: запись словаря в виде таблицы.
  • log_image: запись файла изображения или графика.

Дополнительная информация. Дополнительные сведения о регистрации показателей во время экспериментов см. в разделе Мониторинг запусков и показателей экспериментов Azure ML в документации по Машинному обучению Azure.

Например, следующий код записывает количество наблюдений (записей) в файл CSV:

Получение и просмотр зарегистрированных показателей

Вы можете просмотреть метрики, зарегистрированные в ходе эксперимента, в студии машинного обучения Azure или с помощью виджета RunDetails в записной книжке, как показано здесь:

Вы также можете получить метрики с помощью метода get_metrics объекта Run, который возвращает представление метрик в формате JSON, как показано здесь:

Экспериментальные выходные файлы

Помимо регистрации метрик, эксперимент может создавать выходные файлы. Часто это обученные модели машинного обучения, но вы можете сохранить файл любого типа и сделать его доступным в качестве результата вашего эксперимента. Выходные файлы эксперимента сохраняются в его папке outputs.

Техника, которую вы используете для добавления файлов к результатам эксперимента, зависит от того, как вы проводите эксперимент. Примеры, показанные до сих пор, контролируют жизненный цикл эксперимента, встроенный в ваш код, и при использовании этого подхода вы можете загружать локальные файлы в папку outputs запуска, используя Run объекта . >upload_file в коде эксперимента, как показано здесь:

При выполнении эксперимента в контексте удаленных вычислений (о котором вы узнаете позже в этом курсе) любые файлы, записанные в папку outputs в контексте вычислений, автоматически загружаются в outputs после завершения запуска.

Какой бы подход вы ни использовали для проведения эксперимента, вы можете получить список выходных файлов из объекта Run следующим образом:

Запуск скрипта в качестве эксперимента

Вы можете запустить эксперимент в режиме реального времени, используя метод start_logging объекта Experiment, но чаще всего логику эксперимента инкапсулируют в скрипт и запускают скрипт как эксперимент. Сценарий можно запускать в любом допустимом вычислительном контексте, что делает его более гибким решением для проведения масштабных экспериментов.

Написание сценария эксперимента

Сценарий эксперимента — это просто файл кода Python, содержащий код, который вы хотите запустить в эксперименте. Чтобы получить доступ к контексту запуска эксперимента (который необходим для регистрации показателей), сценарий должен импортировать класс azureml.core.Run и вызвать его метод get_context. Затем сценарий может использовать контекст выполнения для регистрации метрик, загрузки файлов и завершения эксперимента, как показано здесь:

Сценарий эксперимента сохраняется в папке вместе с любыми другими файлами, от которых он зависит. Например, вы можете сохранить этот скрипт как experiment.py в папке с именем experiment_folder. Поскольку скрипт включает код для загрузки обучающих данных из data.csv, этот файл также следует сохранить в папке.

Запуск сценария эксперимента

Чтобы запустить скрипт в качестве эксперимента, вы должны определить конфигурацию скрипта, определяющую скрипт, который нужно запустить, и среду Python, в которой он будет выполняться. Это реализуется с помощью объекта ScriptRunConfig.

Например, следующий код можно использовать для запуска эксперимента на основе сценария в папке experiment_files (которая также должна содержать все файлы, используемые сценарием, такие как data.csv в предыдущем примере кода скрипта):

Примечание. Неявно созданный объект RunConfiguration определяет среду Python для эксперимента, включая пакеты, доступные для сценария. Среда по умолчанию включает стандартные библиотеки Python, такие как numpy и pandas, а также пакет azureml-defaults, содержащий классы, необходимые для работы с контекст запуска эксперимента. Если ваш сценарий зависит от пакетов, не включенных в среду по умолчанию, вы должны связать ScriptRunConfig с объектом Environment, который использует CondaDependencies объект, чтобы указать необходимые пакеты Python. Среды выполнения более подробно обсуждаются далее в этом курсе.

Использование MLflow

MLflow — это библиотека с открытым исходным кодом для управления экспериментами по машинному обучению, которая включает компонент отслеживания для ведения журнала. Если ваша организация уже использует MLflow, вы можете продолжать использовать его для отслеживания метрик в Машинном обучении Azure.

Использование MLflow Inline

Обратите внимание, что код явно задает URI отслеживания MLflow для конечной точки отслеживания, предоставленной рабочей областью машинного обучения Azure.

Использование MLflow в скрипте

Чтобы использовать MLflow в эксперименте на основе скрипта, скрипт должен включать код для запуска запуска MLflow и регистрации метрик; а ScriptRunConfig для эксперимента должна включать среду, в которой установлены пакеты mlflow и azureml-mlflow.

Я попытался объяснить продолжение Модуля 3 в заголовках. Следующая статья продолжит последние части о Модуле 3.

До скорой встречи 🙂

Оставаться здоровым :)

С уважением,
Эрдем