Развертывание существующих заданий конвейера в пакетных конечных точках

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

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

Содержание:

  • Выполнение и создание задания конвейера, которое требуется развернуть
  • Создание пакетного развертывания из существующего задания
  • Тестирование развертывания

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

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

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

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

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

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

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

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

  • Подписка 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>

Запуск задания конвейера, которое требуется развернуть

В этом разделе мы начнем с выполнения задания конвейера:

pipeline-job.yml Следующий файл содержит конфигурацию для задания конвейера:

pipeline-job.yml

$schema: https://azuremlschemas.azureedge.net/latest/pipelineJob.schema.json
type: pipeline

experiment_name: hello-pipeline-batch
display_name: hello-pipeline-batch-job
description: This job demonstrates how to run the a pipeline component in a pipeline job. You can use this example to test a component in an standalone job before deploying it in an endpoint.

compute: batch-cluster
component: hello-component/hello.yml

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

JOB_NAME=$(az ml job create -f pipeline-job.yml --query name -o tsv)

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

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

  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 имя задания, которое мы хотим развернуть. В нашем случае это задание указывается в следующей переменной:

    echo $JOB_NAME
    
  2. Настройте развертывание.

    Файл deployment-from-job.yml содержит конфигурацию развертывания. Обратите внимание, что ключ job_definition используется вместо component того, чтобы указать, что это развертывание создается из задания конвейера:

    deployment-from-job.yml

    $schema: https://azuremlschemas.azureedge.net/latest/pipelineComponentBatchDeployment.schema.json
    name: hello-batch-from-job
    endpoint_name: hello-pipeline-batch
    type: pipeline
    job_definition: azureml:job_name_placeholder
    settings:
        continue_on_step_failure: false
        default_compute: batch-cluster
    

    Совет

    В этой конфигурации предполагается, что у вас есть вычислительный кластер с именем batch-cluster. Это значение можно заменить именем кластера.

  3. Создание развертывания:

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

    az ml batch-deployment create --endpoint $ENDPOINT_NAME --set job_definition=azureml:$JOB_NAME -f deployment-from-job.yml
    

    Совет

    Обратите внимание на использование --set job_definition=azureml:$JOB_NAME. Так как имена заданий уникальны, команда --set используется здесь, чтобы изменить имя задания при его запуске в рабочей области.

  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

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