Развертывание конвейеров с помощью конечных точек пакетной службы

ОБЛАСТЬ ПРИМЕНЕНИЯ:Расширение машинного обучения Azure CLI версии 2 (current)Python SDK azure-ai-ml версии 2 (current)

Компоненты конвейера можно развертывать в конечной точке пакетной службы, предоставляя удобный способ их эксплуатации в Машинное обучение Azure. В этой статье вы узнаете, как создать пакетное развертывание, содержащее простой конвейер. Содержание:

  • Создание и регистрация компонента конвейера
  • Создание пакетной конечной точки и развертывание компонента конвейера
  • Тестирование развертывания

Сведения об этом примере

В этом примере мы развернем компонент конвейера, состоящий из простого задания команды, которое печатает "hello world!". Этот компонент не требует входных или выходных данных и является самым простым сценарием развертывания конвейера.

Пример в этой статье основан на примерах кода, содержащихся в репозитории azureml-examples . Чтобы выполнить команды локально без необходимости копирования и вставки YAML и других файлов, сначала клонируйте репозиторий, а затем измените каталоги в папку:

git clone https://github.com/Azure/azureml-examples --depth 1
cd azureml-examples/cli

Файлы для этого примера находятся в следующих файлах:

cd endpoints/batch/deploy-pipelines/hello-batch

Следуйте инструкциям в записных книжках Jupyter

Вы можете следовать версии пакета SDK для Python этого примера, открыв записную книжку sdk-deploy-and-test.ipynb в клонируемом репозитории.

Необходимые компоненты

Перед выполнением действий, описанных в этой статье, убедитесь, что выполнены следующие необходимые условия:

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

  • Рабочая область Машинного обучения Azure. Если у вас нет одного, выполните действия, описанные в статье "Управление Машинное обучение Azure рабочими областями", чтобы создать ее.

  • Убедитесь, что в рабочей области есть следующие разрешения:

    • Создание конечных точек и развертываний пакетной службы или управление ими: используйте роль владельца, участника или настраиваемую роль, которая позволяет Microsoft.MachineLearningServices/workspaces/batchEndpoints/*.

    • Создайте развертывания ARM в группе ресурсов рабочей области: используйте роль владельца, участника или настраиваемую роль, которая позволяет Microsoft.Resources/deployments/write в группе ресурсов, в которой развернута рабочая область.

  • Для работы с Машинное обучение Azure необходимо установить следующее программное обеспечение:

    Azure CLI и mlрасширение для Машинное обучение Azure.

    az extension add -n ml
    

    Примечание.

    Развертывания компонентов конвейера для конечных точек пакетной службы появились в версии 2.7 ml расширения для Azure CLI. Используется az extension update --name ml для получения последней версии.

Подключение к рабочей области

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

Передайте значения для идентификатора подписки, рабочей области, расположения и группы ресурсов в следующем коде:

az account set --subscription <subscription>
az configure --defaults workspace=<workspace> group=<resource-group> location=<location>

Создание компонента конвейера

Конечные точки пакетной службы могут развертывать модели или компоненты конвейера. Компоненты конвейера можно использовать повторно, и вы можете оптимизировать практику MLOps с помощью общих реестров для перемещения этих компонентов из одной рабочей области в другую.

Компонент конвейера в этом примере содержит один шаг, который печатает только сообщение hello world в журналах. Для этого не требуются входные или выходные данные.

Файл hello-component/hello.yml содержит конфигурацию компонента конвейера:

hello-component/hello.yml

$schema: https://azuremlschemas.azureedge.net/latest/pipelineComponent.schema.json
name: hello_batch
display_name: Hello Batch component
version: 1
type: pipeline
jobs:
  main_job:
    type: command
    component:
      code: src
      environment: azureml://registries/azureml/environments/sklearn-1.0/labels/latest
      command: >-
        python hello.py

Зарегистрируйте компонент:

az ml component create -f hello-component/hello.yml

Создание пакетной конечной точки

  1. Укажите имя конечной точки. Имя пакетной конечной точки должно быть уникальным в каждом регионе, так как имя используется для создания URI вызова. Чтобы обеспечить уникальность, добавьте все конечные символы в имя, указанное в следующем коде.

    ENDPOINT_NAME="hello-batch"
    
  2. Настройка конечной точки:

    Файл endpoint.yml содержит конфигурацию конечной точки.

    endpoint.yml

    $schema: https://azuremlschemas.azureedge.net/latest/batchEndpoint.schema.json
    name: hello-batch
    description: A hello world endpoint for component deployments.
    auth_mode: aad_token
    
  3. Создание конечной точки:

    az ml batch-endpoint create --name $ENDPOINT_NAME  -f endpoint.yml
    
  4. Запросите универсальный код ресурса (URI) конечной точки:

    az ml batch-endpoint show --name $ENDPOINT_NAME
    

Развертывание компонента конвейера

Чтобы развернуть компонент конвейера, необходимо создать пакетное развертывание. Развертывание — это набор ресурсов, необходимых для размещения ресурса, который выполняет фактическую работу.

  1. Создайте вычислительный кластер. Конечные точки и развертывания пакетной службы выполняются в вычислительных кластерах. Они могут работать в любом Машинное обучение Azure вычислительном кластере, который уже существует в рабочей области. Таким образом, несколько пакетных развертываний могут совместно использовать одну и ту же инфраструктуру вычислений. В этом примере мы будем работать над Машинное обучение Azure вычислительным кластеромbatch-cluster. Давайте убедимся, что вычислительные ресурсы существуют в рабочей области или создаются в противном случае.

    az ml compute create -n batch-cluster --type amlcompute --min-instances 0 --max-instances 5
    
  2. Настройка развертывания:

    Файл deployment.yml содержит конфигурацию развертывания. Можно проверка схему YAML полной конечной точки пакетной службы для дополнительных свойств.

    deployment.yml

    $schema: https://azuremlschemas.azureedge.net/latest/pipelineComponentBatchDeployment.schema.json
    name: hello-batch-dpl
    endpoint_name: hello-pipeline-batch
    type: pipeline
    component: azureml:hello_batch@latest
    settings:
        default_compute: batch-cluster
    
  3. Создание развертывания:

    Выполните следующий код, чтобы создать пакетное развертывание в конечной точке пакетной службы и задать его как развертывание по умолчанию.

    az ml batch-deployment create --endpoint $ENDPOINT_NAME -f deployment.yml --set-default
    

    Совет

    Обратите внимание на использование флага --set-default , чтобы указать, что это новое развертывание теперь используется по умолчанию.

  4. Развертывание готово для использования.

Тестирование развертывания

После создания развертывания он готов к получению заданий. Вы можете вызвать развертывание по умолчанию следующим образом:

JOB_NAME=$(az ml batch-endpoint invoke -n $ENDPOINT_NAME --query name -o tsv)

Совет

В этом примере конвейер не имеет входных или выходных данных. Однако если компонент конвейера требует некоторых элементов, их можно указать во время вызова. Сведения о том, как указывать входные и выходные данные, см. в статье "Создание заданий и входных данных для конечных точек пакетной службы" или руководство по развертыванию конвейера для выполнения пакетной оценки с предварительной обработкой (предварительная версия).

Вы можете отслеживать ход выполнения отображения и потоковой передачи журналов с помощью:

az ml job stream -n $JOB_NAME

Очистка ресурсов

После завершения удалите связанные ресурсы из рабочей области:

Выполните следующий код, чтобы удалить конечную точку пакетной службы и его базовое развертывание. --yes используется для подтверждения удаления.

az ml batch-endpoint delete -n $ENDPOINT_NAME --yes

(Необязательно) Удалите вычислительные ресурсы, если вы не планируете повторно использовать вычислительный кластер с последующими развертываниями.

az ml compute delete -n batch-cluster

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