Использование GitHub Actions с Машинным обучением Azure
ОБЛАСТЬ ПРИМЕНЕНИЯ:Расширение машинного обучения Azure CLI версии 2 (current)Python SDK azure-ai-ml версии 2 (current)
Приступите к работе с GitHub Actions, чтобы обучить модель в Машинном обучении Azure.
В этой статье описано, как создать рабочий процесс GitHub Actions, который создает и развертывает модель машинного обучения в Машинном обучении Azure. Вы обучите модель линейной регрессии scikit-learn в наборе данных о такси Нью-Йорка.
Рабочий процесс в GitHub Actions определяется файлом YAML-фалом (.yml), который размещается в репозитории (/.github/workflows/
). Это определение содержит разные шаги и параметры рабочего процесса.
Необходимые компоненты
Перед выполнением действий, описанных в этой статье, убедитесь, что выполнены следующие необходимые условия:
Рабочая область Машинного обучения Azure. Если у вас ее нет, создайте ее по инструкциям, приведенным в кратком руководстве по созданию ресурсов рабочей области.
Чтобы установить пакет SDK для Python версии 2, используйте следующую команду:
pip install azure-ai-ml azure-identity
Чтобы обновить существующую установку пакета SDK до последней версии, выполните следующую команду:
pip install --upgrade azure-ai-ml azure-identity
Дополнительные сведения см. в статье "Установка пакета SDK для Python версии 2 для Машинное обучение Azure".
- Учетная запись GitHub. Если у вас ее нет, зарегистрируйтесь бесплатно.
Шаг 1. Получение кода
Создайте вилку для следующего репозитория на GitHub:
https://github.com/azure/azureml-examples
Клонируйте вилку репозитория локально.
git clone https://github.com/YOUR-USERNAME/azureml-examples
Шаг 2. Проверка подлинности с помощью Azure
Сначала необходимо определить способ проверки подлинности в Azure. Вы можете использовать субъект-службу или OpenID Connect.
Создание учетных данных для развертывания.
Создайте субъект-службу с помощью командыaz ad sp create-for-rbac в Azure CLI. Чтобы выполнить эту команду, откройте Azure Cloud Shell на портале Azure или нажмите кнопку Попробовать.
az ad sp create-for-rbac --name "myML" --role contributor \
--scopes /subscriptions/<subscription-id>/resourceGroups/<group-name> \
--json-auth
Параметр --json-auth
доступен в версиях >Azure CLI = 2.51.0. Версии до этого использования --sdk-auth
с предупреждением об нерекомендуемом.
В указанном выше примере замените заполнители соответствующим идентификатором подписки, именем группы ресурсов и именем приложения. Выходные данные содержат объект JSON с учетными данными назначения роли, которые предоставляют доступ к приложению Службы приложений, как показано ниже. Скопируйте этот объект JSON для последующего использования.
{
"clientId": "<GUID>",
"clientSecret": "<GUID>",
"subscriptionId": "<GUID>",
"tenantId": "<GUID>",
(...)
}
Создание секретов
В GitHub перейдите в репозиторий.
Перейдите к параметрам в меню навигации .
Выберите "Секреты безопасности>" и "Действия переменных>".
Нажмите Создать секрет репозитория.
Вставьте все выходные данные JSON, полученные из команды Azure CLI, в поле значения секрета. Присвойте секрету имя
AZURE_CREDENTIALS
.Выберите Добавить секрет.
Шаг 3. Обновление setup.sh
для подключения к рабочей области Машинное обучение Azure
Вам потребуется обновить переменные файла установки CLI в соответствии с рабочей областью.
В вилку репозитория перейдите в
azureml-examples/cli/
раздел .Измените
setup.sh
и обновите эти переменные в файле.«Переменная» Description ГРУППА имя группы ресурсов LOCATION Расположение рабочей области (например: eastus2
)РАБОЧАЯ ОБЛАСТЬ Имя рабочей области Машинное обучение Azure
Шаг 4. Обновление pipeline.yml
с именем вычислительного кластера
Вы будете pipeline.yml
использовать файл для развертывания конвейера Машинное обучение Azure. Это конвейер машинного обучения, а не конвейер DevOps. Это обновление необходимо выполнить, только если вы используете имя, отличающееся от значения cpu-cluster
для имени кластера компьютера.
- В вилку репозитория перейдите в
azureml-examples/cli/jobs/pipelines/nyc-taxi/pipeline.yml
раздел . - При каждом отображении
compute: azureml:cpu-cluster
обновляйте значениеcpu-cluster
имени вычислительного кластера. Например, если кластер называетсяmy-cluster
, новое значение будетazureml:my-cluster
. Доступно пять обновлений.
Шаг 5. Выполнение рабочего процесса GitHub Actions
Ваш рабочий процесс выполняет проверку подлинности в Azure, настраивает CLI Машинного обучения Azure и использует CLI для обучения модели в Машинном обучении Azure.
Файл рабочего процесса состоит из раздела триггера и заданий:
- Триггер запускает рабочий процесс в разделе
on
. Рабочий процесс запускается по умолчанию по расписанию cron и при выполнении запроса на вытягивание из соответствующих ветвей и путей. См. дополнительные сведения о событиях, которые активируют рабочие процессы. - В разделе заданий рабочего процесса вы можете извлечь код и войти в Azure с помощью секрета субъекта-службы.
- В разделе заданий также содержится действие установки, которое устанавливает и настраивает CLI Машинного обучения (версия 2). После установки CLI действие задания запуска выполняет файл
pipeline.yml
Машинного обучения Azure для обучения модели с использованием данных о такси Нью-Йорка.
Включение рабочего процесса
В вилку репозитория откройте
.github/workflows/cli-jobs-pipelines-nyc-taxi-pipeline.yml
и убедитесь, что рабочий процесс выглядит следующим образом.name: cli-jobs-pipelines-nyc-taxi-pipeline on: workflow_dispatch: schedule: - cron: "0 0/4 * * *" pull_request: branches: - main - sdk-preview paths: - cli/jobs/pipelines/nyc-taxi/** - .github/workflows/cli-jobs-pipelines-nyc-taxi-pipeline.yml - cli/run-pipeline-jobs.sh - cli/setup.sh jobs: build: runs-on: ubuntu-latest steps: - name: check out repo uses: actions/checkout@v2 - name: azure login uses: azure/login@v1 with: creds: ${{secrets.AZURE_CREDENTIALS}} - name: setup run: bash setup.sh working-directory: cli continue-on-error: true - name: run job run: bash -x ../../../run-job.sh pipeline.yml working-directory: cli/jobs/pipelines/nyc-taxi
Выберите Просмотреть выполнения.
Включите рабочие процессы, выбрав Я понимаю свои рабочие процессы и хочу включить их.
Выберите рабочий процесс cli-jobs-pipelines-nyc-taxi-pipeline workflow и выберите Включить рабочий процесс.
Выберите Выполнить рабочий процесс и щелкните Выполнить рабочий процесс.
Шаг 6. Проверка выполнения рабочего процесса
Откройте завершенный рабочий процесс и убедитесь, что задание сборки выполнено успешно. Рядом с заданием появится зеленая галочка.
Откройте Студию машинного обучения Azure и перейдите к примеру nyc-taxi-pipeline-example. Убедитесь, что каждая часть задания (подготовка, преобразование, обучение, прогнозирование, оценка) завершена и что отображается зеленая галочка.
Очистка ресурсов
Когда вы закончите работу с группой ресурсов и репозиторием, очистите развернутые ресурсы, удалив группу ресурсов и репозиторий GitHub.