Настройка сред для среды разработки и рабочей среды

Завершено

В DevOps среда ссылается на коллекцию ресурсов. Эти ресурсы используются для развертывания приложения или проектов машинного обучения для развертывания модели.

Использование сред для непрерывной поставки

Количество сред, с которыми вы работаете, определяется вашей организацией. Как правило, существует по крайней мере две среды: разработка или dev и рабочая среда или prod. Кроме того, между ними можно добавлять другие среды, например промежуточную или предварительную (pre-prod) среду.

Стандартный подход при непрерывной поставке:

  1. Экспериментируйте с обучением модели в среде разработки.
  2. Переместите лучшую модель в промежуточную или предварительную среду для развертывания и тестирования этой модели.
  3. Наконец, переместите модель в рабочую среду для развертывания модели, чтобы конечные пользователи могли использовать ее.

Примечание.

В этом модуле рассмотрим интерпретацию сред DevOps. Обратите внимание, что в Машинном обучение Azure также используются среды терминов для описания коллекции пакетов Python, необходимых для выполнения скрипта. Эти две концепции сред не зависят друг от друга. Дополнительные сведения о средах Машинного обучения Azure.

Организация сред Машинного обучения Azure

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

Образы, которые ваша команда использует в среде разработки, предварительной подготовки и в рабочей среде. Необязательно все члены вашей команды могут иметь доступ ко всем средам. Специалисты по обработке и анализу данных могут работать только в среде разработки и не использовать данные рабочей среды, а инженеры по машинному обучению могут развертывать модели в предварительной и рабочей средах и использовать данные рабочей среды.

Наличие отдельных сред упрощает управление доступом к ресурсам. Затем каждую среду можно связать с отдельной рабочей областью Машинного обучения Azure.

Схема настройки нескольких сред.

В Azure используется управление доступом на основе ролей (RBAC) для предоставления коллегам требуемого уровня доступа к подмножеству ресурсов, с которыми они должны работать.

Кроме того, можно использовать только одну рабочую область Машинного обучения Azure. При использовании одной рабочей области для среды разработки и рабочей среды потребуется меньше ресурсов Azure и меньше затрат на управление. Однако RBAC применяется как к среде dev, так и к среде prod, что может означать, поэтому пользователям может предоставляться слишком широкий или слишком урезанный доступ к ресурсам.

Для работы со средами на разных этапах разработки модели можно ориентироваться на среду при использовании Azure Pipeline или на рабочий процесс при использовании GitHub Actions.

Среды Azure DevOps

Для работы со средами в Azure DevOps сначала необходимо создать среды. Затем можно указать, в какой среде необходимо выполнить развертывание в Azure Pipeline.

  1. В Azure DevOps раскройте меню Pipelines.
  2. Выберите Среды.
  3. Создайте новую среду.
  4. Присвойте имя своей среде.
  5. Выберите Нет для ресурсов. Вы будете работать в определенной рабочей области Машинного обучения Azure в самом конвейере.
  6. Нажмите кнопку создания.

Снимок экрана: создание новой среды в Azure DevOps.

После создания сред в Azure DevOps и разных рабочих областей Машинного обучения Azure, связанных с каждой средой, в файле YAML Azure Pipelines можно указать, в какой среде необходимо выполнить развертывание:

trigger: 
- main

stages:
- stage: deployDev
  displayName: 'Deploy to development environment'
  jobs:
    - deployment: publishPipeline
      displayName: 'Model Training'
      pool:
        vmImage: 'Ubuntu-18.04'
      environment: dev
      strategy:
       runOnce:
         deploy:
          steps:
          - template: aml-steps.yml
            parameters:
              serviceconnectionname: 'spn-aml-workspace-dev'

Значение в environment YAML-файле, devуказывающее, что модель обучена в среде разработки. Через подключение службы указывается, какую рабочую область Машинного обучения Azure нужно использовать для обучения модели.

Среды GitHub

Чтобы использовать среды с GitHub Actions, сначала необходимо создать среду. Затем можно использовать среду в рабочем процессе.

Чтобы создать среду в репозитории GitHub (репозиторий):

  1. Перейдите на вкладку Параметры в репозитории.
  2. Выберите Среды.
  3. Создайте новую среду.
  4. Введите имя.
  5. Выберите Настройка среды.

Снимок экрана: создание новой среды в GitHub.

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

Чтобы использовать среду в рабочем процессе, можно добавить среду, в которой необходимо выполнить развертывание, указав ее в файле YAML:

name: Train model

on:
  push:
    branches: [ main ]

jobs:
  build:
    runs-on: ubuntu-latest
    environment:
        name: dev 
    steps:
    - name: check out repo
      uses: actions/checkout@v2
    - name: install az ml extension
      run: az extension add -n ml -y
    - name: azure login
      uses: azure/login@v1
      with:
        creds: ${{secrets.AZURE_CREDENTIALS}}
    - name: set current directory
      run: cd src
    - name: run pipeline
      run: az ml job create --file src/aml_service/pipeline-job.yml --resource-group dev-ml-rg --workspace-name dev-ml-ws

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