Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
ПРИМЕНЯЕТСЯ К:
Пакет SDK машинного обучения Azure версии 1 для Python
Внимание
В этой статье содержатся сведения об использовании пакета SDK машинного обучения Azure версии 1. Пакет SDK версии 1 устарел с 31 марта 2025 г. Поддержка будет завершена 30 июня 2026 г. Вы можете установить и использовать пакет SDK версии 1 до этой даты. Существующие рабочие процессы, использующие пакет SDK версии 1, будут продолжать работать после даты окончания поддержки. Однако они могут быть подвержены рискам безопасности или критическим изменениям в случае изменений архитектуры в продукте.
Рекомендуется перейти на пакет SDK версии 2 до 30 июня 2026 г. Дополнительные сведения о пакете SDK версии 2 см. в статье "Что такое ИНТЕРФЕЙС командной строки Машинного обучения Azure" и пакет SDK для Python версии 2 исправочник по пакету SDK версии 2.
Подсказка
Вместо этого используйте пакет SDK версии 2 для новых проектов. См. раздел "Отправка задания обучения (SDK v2)" для эквивалентного рабочего процесса, использующего CommandJob в пакете azure-ai-ml.
В этой статье описывается настройка и отправка заданий Машинного обучения Azure для обучения моделей. Важные части конфигурации и отправки сценария обучения проиллюстрированы фрагментами кода. Чтобы найти полные комплексные примеры работы, ознакомьтесь с одним из примеров записных книжек.
При обучении обычно начинают на локальном компьютере, а затем переходят к масштабированию на облачный кластер. С помощью Машинного обучения Azure можно запускать скрипт на различных целевых объектах вычислений, не изменяя скрипт обучения.
Вам нужно лишь определить среду для каждого целевого объекта вычислений с помощью конфигурации запуска скрипта. Затем, если вы хотите запустить обучающий эксперимент на другом целевом объекте вычислений, укажите конфигурацию задания для этого вычисления.
Предварительные условия
- Если у вас нет подписки Azure, создайте бесплатную учетную запись, прежде чем приступить к работе. Опробуйте бесплатную или платную версию Машинного обучения Azure уже сегодня.
- Пакет SDK машинного обучения Azure для Python (версии 1) (>= 1.13.0) — пакет SDK версии 1 устарел. Для новых проектов используйте пакет SDK версии 2.
- Рабочая область
ws. - Целевой объект вычисления
my_compute_target. Создайте целевой объект вычислений.
Что такое конфигурация запуска сценария
ScriptRunConfig используется для настройки сведений, необходимых для отправки обучающего запуска в рамках эксперимента.
Вы отправляете обучающий эксперимент с помощью объекта ScriptRunConfig. Этот объект включает в себя следующее.
- source_directory: исходный каталог, содержащий скрипт обучения
- script: обучающий сценарий для запуска;
- compute_target: целевой объект вычислений, в котором выполняется запуск;
- environment: среда, используемая при запуске сценария;
- другие настраиваемые параметры (дополнительные сведения см. в справочной документации )
Обучение модели
Шаблон кода для отправки задания на выполнение обучения одинаковый для всех типов целевых объектов вычислений.
- Создание эксперимента для запуска
- Создание среды, в которой выполняется скрипт
- Создайте ScriptRunConfig, который задает целевой объект вычислений и среду.
- отправить задачу на выполнение.
- Ожидание завершения задания
Также вы можете:
- Отправьте запрос на запуск HyperDrive для настройки гиперпараметров.
- Отправьте эксперимент с помощью расширения VS Code.
Выбор целевого объекта вычислений
Выберите целевой объект вычислений, на котором выполняется скрипт обучения. Если целевой объект вычислений не указан в ScriptRunConfig или если compute_target='local'машинное обучение Azure выполняет скрипт локально.
В примере кода в этой статье предполагается, что вы уже создали целевой объект вычислений my_compute_target в разделе "Предварительные требования".
Примечание.
- Azure Databricks не поддерживается в качестве целевого объекта вычислений для обучения модели. Вы можете использовать Azure Databricks для подготовки данных и задач развертывания.
- Сведения о создании и присоединении целевого объекта вычислений для обучения в кластере Kubernetes с поддержкой Azure Arc см. в статье Настройка Машинного обучения с поддержкой Azure Arc.
Создать среду
Среды Машинного обучения Azure представляют собой инкапсуляцию среды, в которой происходит машинное обучение. Они определяют пакеты Python, образ Docker, переменные среды и параметры программного обеспечения, связанные с вашими сценариями обучения и оценок. Они также указывают runtime (Python, Spark или Docker).
Вы можете либо определить собственную среду, либо использовать предварительно настроенную среду Azure Machine Learning. Курированные среды — это предопределенные среды, доступные в рабочей области по умолчанию. Эти среды поддерживают кэшированные образы Docker, что снижает затраты на подготовку заданий. Полный список доступных курированных сред см. в разделе Курированные среды Машинного обучения Azure.
Для удаленного целевого объекта вычислений можно использовать одну из следующих распространенных курированных сред:
ПРИМЕНЯЕТСЯ К:
Пакет SDK машинного обучения Azure версии 1 для Python
from azureml.core import Workspace, Environment
ws = Workspace.from_config()
myenv = Environment.get(workspace=ws, name="AzureML-Minimal")
Дополнительные сведения о средах см. в разделе Создание и использование программных сред в Машинном обучении Azure.
Локальный целевой объект вычислений
Если целевой объект вычислений является локальным компьютером, вы несете ответственность за обеспечение доступности всех необходимых пакетов в среде Python, в которой выполняется скрипт. Используйте python.user_managed_dependencies, чтобы воспользоваться текущей средой Python (или Python по указанному вами пути).
ПРИМЕНЯЕТСЯ К:
Пакет SDK машинного обучения Azure версии 1 для Python
from azureml.core import Environment
myenv = Environment("user-managed-env")
myenv.python.user_managed_dependencies = True
# You can choose a specific Python environment by pointing to a Python path
# myenv.python.interpreter_path = '/home/johndoe/miniconda3/envs/myenv/bin/python'
Создание эксперимента
Создайте эксперимент в своей рабочей области. Эксперимент — это облегченный контейнер, который помогает упорядочить отправку заданий и отслеживание кода.
ПРИМЕНЯЕТСЯ К:
Пакет SDK машинного обучения Azure версии 1 для Python
from azureml.core import Experiment
experiment_name = 'my_experiment'
experiment = Experiment(workspace=ws, name=experiment_name)
Создание конфигурации задания для скрипта
Теперь, когда у вас есть целевой объект вычислений (my_compute_targetсм . предварительные требования и среда (myenvсм. статью "Создание среды"), создайте конфигурацию задания скрипта, которая запускает скрипт обучения (train.py) в каталоге project_folder :
ПРИМЕНЯЕТСЯ К:
Пакет SDK машинного обучения Azure версии 1 для Python
from azureml.core import ScriptRunConfig
src = ScriptRunConfig(source_directory=project_folder,
script='train.py',
compute_target=my_compute_target,
environment=myenv)
Если вы не указываете среду, для вас создается среда по умолчанию.
Если у вас есть аргументы командной строки, которые вы хотите передать в скрипт обучения, их можно указать с помощью arguments параметра конструктора ScriptRunConfig, например arguments=['--arg1', arg1_val, '--arg2', arg2_val].
Чтобы переопределить максимально допустимое время выполнения задания по умолчанию, используйте параметр max_run_duration_seconds. Система пытается автоматически отменить задание, если оно занимает больше времени, чем это значение.
Указание конфигурации распределенного задания
Если вы хотите запускать задание распределенного обучения, задайте конфигурацию распределенного задания с помощью параметра distributed_job_config. Поддерживаются следующие типы конфигурации: MpiConfiguration, TensorflowConfiguration и PyTorchConfiguration.
Дополнительные сведения и примеры выполнения распределенных заданий Horovod, TensorFlow и PyTorch см. в следующих примерах:
Отправка эксперимента
ПРИМЕНЯЕТСЯ К:
Пакет SDK машинного обучения Azure версии 1 для Python
run = experiment.submit(config=src)
run.wait_for_completion(show_output=True)
Внимание
При отправке задания обучения создается моментальный снимок каталога, содержащего скрипты обучения, и отправляется в целевой объект вычислений. Он также хранится как часть эксперимента в вашей рабочей области. При изменении файлов и отправке задания отправляются только измененные файлы.
Чтобы предотвратить включение ненужных файлов в моментальный снимок, создайте файл игнорирования (.gitignore или .amlignore) в каталоге. Добавьте исключаемые файлы и каталоги в этот файл. Дополнительные сведения о синтаксисе, который будет использоваться в этом файле, см. в разделе синтаксис и шаблоны для .gitignore. Файл .amlignore использует тот же синтаксис.
Если оба файла существуют, используется файл .amlignore, а файл .gitignore не используется.
Дополнительные сведения о моментальных снимках см. в разделе Моментальные снимки.
Внимание
Особые папки. Две папки — выходные данные и журналы, обрабатываются Машинным обучением Azure специальным образом. Во время обучения, когда вы записываете файлы в папки с именами выходные данные и логи в корневом каталоге (./outputs и ./logs соответственно), файлы автоматически загружаются в историю заданий, чтобы у вас был к ним доступ после завершения задания.
Во время обучения, чтобы создать артефакты (например, файлы модели, контрольные точки, файлы данных или изображения), записывайте их в папку ./outputs.
Аналогичным образом можно записать любые логи из задания на обучение в папку ./logs. Чтобы использовать интеграцию TensorBoard в Машинном обучении Azure, обязательно напишите журналы TensorBoard в эту папку. Пока задание выполняется, вы можете запустить TensorBoard и потоковую передачу этих журналов. Позже вы также сможете восстановить журналы из любого из предыдущих заданий.
Например, чтобы загрузить файл, записанный в папку outputs на локальном компьютере, после запуска удаленного задания на обучение выполните такую команду: run.download_file(name='outputs/my_output_file', output_file_path='my_destination_path')
Интеграция и отслеживание в Git
При выполнении задания на обучение, в котором исходным каталогом является локальный репозиторий Git, сведения об этом репозитории сохраняются в журнале задания. Дополнительные сведения см. в статье Интеграция с Git для Машинного обучения Azure.
Примеры записных книжек
Примеры настройки задания для разных сценариев обучения см. в следующих записных книжках.
- Обучение в различных целевых объектах вычислений
- Обучение с помощью платформ Машинного обучения
- tutorials/img-classification-part1-training.ipynb
Узнайте, как запускать ноутбуки, следуя статье Использование записных книжек Jupyter для исследования этой службы.
Устранение неполадок
AttributeError: объект RoundTripLoader не имеет атрибута "comment_handling". Эта ошибка возникает при установке несовместимой версии
ruamel-yamlвместе сazureml-core. Чтобы устранить эту ошибку, обновите до последнейazureml-coreверсии :pip install -U azureml-core.Сбой задания с ошибкой
jwt.exceptions.DecodeError. Точный текст сообщения об ошибке:jwt.exceptions.DecodeError: It is required that you pass in a value for the "algorithms" argument when calling decode().Обновитесь до последней версии azureml-core, которая автоматически закрепляет совместимую версию PyJWT:
pip install -U azureml-core.ModuleErrors (без имени модуля): если вы работаете с ModuleErrors при отправке экспериментов в Машинном обучении Azure, то сценарий обучения ожидает установки пакета, но он не добавлен. После предоставления имени пакета Машинное обучение Azure устанавливает пакет в среде, используемой для вашего задания на обучение.
При использовании
ScriptRunConfigукажите необходимые пакеты в определении среды . Вы можете добавлять пакеты с помощьюconda_dependenciesили использовать .pip_requirements_file/conda_dependencies_fileДополнительные сведения см. в разделе "Создание и использование программных сред".Машинное обучение Azure поддерживает образы Docker и их содержимое можно увидеть в контейнерах машинного обучения Azure.
Примечание.
Если вы считаете, что определенный пакет достаточно распространен, чтобы добавить его в поддерживаемые образы и среды Машинного обучения Azure, создайте запрос в GitHub в Контейнерах Машинного обучения Azure.
NameError (имя не задано), AttributeError (не найден атрибут объекта): это исключение может поступать из ваших сценариев обучения. Дополнительные сведения о конкретном не заданном имени или ошибке атрибута можно найти в файлах журналов на портале Azure. В пакете SDK можно использовать
run.get_details()для просмотра сообщения об ошибке. Будут также перечислены все файлы журнала, созданные для вашего задания. Перед повторной отправкой задания убедитесь, что вы изучите скрипт обучения и исправьте ошибку.Удаление задания или эксперимента: Эксперименты можно архивировать с помощью метода Experiment.archive или из представления "Эксперимент" в клиенте студии машинного обучения Azure с помощью кнопки "Архивировать эксперимент". Это действие скрывает эксперимент в запросах списка и отображениях, но не удаляет его.
Постоянное удаление отдельных экспериментов или заданий в настоящее время не поддерживается. Дополнительные сведения об удалении ресурсов рабочей области см. в разделе Экспорт или удаление данных рабочей области Службы машинного обучения.
Документ метрики слишком велик. Машинное обучение Azure имеет внутренние ограничения на размер объектов метрик, которые могут регистрироваться сразу в ходе задания на обучение. Если при записи метрик в виде списка возникает ошибка "Документ метрики слишком велик", попробуйте разделить список на меньшие блоки, например:
run.log_list("my metric name", my_metric[:N]) run.log_list("my metric name", my_metric[N:])Внутри Azure Machine Learning блоки с одинаковым именем метрики объединяются в непрерывный список.
Запуск целевого объекта вычислений занимает слишком много времени. Образы Docker для целевых объектов вычислений загружаются из Реестра контейнеров Azure (ACR). По умолчанию служба Машинного обучения Azure создает реестр ACR, который использует уровень обслуживания Basic. Изменение ACR для рабочей области на стандартный или премиум-уровень может сократить время сборки и загрузки образов. Дополнительные сведения см в статье Уровни службы Реестра контейнеров Azure.
Следующие шаги
- Обучение моделей с помощью Машинного обучения Azure (SDK версии 2) охватывает эквивалентный рабочий процесс с помощью текущего пакета SDK.
- Руководство. Обучение и развертывание модели использует управляемый целевой объект вычислений для обучения модели (SDK версии 1).
- Узнайте, как обучать модели с помощью конкретных платформ Машинного обучения, таких как Scikit-learn, TensorFlow и PyTorch.
- Узнайте, как эффективно настроить гиперпараметры для создания улучшенных моделей.
- После обучения модели узнайте о способах и расположениях развертывания моделей.
- Изучите класс ScriptRunConfig в справочнике по пакету SDK.
- Использование Машинного обучения Azure с виртуальными сетями Microsoft Azure