Использование Azure Pipelines с Машинное обучение Azure
Azure DevOps Services | Azure DevOps Server 2022 — Azure DevOps Server 2019
Конвейер Azure DevOps можно использовать для автоматизации жизненного цикла машинного обучения. Ниже перечислены некоторые операции, которые можно автоматизировать.
- Подготовка данных (извлечение, преобразование, операции загрузки)
- Обучение моделей машинного обучения с масштабированием по запросу и масштабированием
- Развертывание моделей машинного обучения в виде общедоступных или частных веб-служб
- Мониторинг развернутых моделей машинного обучения (например, для анализа производительности или смещения данных)
В этой статье описано, как создать Azure Pipeline, которая создает и развертывает модель машинного обучения для Машинное обучение Azure.
В этом руководстве используется Машинное обучение Azure пакет SDK Для Python версии 2 и расширение машинного обучения Azure CLI версии 2.
Необходимые компоненты
- Выполните инструкции по созданию ресурсов, чтобы приступить к работе :
- Создание рабочей области
- Создание облачного вычислительного кластера для обучения модели
- расширение Машинное обучение Azure для Azure Pipelines. Это расширение можно установить из Visual Studio Marketplace в https://marketplace.visualstudio.com/items?itemName=ms-air-aiagility.azureml-v2.
Шаг 1. Получение кода
Создайте вилку для следующего репозитория на GitHub:
https://github.com/azure/azureml-examples
Шаг 2. Вход в Azure Pipelines
Войдите в Azure Pipelines. После входа в браузере откроется https://dev.azure.com/my-organization-name
и отобразится панель мониторинга Azure DevOps.
Создайте проект в выбранной организации. Если у вас нет проектов в организации, отобразится экран Создайте проект, чтобы приступить к работе. В противном случае нажмите кнопку "Создать проект" в правом верхнем углу панели мониторинга.
Шаг 3. Создание подключения к службе
Вы можете использовать существующее подключение к службе.
Для проверки подлинности с помощью портал Azure требуется подключение Azure Resource Manager.
В Azure DevOps выберите "Параметры проекта" и откройте страницу "Подключения службы".
Выберите " Создать подключение службы" и выберите Azure Resource Manager.
Выберите метод проверки подлинности по умолчанию, субъект-служба (автоматически).
Создайте подключение к службе. Задайте предпочтительный уровень области, подписку, группу ресурсов и имя подключения.
Шаг 4. Создание конвейера
Перейдите к конвейерам и выберите команду "Создать конвейер".
Выполните все шаги мастера, выбрав GitHub в качестве расположения исходного кода.
Возможно, вам придется выполнить вход в GitHub. Для этого введите учетные данные GitHub.
Когда появится список репозиториев, выберите свой.
Вы можете перенаправиться на GitHub, чтобы установить приложение Azure Pipelines. В этом случае выберите " Утвердить" и "Установить".
Выберите конвейер Starter. Вы обновите шаблон начального конвейера.
Шаг 5. Создание конвейера YAML для отправки задания Машинное обучение Azure
Удалите начальный конвейер и замените его следующим кодом YAML. В этом конвейере вы получите следующее:
- Используйте задачу версии Python, чтобы настроить Python 3.8 и установить требования к пакету SDK.
- Используйте задачу Bash для запуска скриптов bash для пакета SDK Машинное обучение Azure и ИНТЕРФЕЙСА командной строки.
- Используйте задачу Azure CLI для отправки задания Машинное обучение Azure.
Выберите следующие вкладки в зависимости от того, используется ли подключение службы Azure Resource Manager или универсальное подключение к службе. В конвейере YAML замените значение переменных ресурсами.
- Использование подключения службы Azure Resource Manager
- Использование универсального подключения к службе
name: submit-azure-machine-learning-job
trigger:
- none
variables:
service-connection: 'machine-learning-connection' # replace with your service connection name
resource-group: 'machinelearning-rg' # replace with your resource group name
workspace: 'docs-ws' # replace with your workspace name
jobs:
- job: SubmitAzureMLJob
displayName: Submit AzureML Job
timeoutInMinutes: 300
pool:
vmImage: ubuntu-latest
steps:
- task: UsePythonVersion@0
displayName: Use Python >=3.8
inputs:
versionSpec: '>=3.8'
- bash: |
set -ex
az version
az extension add -n ml
displayName: 'Add AzureML Extension'
- task: AzureCLI@2
name: submit_azureml_job_task
displayName: Submit AzureML Job Task
inputs:
azureSubscription: $(service-connection)
workingDirectory: 'cli/jobs/pipelines-with-components/nyc_taxi_data_regression'
scriptLocation: inlineScript
scriptType: bash
inlineScript: |
# submit component job and get the run name
job_name=$(az ml job create --file single-job-pipeline.yml -g $(resource-group) -w $(workspace) --query name --output tsv)
# Set output variable for next task
echo "##vso[task.setvariable variable=JOB_NAME;isOutput=true;]$job_name"
Шаг 6. Дождитесь завершения задания Машинное обучение Azure
На шаге 5 вы добавили задание для отправки задания Машинное обучение Azure. На этом шаге вы добавите другое задание, которое ожидает завершения задания Машинное обучение Azure.
- Использование подключения службы Azure Resource Manager
- Использование универсального подключения к службе
Если вы используете подключение к службе Azure Resource Manager, можно использовать расширение "Машинное обучение". Вы можете искать это расширение в расширениях Azure DevOps Marketplace или перейти непосредственно к расширению. Установите расширение "Машинное обучение".
Внимание
Не устанавливайте расширение Машинное обучение (классическая модель) по ошибке; это старое расширение, которое не предоставляет одинаковые функциональные возможности.
В окне проверки конвейера добавьте задание сервера. В шагах задания выберите "Показать помощника " и найдите AzureML. Выберите задачу "Ожидание заданий AzureML" и заполните сведения для задания.
Задача имеет четыре входных данных: Service Connection
, Azure Resource Group Name
AzureML Workspace Name
и AzureML Job Name
. Заполните эти входные данные. Результирующий YAML для этих шагов аналогичен следующему примеру:
Примечание.
- Задача ожидания задания Машинное обучение Azure выполняется в задании сервера, который не использует дорогостоящие ресурсы пула агентов и не требует дополнительных расходов. Задания сервера (указанные в )
pool: server
выполняются на том же компьютере, что и конвейер. Дополнительные сведения см. в разделе "Задания сервера". - Одна Машинное обучение Azure задача ожидания задания может ждать только в одном задании. Вам потребуется настроить отдельную задачу для каждого задания, на которое вы хотите ждать.
- Задача ожидания задания Машинное обучение Azure может ждать не более 2 дней. Это жесткое ограничение, заданное Azure DevOps Pipelines.
- job: WaitForAzureMLJobCompletion
displayName: Wait for AzureML Job Completion
pool: server
timeoutInMinutes: 0
dependsOn: SubmitAzureMLJob
variables:
# We are saving the name of azureMl job submitted in previous step to a variable and it will be used as an inut to the AzureML Job Wait task
azureml_job_name_from_submit_job: $[ dependencies.SubmitAzureMLJob.outputs['submit_azureml_job_task.JOB_NAME'] ]
steps:
- task: AzureMLJobWaitTask@1
inputs:
serviceConnection: $(service-connection)
resourceGroupName: $(resource-group)
azureMLWorkspaceName: $(workspace)
azureMLJobName: $(azureml_job_name_from_submit_job)
Шаг 7. Отправка конвейера и проверка выполнения конвейера
Выберите Сохранить и выполнить. Конвейер ожидает завершения задания Машинное обучение Azure и завершит задачу с таким же состоянием, что и задание WaitForJobCompletion
Машинное обучение Azure. Например: задание Succeeded
Машинное обучение Azure == задача Azure DevOps в WaitForJobCompletion
Succeeded
задании Машинное обучение Azure задания Failed
== задача Azure DevOps в WaitForJobCompletion
Failed
задании Машинное обучение Azure Cancelled
задании == задача Azure DevOps в задании WaitForJobCompletion
Cancelled
Совет
Полное задание Машинное обучение Azure можно просмотреть в Студия машинного обучения Azure.
Очистка ресурсов
Если вы не собираетесь продолжать использовать конвейер, удалите проект Azure DevOps. В портал Azure удалите группу ресурсов и экземпляр Машинное обучение Azure.