Поделиться через


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

ОБЛАСТЬ ПРИМЕНЕНИЯ: Пакет SDK для Python версии 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. Журналы отправляются в реальном времени, поэтому этот метод подходит для потоковой передачи динамических обновлений из удаленного задания.

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