Где можно сохранять и записывать файлы для экспериментов Машинного обучения Azure

ОБЛАСТЬ ПРИМЕНЕНИЯ:Пакет SDK для Python для ML Azure версии 1

Из этой статьи вы узнаете, где сохранять входные файлы и куда записывать выходные файлы из экспериментов, чтобы предотвратить ошибки ограничения хранилища и задержку экспериментов.

При запуске обучающих заданий в целевом объекте вычислений они изолируются от внешних сред. Цель данной схемы — обеспечить повторяемость и переносимость эксперимента. Если вы дважды выполните один и тот же сценарий в том же или другом целевом объекте вычислений, то полученные результаты будут одинаковыми. Такая схема работы позволяет использовать целевые объекты вычислений как вычислительные ресурсы без сохранения состояния, которые не сопоставляются с уже завершенными заданиями.

Где сохранять входные файлы

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

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

Максимальный размер хранилища для моментальных снимков экспериментов составляет 300 МБ или 2000 файлов.

По этой причине рекомендуется следующее.

  • Хранение файлов в наборе данных Машинное обучение Azure. Это предотвращает проблемы с задержкой экспериментов и дает преимущества доступа к данным из удаленного целевого объекта вычислений, что означает, что проверка подлинности и подключение управляются Машинным обучением Azure. Узнайте дополнительно о том, как указать набор данных в качестве источника входных данных в обучающем скрипте, предоставленном на курсе обучения с наборами данных.

  • Если вам требуется только несколько файлов данных и сценариев зависимостей, и вы не можете использовать хранилище данных, поместите файлы в ту же папку, в которой находится сценарий обучения. Укажите эту папку как source_directory непосредственно в сценарии обучения или в коде, который вызывает сценарий обучения.

Ограничения хранилища моментальных снимков экспериментов

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

Общее ограничение составляет 300 МБ или 2000 файлов. При превышении этого ограничения возникнет следующая ошибка:

While attempting to take snapshot of .
Your total snapshot size exceeds the limit of 300.0 MB

Чтобы устранить эту ошибку, храните файлы экспериментов в хранилище данных. Если вы не можете использовать хранилище данных, в таблице ниже представлены возможные альтернативные решения.

Описание эксперимента Решение для ограничения хранилища
Менее 2000 файлов и невозможно использовать хранилище данных Переопределить ограничение размера моментального снимка с помощью
azureml._restclient.snapshots_client.SNAPSHOT_MAX_SIZE_BYTES = 'insert_desired_size' и azureml._restclient.constants.SNAPSHOT_MAX_SIZE_BYTES = 'insert_desired_size'.
Это может занять несколько минут в зависимости от количества и размера файлов.
Необходимо использовать специальный каталог сценариев Чтобы предотвратить включение ненужных файлов в моментальный снимок, создайте файл игнорирования (.gitignore или .amlignore) в каталоге. Добавьте исключаемые файлы и каталоги в этот файл. Дополнительные сведения о синтаксисе, который будет использоваться в этом файле, см. в разделе синтаксис и шаблоны для .gitignore. Файл .amlignore использует тот же синтаксис. Если оба файла существуют, используется файл .amlignore, а файл .gitignore не используется.
Pipeline Используйте другой подкаталог в каждом шаге
Записные книжки Jupyter Создайте файл .amlignore или переместите записную книжку в новый, пустой подкаталог и снова запустите код.

Куда записывать файлы

Из-за изоляции обучающих экспериментов изменения в файлах, происходящие во время заданий, не всегда сохраняются вне вашей среды. Если ваш скрипт изменяет файлы локально для вычислений, эти изменения не сохраняются для следующего задания эксперимента и не распространяются автоматически обратно на клиентский компьютер. Таким образом, изменения, внесенные во время выполнения первого задания эксперимента, не влияют и не должны влиять на изменения во втором.

При записи изменений рекомендуется записывать файлы в хранилище с помощью набора данных Машинного обучения Azure объекта OutputFileDatasetConfig. См. раздел Создание OutputFileDatasetConfig.

В противном случае запишите файлы в папку ./outputs и/или ./logs.

Важно!

Две папки, outputs и logs, обрабатываются Машинным обучением Azure особым образом. Когда во время обучения вы записываете файлы в папки ./outputs и./logs, эти файлы автоматически будут отправляться в журнал заданий, чтобы после завершения задания у вас был к ним доступ.

  • Для таких выходных данных, как сообщения о состоянии или результаты оценки, записывайте файлы в папку ./outputs, чтобы они сохранялись как артефакты в журнале заданий. Учитывайте количество и размер файлов, записываемых в эту папку, так как при передаче содержимого в журнал заданий может возникать задержка. Если задержка является проблемой, рекомендуется записывать файлы в хранилище данных.

  • Для сохранения записанных файлов в виде журналов в журнале заданий записывайте файлы в папку ./logs. Журналы отправляются в реальном времени, поэтому этот метод подходит для потоковой передачи динамических обновлений из удаленного задания.

Следующие шаги