Развертывание моделей для оценки в пакетных конечных точках
ОБЛАСТЬ ПРИМЕНЕНИЯ:Расширение машинного обучения Azure CLI версии 2 (current)Python SDK azure-ai-ml версии 2 (current)
Конечные точки пакетной службы предоставляют удобный способ развертывания моделей, выполняющих вывод по большим объемам данных. Эти конечные точки упрощают процесс размещения моделей для пакетной оценки, чтобы сосредоточиться на машинном обучении, а не на инфраструктуре.
Используйте пакетные конечные точки для развертывания модели, когда:
- У вас есть дорогие модели, требующие длительного времени для вывода.
- Необходимо выполнить вывод больших объемов данных, распределенных в нескольких файлах.
- У вас нет требований к низкой задержке.
- Вы можете воспользоваться преимуществами параллелизации.
В этой статье вы используете пакетную конечную точку для развертывания модели машинного обучения, которая решает классическую проблему распознавания цифр MNIST (Измененный Национальный институт стандартов и технологий). После этого развернутая модель выполняет пакетное выводение над большими объемами данных— в этом случае файлы изображений. Начните с создания пакетного развертывания модели, созданной с помощью Torch. Это развертывание становится по умолчанию в конечной точке. Позже вы создадите второе развертывание режима, созданного с помощью TensorFlow (Keras), протестируйте второе развертывание и установите его в качестве развертывания по умолчанию конечной точки.
Чтобы выполнить команды в этой статье локально, ознакомьтесь с примерами кода и файлами, необходимыми для выполнения команд в этой статье, см . раздел "Клонировать примеры репозитория ". Примеры кода и файлы содержатся в репозитории azureml-examples .
Необходимые компоненты
Прежде чем выполнить действия, описанные в этой статье, убедитесь, что у вас есть следующие предварительные требования:
Подписка Azure. Если у вас еще нет подписки Azure, создайте бесплатную учетную запись, прежде чем начинать работу. Попробуйте бесплатную или платную версию Машинного обучения Azure.
Рабочая область Машинного обучения Azure. Если у вас нет одного, выполните действия, описанные в статье "Управление рабочими областями ", чтобы создать ее.
Чтобы выполнить следующие задачи, убедитесь, что в рабочей области есть следующие разрешения:
Для создания и управления конечными точками и развертываниями пакетной службы: используйте роль владельца, роль участника или пользовательскую роль, разрешающую
Microsoft.MachineLearningServices/workspaces/batchEndpoints/*
.Чтобы создать развертывания ARM в группе ресурсов рабочей области: используйте роль владельца, роль участника или пользовательскую роль, разрешающую
Microsoft.Resources/deployments/write
в группе ресурсов, в которой развернута рабочая область.
Для работы с Машинное обучение Azure необходимо установить следующее программное обеспечение:
ОБЛАСТЬ ПРИМЕНЕНИЯ: расширение машинного обучения Azure CLI версии 2 (текущее)
Azure CLI и
ml
расширение для Машинное обучение Azure.az extension add -n ml
Клонирование репозитория примеров
Пример в этой статье основан на примерах кода, содержащихся в репозитории azureml-examples . Чтобы выполнить команды локально без необходимости копирования и вставки YAML и других файлов, сначала клонируйте репозиторий, а затем измените каталоги в папку:
git clone https://github.com/Azure/azureml-examples --depth 1
cd azureml-examples/cli/endpoints/batch/deploy-models/mnist-classifier
Подготовка системы
Подключение к рабочей области
Сначала подключитесь к рабочей области Машинное обучение Azure, в которой вы будете работать.
Если вы еще не задали параметры по умолчанию для Azure CLI, сохраните их. Чтобы избежать передачи значений для подписки, рабочей области, группы ресурсов и расположения несколько раз, выполните следующий код:
az account set --subscription <subscription>
az configure --defaults workspace=<workspace> group=<resource-group> location=<location>
Создание вычислений
Конечные точки пакетной службы выполняются в вычислительных кластерах и поддерживают как Машинное обучение Azure вычислительные кластеры (AmlCompute), так и кластеры Kubernetes. Кластеры являются общим ресурсом, поэтому один кластер может размещать один или несколько пакетных развертываний (а также другие рабочие нагрузки, если это необходимо).
Создайте вычисление с именем batch-cluster
, как показано в следующем коде. Вы можете настроить по мере необходимости и ссылаться на вычислительные ресурсы.azureml:<your-compute-name>
az ml compute create -n batch-cluster --type amlcompute --min-instances 0 --max-instances 5
Примечание.
Вы не взимаете плату за вычислительные ресурсы на этом этапе, так как кластер остается на 0 узлах до вызова конечной точки пакетной службы и отправки задания пакетной оценки. Дополнительные сведения о затратах на вычислительные ресурсы см. в разделе "Управление и оптимизация затрат для AmlCompute".
Создание пакетной конечной точки
Конечная точка пакетной службы — это конечная точка HTTPS, которую клиенты могут вызывать для запуска задания оценки пакетной службы. Пакетное задание оценки — это задание , которое оценивает несколько входных данных. Пакетное развертывание — это набор вычислительных ресурсов, в котором размещается модель, которая выполняет фактическую оценку пакетной службы (или вывод пакетной службы). У одной пакетной конечной точки может быть несколько развертываний пакетной службы. Дополнительные сведения о конечных точках пакетной службы см. в статье "Что такое конечные точки пакетной службы?".
Совет
Одно из пакетных развертываний служит развертыванием по умолчанию для конечной точки. При вызове конечной точки развертывание по умолчанию выполняет фактическую оценку пакетной службы. Дополнительные сведения о конечных точках и развертываниях пакетной службы см. в разделе "Конечные точки пакетной службы" и "Пакетное развертывание".
Назовите конечную точку. Имя конечной точки должно быть уникальным в пределах региона Azure, так как имя входит в универсальный код ресурса (URI) конечной точки. Например, в ней может быть только одна конечная точка пакетной службы с именем
mybatchendpoint
westus2
.Настройка конечной точки пакетной службы
Следующий ФАЙЛ YAML определяет конечную точку пакетной службы. Этот файл можно использовать с командой CLI для создания пакетной конечной точки.
endpoint.yml
$schema: https://azuremlschemas.azureedge.net/latest/batchEndpoint.schema.json name: mnist-batch description: A batch endpoint for scoring images from the MNIST dataset. tags: type: deep-learning
В следующей таблице описываются ключевые свойства конечной точки. Полная схема YAML для пакетной конечной точки приведена в разделе Схема YAML для пакетной конечной точки CLI (версия 2).
Ключ. Description name
Имя учетной записи пакетной конечной точки. Должно быть уникальным на уровне региона Azure. description
Описание конечной точки пакетной службы. Это необязательное свойство. tags
Теги для включения в конечную точку. Это необязательное свойство. Создание конечной точки:
Создание развертывания пакетной службы
Развертывание модели — это набор ресурсов, необходимых для размещения модели, которая выполняет фактическое вывод. Чтобы создать развертывание пакетной модели, вам потребуется следующее:
- Зарегистрированная модель в рабочей области
- Код для оценки модели
- Среда с установленными зависимостями модели
- Предварительно созданные параметры вычислений и ресурсов
Начните с регистрации модели для развертывания — модель Факела для проблемы с распознаванием популярных цифр (MNIST). Пакетные развертывания могут развертывать только модели, зарегистрированные в рабочей области. Этот шаг можно пропустить, если модель, которую вы хотите развернуть, уже зарегистрирована.
Совет
Модели связаны с развертыванием, а не с конечной точкой. Это означает, что одна конечная точка может обслуживать разные модели (или версии модели) в одной конечной точке, при условии, что различные модели (или версии модели) развертываются в разных развертываниях.
Теперь пришло время создать скрипт оценки. Для пакетных развертываний требуется скрипт оценки, указывающий, как должна выполняться данная модель и как должны обрабатываться входные данные. Конечные точки пакетной службы поддерживают скрипты, созданные в Python. В этом случае вы развертываете модель, которая считывает файлы изображений, представляющие цифры и выводит соответствующую цифру. Скрипт оценки выглядит следующим образом:
Примечание.
Для моделей MLflow Машинное обучение Azure автоматически создает скрипт оценки, поэтому его не требуется. Если модель является моделью MLflow, можно пропустить этот шаг. Дополнительные сведения о работе конечных точек пакетной службы с моделями MLflow см. в статье об использовании моделей MLflow в пакетных развертываниях.
Предупреждение
Если вы развертываете модель автоматического машинного обучения (AutoML) в конечной точке пакетной службы, обратите внимание, что скрипт оценки, который AutoML предоставляет только для сетевых конечных точек и не предназначен для пакетного выполнения. Сведения о создании скрипта оценки для пакетного развертывания см. в статье "Создание скриптов оценки для пакетных развертываний".
deployment-torch/code/batch_driver.py
import os import pandas as pd import torch import torchvision import glob from os.path import basename from mnist_classifier import MnistClassifier from typing import List def init(): global model global device # AZUREML_MODEL_DIR is an environment variable created during deployment # It is the path to the model folder model_path = os.environ["AZUREML_MODEL_DIR"] model_file = glob.glob(f"{model_path}/*/*.pt")[-1] model = MnistClassifier() model.load_state_dict(torch.load(model_file)) model.eval() device = torch.device("cuda:0" if torch.cuda.is_available() else "cpu") def run(mini_batch: List[str]) -> pd.DataFrame: print(f"Executing run method over batch of {len(mini_batch)} files.") results = [] with torch.no_grad(): for image_path in mini_batch: image_data = torchvision.io.read_image(image_path).float() batch_data = image_data.expand(1, -1, -1, -1) input = batch_data.to(device) # perform inference predict_logits = model(input) # Compute probabilities, classes and labels predictions = torch.nn.Softmax(dim=-1)(predict_logits) predicted_prob, predicted_class = torch.max(predictions, axis=-1) results.append( { "file": basename(image_path), "class": predicted_class.numpy()[0], "probability": predicted_prob.numpy()[0], } ) return pd.DataFrame(results)
Создайте среду, в которой будет выполняться пакетное развертывание. Среда должна включать пакеты
azureml-core
иazureml-dataset-runtime[fuse]
, которые требуются конечными точками пакетной службы, а также любые зависимости, необходимые для выполнения кода. В этом случае зависимости были записаны вconda.yaml
файле:deployment-torch/environment/conda.yaml
name: mnist-env channels: - conda-forge dependencies: - python=3.8.5 - pip<22.0 - pip: - torch==1.13.0 - torchvision==0.14.0 - pytorch-lightning - pandas - azureml-core - azureml-dataset-runtime[fuse]
Внимание
Пакеты
azureml-core
иazureml-dataset-runtime[fuse]
необходимы для пакетных развертываний и должны быть включены в зависимости среды.Укажите среду следующим образом:
Определение среды будет включено в определение развертывания как анонимная среда. В развертывании вы увидите следующие строки:
environment: name: batch-torch-py38 image: mcr.microsoft.com/azureml/openmpi4.1.0-ubuntu20.04:latest conda_file: environment/conda.yaml
Предупреждение
Курируемые среды не поддерживаются в пакетных развертываниях. Необходимо указать собственную среду. Для упрощения процесса всегда можно использовать базовый образ курированной среды.
Создание определения развертывания
deployment-torch/deployment.yml
$schema: https://azuremlschemas.azureedge.net/latest/modelBatchDeployment.schema.json name: mnist-torch-dpl description: A deployment using Torch to solve the MNIST classification dataset. endpoint_name: mnist-batch type: model model: name: mnist-classifier-torch path: model code_configuration: code: code scoring_script: batch_driver.py environment: name: batch-torch-py38 image: mcr.microsoft.com/azureml/openmpi4.1.0-ubuntu20.04:latest conda_file: environment/conda.yaml compute: azureml:batch-cluster resources: instance_count: 1 settings: max_concurrency_per_instance: 2 mini_batch_size: 10 output_action: append_row output_file_name: predictions.csv retry_settings: max_retries: 3 timeout: 30 error_threshold: -1 logging_level: info
В следующей таблице описываются ключевые свойства пакетного развертывания. Полная схема YAML для развертывания пакетной службы приведена в разделе Схема YAML для развертывания пакетной службы CLI (версия 2).
Ключ. Description name
Имя развертывания. endpoint_name
Имя конечной точки для создания развертывания. model
Модель, используемая для пакетной оценки. В примере определяется встроенная модель с использованием path
. Это определение позволяет автоматически отправлять и регистрировать файлы модели с автоматически созданным именем и версией. Дополнительные параметры см. в схеме модели. В сценариях для рабочей среды рекомендуется создавать модель отдельно и ссылаться на нее здесь. Чтобы сослаться на существующую модель, используйте синтаксисazureml:<model-name>:<model-version>
.code_configuration.code
Локальный каталог, содержащий весь исходный код Python для оценки модели. code_configuration.scoring_script
Файл Python в каталоге code_configuration.code
. В этом файле должны быть функцииinit()
иrun()
. Используйте функциюinit()
для любой дорогостоящей или обычной подготовки (например, для загрузки модели в памяти).init()
будет вызываться только один раз в начале процесса. Методrun(mini_batch)
позволяет оценить каждую запись; значениеmini_batch
представляет собой список путей к файлам. Функцияrun()
должна возвращать объект DataFrame Pandas или массив. Каждый возвращаемый элемент обозначает один успешный запуск входного элемента вmini_batch
. Дополнительные сведения о создании скрипта оценки см. в разделе "Общие сведения о скрипте оценки".environment
Среда для оценки модели. В примере определяется встроенная среда с использованием conda_file
иimage
. Зависимостиconda_file
будут установлены поверхimage
. Среда будет автоматически зарегистрирована с автоматически сформированными именем и версией. Дополнительные параметры см. в схеме среды. В сценариях для рабочей среды рекомендуется создавать среду отдельно и ссылаться на нее здесь. Чтобы сослаться на существующую среду, используйте синтаксисazureml:<environment-name>:<environment-version>
.compute
Вычисление для выполнения оценки пакетной службы. В примере используется batch-cluster
созданный в начале и ссылается на него с помощью синтаксисаazureml:<compute-name>
.resources.instance_count
Количество экземпляров, используемых для каждого задания оценки пакетной службы. settings.max_concurrency_per_instance
Максимальное количество параллельных запусков scoring_script
на экземпляр.settings.mini_batch_size
Число файлов, которые scoring_script
может обрабатывать в одном вызовеrun()
.settings.output_action
Порядок организации выходных данных в выходном файле. append_row
объединит всеrun()
возвращенные выходные результаты в один файл с именемoutput_file_name
.summary_only
не будет объединять выходные результаты и будет вычислятьerror_threshold
только.settings.output_file_name
Имя выходного файла пакетной оценки для append_row
output_action
.settings.retry_settings.max_retries
Максимальное количество попыток для неудачного. scoring_script
run()
settings.retry_settings.timeout
Время ожидания в секундах для scoring_script
run()
оценки мини-пакета.settings.error_threshold
Количество сбоев оценки входных файлов, которые следует игнорировать. Если общее количество ошибок для всего объема входных данных превысит это значение, задание по оценке пакетной службы будет прервано. В примере используется -1
, что означает, что любое количество ошибок разрешено без завершения задания пакетной оценки.settings.logging_level
Детализация журнала. Значения уровня детализации в порядке увеличения: WARNING, INFO и DEBUG. settings.environment_variables
Словарь пар "имя-значение" переменной среды, устанавливаемых для каждого задания пакетной оценки. Создание развертывания:
Выполните следующий код, чтобы создать пакетное развертывание в конечной точке пакетной службы и задать его как развертывание по умолчанию.
az ml batch-deployment create --file deployment-torch/deployment.yml --endpoint-name $ENDPOINT_NAME --set-default
Совет
Параметр
--set-default
задает вновь созданное развертывание в качестве развертывания конечной точки по умолчанию. Это удобный способ создания нового развертывания конечной точки по умолчанию, особенно для первого создания развертывания. Для рабочих сценариев рекомендуется создать новое развертывание, не задав его в качестве значения по умолчанию. Убедитесь, что развертывание работает должным образом, а затем обновите развертывание по умолчанию позже. Дополнительные сведения о реализации этого процесса см. в разделе "Развертывание новой модели ".Проверьте сведения о конечной точке пакетной службы и развертывании.
Запуск конечных точек пакетной службы и результатов доступа
При вызове пакетной конечной точки запускается задание пакетной оценки. Задание name
возвращается из ответа вызова и может использоваться для отслеживания хода выполнения пакетной оценки. При выполнении моделей оценки в пакетных конечных точках необходимо указать путь к входным данным, чтобы конечные точки могли найти данные, которые нужно оценить. В следующем примере показано, как запустить новое задание по образцу данных набора данных MNIST, хранящегося в учетной записи служба хранилища Azure.
Вы можете запускать и вызывать пакетную конечную точку с помощью Azure CLI, Машинное обучение Azure sdk или конечных точек REST. Дополнительные сведения об этих параметрах см. в разделе "Создание заданий" и входных данных для конечных точек пакетной службы.
Примечание.
Как работает параллелизация?
Пакетные развертывания распределяют работу на уровне файлов, что означает, что папка, содержащая 100 файлов с мини-пакетами из 10 файлов, создаст 10 пакетов из 10 файлов. Обратите внимание, что это происходит независимо от размера участвующих файлов. Если файлы слишком большие для обработки в больших мини-пакетах, мы рекомендуем разделить файлы на небольшие файлы, чтобы обеспечить более высокий уровень параллелизма или уменьшить количество файлов на мини-пакет. В настоящее время пакетные развертывания не могут учитывать изменения в распределении размера файла.
JOB_NAME=$(az ml batch-endpoint invoke --name $ENDPOINT_NAME --input https://azuremlexampledata.blob.core.windows.net/data/mnist/sample --input-type uri_folder --query name -o tsv)
Конечные точки пакетной службы поддерживают чтение файлов или папок, расположенных в разных расположениях. Дополнительные сведения о поддерживаемых типах и их указании см. в статье "Доступ к данным из заданий пакетных конечных точек".
Мониторинг хода выполнения пакетного задания
Задание пакетной оценки обычно занимает некоторое время, необходимое для обработки всего набора входных данных.
Следующий код проверяет состояние задания и выводит ссылку на Студия машинного обучения Azure для получения дополнительных сведений.
az ml job show -n $JOB_NAME --web
Проверка результатов пакетной оценки
Выходные данные задания хранятся в облачном хранилище либо в хранилище BLOB-объектов рабочей области по умолчанию, либо в указанном хранилище. Сведения об изменении значений по умолчанию см. в разделе "Настройка расположения выходных данных". Следующие шаги позволяют просматривать результаты оценки в обозревателе служба хранилища Azure при завершении задания:
Выполните следующий код, чтобы открыть задание оценки пакетной службы в Студия машинного обучения Azure. Ссылка на студию содержится в ответе
invoke
в виде значенияinteractionEndpoints.Studio.endpoint
.az ml job show -n $JOB_NAME --web
На графике задания выберите шаг
batchscoring
.Перейдите на вкладку Выходные данные + журналы и выберите Показать выходные данные.
Из выходных данных выберите значок, чтобы открыть Обозреватель службы хранилища.
Результаты оценки в обозревателе службы хранилища похожи на следующий образец страницы:
Настройка расположения вывода
По умолчанию результаты пакетной оценки хранятся в хранилище BLOB-объектов рабочей области по умолчанию в папке с именем задания (идентификатор GUID, созданный системой). Вы можете настроить место хранения выходных данных оценки пакетной службы при вызове пакетной конечной точки.
Используйте output-path
для настройки любой папки в зарегистрированном хранилище данных Машинного обучения Azure. Синтаксис для --output-path
такой же, как --input
при указании папки, т. е. azureml://datastores/<datastore-name>/paths/<path-on-datastore>/
. С помощью --set output_file_name=<your-file-name>
укажите новое имя выходного файла.
OUTPUT_FILE_NAME=predictions_`echo $RANDOM`.csv
OUTPUT_PATH="azureml://datastores/workspaceblobstore/paths/$ENDPOINT_NAME"
JOB_NAME=$(az ml batch-endpoint invoke --name $ENDPOINT_NAME --input https://azuremlexampledata.blob.core.windows.net/data/mnist/sample --output-path $OUTPUT_PATH --set output_file_name=$OUTPUT_FILE_NAME --query name -o tsv)
Предупреждение
Используйте новое (уникальное) расположение выходных данных. Если такой выходной файл существует, задание пакетной оценки завершится ошибкой.
Внимание
В отличие от входных данных, выходные данные могут храниться только в Машинное обучение Azure хранилищах данных, которые выполняются в учетных записях хранения BLOB-объектов.
Перезапись конфигурации развертывания для каждого задания
При вызове пакетной конечной точки некоторые параметры можно перезаписать, чтобы лучше использовать вычислительные ресурсы и повысить производительность. Следующие параметры можно настроить на основе каждого задания:
- Количество экземпляров: используйте этот параметр для перезаписи количества экземпляров для запроса из вычислительного кластера. Например, для больших объемов входных данных может потребоваться больше экземпляров для ускорения обработки до завершения оценки пакетной службы.
- Мини-пакетный размер: используйте этот параметр для перезаписи количества файлов для включения в каждый мини-пакет. Количество мини-пакетов определяется общим количеством входных файлов и мини-пакетным размером. Меньший мини-пакетный размер создает больше мини-пакетов. Мини-пакеты можно запускать параллельно, но при этом могут возникнуть дополнительные затраты на планирование и вызов.
- Другие параметры, такие как максимальные повторные попытки, время ожидания и порог ошибки, могут быть перезаписаны. Эти параметры могут повлиять на комплексное время оценки пакетной службы для разных рабочих нагрузок.
JOB_NAME=$(az ml batch-endpoint invoke --name $ENDPOINT_NAME --input https://azuremlexampledata.blob.core.windows.net/data/mnist/sample --mini-batch-size 20 --instance-count 5 --query name -o tsv)
Добавление развертываний в конечную точку
После создания пакетной конечной точки с развертыванием можно продолжить уточнение модели и добавить новые развертывания. Конечные точки пакетной службы будут продолжать обслуживать развертывание по умолчанию при разработке и развертывании новых моделей в той же конечной точке. Развертывания не влияют друг на друга.
В этом примере вы добавите второе развертывание, которое использует модель, созданную с помощью Keras и TensorFlow , для решения той же проблемы MNIST.
Добавление второго развертывания
Создайте среду, в которой будет выполняться пакетное развертывание. Включите в среду любую зависимость, требуемую для выполнения кода. Кроме того, необходимо добавить библиотеку
azureml-core
, так как она необходима для работы пакетных развертываний. В следующем определении среды есть необходимые библиотеки для запуска модели с TensorFlow.Определение среды включается в определение развертывания как анонимная среда.
environment: name: batch-tensorflow-py38 image: mcr.microsoft.com/azureml/openmpi4.1.0-ubuntu20.04:latest conda_file: environment/conda.yaml
Используемый файл conda выглядит следующим образом:
deployment-keras/environment/conda.yaml
name: tensorflow-env channels: - conda-forge dependencies: - python=3.8.5 - pip - pip: - pandas - tensorflow - pillow - azureml-core - azureml-dataset-runtime[fuse]
Создайте скрипт оценки для модели:
deployment-keras/code/batch_driver.py
import os import numpy as np import pandas as pd import tensorflow as tf from typing import List from os.path import basename from PIL import Image from tensorflow.keras.models import load_model def init(): global model # AZUREML_MODEL_DIR is an environment variable created during deployment model_path = os.path.join(os.environ["AZUREML_MODEL_DIR"], "model") # load the model model = load_model(model_path) def run(mini_batch: List[str]) -> pd.DataFrame: print(f"Executing run method over batch of {len(mini_batch)} files.") results = [] for image_path in mini_batch: data = Image.open(image_path) data = np.array(data) data_batch = tf.expand_dims(data, axis=0) # perform inference pred = model.predict(data_batch) # Compute probabilities, classes and labels pred_prob = tf.math.reduce_max(tf.math.softmax(pred, axis=-1)).numpy() pred_class = tf.math.argmax(pred, axis=-1).numpy() results.append( { "file": basename(image_path), "class": pred_class[0], "probability": pred_prob, } ) return pd.DataFrame(results)
Создание определения развертывания
deployment-keras/deployment.yml
$schema: https://azuremlschemas.azureedge.net/latest/modelBatchDeployment.schema.json name: mnist-keras-dpl description: A deployment using Keras with TensorFlow to solve the MNIST classification dataset. endpoint_name: mnist-batch type: model model: name: mnist-classifier-keras path: model code_configuration: code: code scoring_script: batch_driver.py environment: name: batch-tensorflow-py38 image: mcr.microsoft.com/azureml/openmpi4.1.0-ubuntu20.04:latest conda_file: environment/conda.yaml compute: azureml:batch-cluster resources: instance_count: 1 settings: max_concurrency_per_instance: 2 mini_batch_size: 10 output_action: append_row output_file_name: predictions.csv
Создание развертывания:
Выполните следующий код, чтобы создать пакетное развертывание в конечной точке пакетной службы и задать его как развертывание по умолчанию.
az ml batch-deployment create --file deployment-keras/deployment.yml --endpoint-name $ENDPOINT_NAME
Совет
В
--set-default
этом случае параметр отсутствует. Для рабочих сценариев рекомендуется создать новое развертывание, не задав его в качестве значения по умолчанию. Затем проверьте его и обновите развертывание по умолчанию позже.
Тестирование развертывания пакета, не используемое по умолчанию
Чтобы протестировать новое развертывание, отличное от по умолчанию, необходимо знать имя развертывания, которое требуется запустить.
DEPLOYMENT_NAME="mnist-keras-dpl"
JOB_NAME=$(az ml batch-endpoint invoke --name $ENDPOINT_NAME --deployment-name $DEPLOYMENT_NAME --input https://azuremlexampledata.blob.core.windows.net/data/mnist/sample --input-type uri_folder --query name -o tsv)
Уведомление --deployment-name
используется для указания развертывания для выполнения. Этот параметр позволяет выполнять invoke
развертывание, отличное от по умолчанию, без обновления развертывания пакетной конечной точки по умолчанию.
Обновление развертывания пакетной службы по умолчанию
Хотя вы можете вызвать определенное развертывание внутри конечной точки, обычно требуется вызвать саму конечную точку и разрешить конечной точке решить, какое развертывание следует использовать — развертывание по умолчанию. Вы можете изменить развертывание по умолчанию (и, следовательно, изменить модель, обслуживающую развертывание), не изменив контракт с пользователем, вызывающим конечную точку. Используйте следующий код для обновления развертывания по умолчанию:
az ml batch-endpoint update --name $ENDPOINT_NAME --set defaults.deployment_name=$DEPLOYMENT_NAME
Удаление пакетной конечной точки и развертывания
Если вы не будете использовать старое пакетное развертывание, удалите его, выполнив следующий код. --yes
используется для подтверждения удаления.
az ml batch-deployment delete --name mnist-torch-dpl --endpoint-name $ENDPOINT_NAME --yes
Выполните следующий код, чтобы удалить конечную точку пакетной службы и все его базовые развертывания. Задания оценки пакетной службы не будут удалены.
az ml batch-endpoint delete --name $ENDPOINT_NAME --yes
Связанный контент
- Доступ к данным из заданий пакетных конечных точек.
- Проверка подлинности в конечных точках пакетной службы.
- Сетевая изоляция в конечных точках пакетной службы.
- Устранение неполадок с конечными точками пакетной службы.