ОБЛАСТЬ ПРИМЕНЕНИЯ:
Расширение машинного обучения Azure CLI v2 (текущая версия)
Python SDK azure-ai-ml v2 (текущая версия)
В этой статье вы узнаете, как развернуть модель в онлайн-конечной точке для использования в режиме реального времени вывода. Начните с развертывания модели на локальном компьютере для отладки любых ошибок. Затем вы развертываете и тестируете модель в Azure, просматриваете журналы развертывания и отслеживаете соглашение об уровне обслуживания (SLA). К концу этой статьи у вас будет масштабируемая конечная точка HTTPS/REST, которую можно использовать для вывода в режиме реального времени.
Сетевые конечные точки — это конечные точки, используемые для вывода в режиме реального времени. Существует два типа сетевых конечных точек: управляемые и Kubernetes. Дополнительные сведения о конечных точках и различиях между управляемыми сетевыми конечными точками и сетевыми конечными точками Kubernetes см.: Что такое конечные точки Azure Machine Learning?
Управляемые подключенные конечные точки помогают развертывать модели машинного обучения в комплексном режиме. Управляемые сетевые конечные точки работают с мощными машинами ЦП и GPU в Azure масштабируемым и полностью управляемым образом. Управляемые сетевые конечные точки отвечают за обслуживание, масштабирование, безопасность и мониторинг моделей, избавляя вас от накладных расходов на настройку и управление базовой инфраструктурой.
В основном примере в этом документе для развертывания используются управляемые сетевые конечные точки. Чтобы использовать Kubernetes, ознакомьтесь с заметками в этом документе, которые соответствуют обсуждению управляемой сетевой конечной точки.
Предварительные условия
ПРИМЕНЯЕТСЯ К:
расширение Azure CLI для машинного обучения версии 2 (текущая)
Перед выполнением действий, описанных в этой статье, убедитесь, что выполнены следующие необходимые условия:
Управление доступом на основе ролей Azure (Azure RBAC) используется для предоставления доступа к операциям в Машинном обучении Azure. Чтобы выполнить действия, описанные в этой статье, учетной записи пользователя должна быть назначена роль владельца или участника для рабочей области Машинного обучения Azure либо пользовательская роль с разрешением Microsoft.MachineLearningServices/workspaces/onlineEndpoints/*
. Если вы используете студию для создания и управления сетевыми конечными точками и развертываниями, вам потребуется дополнительное разрешение "Microsoft.Resources/deployments/write" от владельца группы ресурсов. Дополнительные сведения см. в статье Управление доступом к рабочей области Машинного обучения Azure.
(Необязательно) Для локального развертывания необходимо установить подсистему Docker на локальном компьютере.
Настоятельно рекомендуем использовать этот вариант, чтобы упростить отладку.
ОБЛАСТЬ ПРИМЕНЕНИЯ:
Пакет SDK для Python azure-ai-ml версии 2 (current)
Перед выполнением действий, описанных в этой статье, убедитесь, что выполнены следующие необходимые условия:
Управление доступом на основе ролей Azure (Azure RBAC) используется для предоставления доступа к операциям в Машинном обучении Azure. Чтобы выполнить действия, описанные в этой статье, учетной записи пользователя должна быть назначена роль владельца или участника для рабочей области Машинного обучения Azure либо пользовательская роль с разрешением Microsoft.MachineLearningServices/workspaces/onlineEndpoints/*
. Дополнительные сведения см. в статье Управление доступом к рабочей области Машинного обучения Azure.
(Необязательно) Для локального развертывания необходимо установить подсистему Docker на локальном компьютере.
Настоятельно рекомендуем использовать этот вариант, чтобы упростить отладку.
Перед выполнением действий, описанных в этой статье, убедитесь, что выполнены следующие необходимые условия:
Подписка Azure. Если у вас еще нет подписки Azure, создайте бесплатную учетную запись, прежде чем начинать работу. Попробуйте бесплатную или платную версию Машинного обучения Azure.
Рабочая область «Azure Machine Learning» и вычислительный экземпляр. Если у вас нет этих ресурсов и вы хотите их создать, выполните действия, описанные в статье Краткое руководство: Создание ресурсов рабочей области.
Управление доступом на основе ролей Azure (Azure RBAC) используется для предоставления доступа к операциям в Машинном обучении Azure. Чтобы выполнить действия, описанные в этой статье, учетной записи пользователя должна быть назначена роль владельца или участника для рабочей области Машинного обучения Azure либо пользовательская роль с разрешением Microsoft.MachineLearningServices/workspaces/onlineEndpoints/*
. Дополнительные сведения см. в статье Управление доступом к рабочей области Машинного обучения Azure.
Примечание.
Хотя в этих шагах используются CLI Azure и расширение CLI для машинного обучения, они не являются основным предметом внимания. они используются больше в качестве служебных программ, передают шаблоны в Azure и проверяют состояние развертываний шаблонов.
Перед выполнением действий, описанных в этой статье, убедитесь, что выполнены следующие необходимые условия:
- Управление доступом на основе ролей Azure (Azure RBAC) используется для предоставления доступа к операциям в Машинном обучении Azure. Чтобы выполнить действия, описанные в этой статье, учетной записи пользователя должна быть назначена роль владельца или участника для рабочей области Машинного обучения Azure либо пользовательская роль с разрешением
Microsoft.MachineLearningServices/workspaces/onlineEndpoints/*
. Дополнительные сведения см. в статье Управление доступом к рабочей области Машинного обучения Azure.
Убедитесь, что для развертывания достаточно квоты виртуальных машин. Машинное обучение Azure резервирует 20% вычислительных ресурсов для выполнения обновлений для некоторых SKU ВМ. Например, если вы запрашиваете 10 экземпляров в развертывании, необходимо иметь квоту на 12 для каждого числа ядер для SKU виртуальной машины. Ошибка при учете дополнительных вычислительных ресурсов приводит к ошибке. Некоторые SKU виртуальных машин освобождены от дополнительного резервирования квот. Дополнительные сведения о выделении квот см. в статье о выделении квот виртуальной машины для развертывания.
Кроме того, можно воспользоваться квотой из общего пула квот Azure Machine Learning в течение ограниченного времени. Машинное обучение Azure предоставляет общий пул квот, из которого пользователи в различных регионах могут получить доступ к квоте для выполнения тестирования в течение ограниченного времени в зависимости от доступности.
При использовании студии для развертывания моделей Llama-2, Phi, Nemotron, Mistral, Dolly и Deci-DeciLM из каталога моделей в управляемую сетевую конечную точку, Azure Machine Learning позволяет вам временно получить доступ к общему пулу квот, чтобы вы могли провести тестирование. Для получения дополнительной информации о совместно используемом пуле квот см. в разделе Совместная квота в Azure Machine Learning.
Подготовьте вашу систему
Настройка переменных среды
Если вы еще не задали параметры по умолчанию для Azure CLI, сохраните их. Чтобы не указывать параметры для подписки, рабочей области и группы ресурсов несколько раз, используйте следующий код:
az account set --subscription <subscription ID>
az configure --defaults workspace=<Azure Machine Learning workspace name> group=<resource group>
Клонирование репозитория примеров
Чтобы следовать этой статье, сначала клонируйте репозиторий примеров (azureml-examples). Затем запустите следующий код, чтобы перейти в каталог репозитория cli/
:
git clone --depth 1 https://github.com/Azure/azureml-examples
cd azureml-examples
cd cli
Совет
Используйте --depth 1
, чтобы клонировать только последний коммит в репозиторий, что сокращает время выполнения операции.
Команды, приведенные в этом руководстве, находятся в файлах deploy-local-endpoint.sh
и deploy-managed-online-endpoint.sh
cli
каталоге, а файлы конфигурации YAML находятся в подкаталоге endpoints/online/managed/sample/
.
Примечание.
Файлы конфигурации YAML для конечных точек Kubernetes в сети находятся в подкаталоге endpoints/online/kubernetes/
.
Клонирование репозитория примеров
Чтобы запустить примеры обучения, сначала клонируйте репозиторий примеров (azureml-examples) и измените его в azureml-examples/sdk/python/endpoints/online/managed
каталог:
git clone --depth 1 https://github.com/Azure/azureml-examples
cd azureml-examples/sdk/python/endpoints/online/managed
Совет
При использовании параметра --depth 1
клонируется только последний коммит, что сокращает время выполнения операции.
Сведения в этой статье основаны на блокноте online-endpoints-simple-deployment.ipynb. Он содержит то же содержимое, что и эта статья, хотя порядок кодов немного отличается.
Подключение к рабочей области Машинного обучения Azure
Рабочая область — это ресурс верхнего уровня для Машинного обучения Azure, который обеспечивает централизованное расположение для работы со всеми артефактами, созданными в Машинном обучении Azure. В этом разделе описано, как подключиться к рабочей области, в которой будут выполняться задачи развертывания. Чтобы следить за ходом, откройте online-endpoints-simple-deployment.ipynb
блокнот.
Импортируйте необходимые библиотеки:
# import required libraries
from azure.ai.ml import MLClient
from azure.ai.ml.entities import (
ManagedOnlineEndpoint,
ManagedOnlineDeployment,
Model,
Environment,
CodeConfiguration
)
from azure.identity import DefaultAzureCredential
Примечание.
Если вы используете онлайн конечную точку Kubernetes, импортируйте классы KubernetesOnlineEndpoint
и KubernetesOnlineDeployment
из azure.ai.ml.entities
библиотеки.
Настройте сведения о рабочей области и получите ссылку на рабочую область.
Чтобы подключиться к рабочей области, вам нужны параметры идентификатора — подписка, группа ресурсов и имя рабочей области. Вы используете эти сведения в MLClient
из azure.ai.ml
для получения идентификатора необходимой рабочей области Azure Machine Learning. В этом примере используется проверка подлинности Azure по умолчанию.
# enter details of your Azure Machine Learning workspace
subscription_id = "<SUBSCRIPTION_ID>"
resource_group = "<RESOURCE_GROUP>"
workspace = "<AZUREML_WORKSPACE_NAME>"
# get a handle to the workspace
ml_client = MLClient(
DefaultAzureCredential(), subscription_id, resource_group, workspace
)
Если на локальном компьютере установлен Git, следуйте инструкциям, чтобы клонировать репозиторий примеров. В противном случае следуйте инструкциям по скачиванию файлов из репозитория примеров.
Клонирование репозитория примеров
Чтобы следовать за этой статьей, сначала клонируйте репозиторий примеров (azureml-examples) и затем перейдите в azureml-examples/cli/endpoints/online/model-1
директорию.
git clone --depth 1 https://github.com/Azure/azureml-examples
cd azureml-examples/cli/endpoints/online/model-1
Совет
При использовании параметра --depth 1
клонируется только последний коммит, что сокращает время выполнения операции.
Скачивание файлов из репозитория примеров
Если вы клонировали репозиторий примеров, локальный компьютер уже имеет копии файлов для этого примера, и вы можете перейти к следующему разделу. Если вы не клонируйте репозиторий, его можно скачать на локальный компьютер.
- Перейдите к https://github.com/Azure/azureml-examples/.
- Перейдите к кнопке "Код" на странице и выберите "<>" на вкладке "Локальный".
- Найдите папку
/cli/endpoints/online/model-1/model
и файл /cli/endpoints/online/model-1/onlinescoring/score.py
.
Настройка переменных среды
Задайте следующие переменные среды, так как они используются в примерах в этой статье. Замените значения идентификатором подписки Azure, регионом Azure, где находится ваша рабочая область, группа ресурсов, содержащая рабочую область, и имя рабочей области:
export SUBSCRIPTION_ID="your Azure subscription ID"
export LOCATION="Azure region where your workspace is located"
export RESOURCE_GROUP="Azure resource group that contains your workspace"
export WORKSPACE="Azure Machine Learning workspace name"
Некоторые примеры шаблонов требуют, чтобы вы загрузили файлы в хранилище Azure Blob для вашей рабочей области. Следующие действия запрашивают рабочую область и хранят эти сведения в переменных среды, используемых в примерах:
Получение токена доступа:
TOKEN=$(az account get-access-token --query accessToken -o tsv)
Задайте версию REST API:
API_VERSION="2022-05-01"
Получение сведений о хранилище:
# Get values for storage account
response=$(curl --location --request GET "https://management.azure.com/subscriptions/$SUBSCRIPTION_ID/resourceGroups/$RESOURCE_GROUP/providers/Microsoft.MachineLearningServices/workspaces/$WORKSPACE/datastores?api-version=$API_VERSION&isDefault=true" \
--header "Authorization: Bearer $TOKEN")
AZUREML_DEFAULT_DATASTORE=$(echo $response | jq -r '.value[0].name')
AZUREML_DEFAULT_CONTAINER=$(echo $response | jq -r '.value[0].properties.containerName')
export AZURE_STORAGE_ACCOUNT=$(echo $response | jq -r '.value[0].properties.accountName')
Клонирование репозитория примеров
Чтобы следовать этой статье, сначала клонируйте репозиторий примеров (azureml-examples). Затем выполните следующий код, чтобы перейти в каталог примеров:
git clone --depth 1 https://github.com/Azure/azureml-examples
cd azureml-examples
Совет
При использовании параметра --depth 1
клонируется только последний коммит, что сокращает время завершения операции.
Определение конечной точки
Чтобы определить конечную точку в Сети, укажите имя конечной точки и режим проверки подлинности. Дополнительные сведения об управляемых сетевых конечных точках см. в статье "Сетевые конечные точки".
Установите имя конечной точки
Чтобы задать имя конечной точки, выполните следующую команду. Замените YOUR_ENDPOINT_NAME
на имя, уникальное в регионе Azure. Дополнительные сведения о правилах именования см. в разделе "Ограничения конечной точки".
Для Linux выполните следующую команду:
export ENDPOINT_NAME="<YOUR_ENDPOINT_NAME>"
В следующем фрагменте кода показан файл endpoints/online/managed/sample/endpoint.yml:
$schema: https://azuremlschemas.azureedge.net/latest/managedOnlineEndpoint.schema.json
name: my-endpoint
auth_mode: key
Справочная информация о формате YAML конечной точки представлена в таблице ниже. Чтобы узнать, как указать эти атрибуты, ознакомьтесь со справкой YAML для веб-конечной точки. Сведения об ограничениях, связанных с управляемыми конечными точками, см. в разделе об ограничениях для сетевых конечных точек.
Ключ. |
Описание |
$schema |
(Необязательно) Схема YAML. Чтобы просмотреть все доступные параметры в ФАЙЛЕ YAML, можно просмотреть схему в предыдущем фрагменте кода в браузере. |
name |
Имя конечной точки. |
auth_mode |
Используйте key для аутентификации на основе ключей. Используйте aml_token для аутентификации в службе Машинное обучение Azure на основе токенов. Используйте aad_token для аутентификации на основе токенов Microsoft Entra (предварительная версия). Дополнительные сведения о проверке подлинности см. в статье "Проверка подлинности клиентов для сетевых конечных точек". |
Сначала определите имя сетевой конечной точки, а затем настройте конечную точку.
Имя конечной точки должно быть уникальным в регионе Azure. Дополнительные сведения о правилах именования см. в разделе "Ограничения конечной точки".
# Define an endpoint name
endpoint_name = "my-endpoint"
# Example way to define a random name
import datetime
endpoint_name = "endpt-" + datetime.datetime.now().strftime("%m%d%H%M%f")
# create an online endpoint
endpoint = ManagedOnlineEndpoint(
name = endpoint_name,
description="this is a sample endpoint",
auth_mode="key"
)
Предыдущий код используется key
для проверки подлинности на основе ключей. Чтобы использовать проверку подлинности на основе токенов в Azure Машинное обучение, используйте aml_token
. Чтобы использовать проверку подлинности на основе маркеров Microsoft Entra (предварительная версия), используйте aad_token
. Дополнительные сведения о проверке подлинности см. в статье "Проверка подлинности клиентов для сетевых конечных точек".
При развертывании в Azure из студии вы создадите конечную точку и развертывание, чтобы добавить их. В этот момент вам будет предложено указать названия конечной точки и развертывания.
Установить имя конечной точки
Чтобы задать имя конечной точки, выполните следующую команду. Замените YOUR_ENDPOINT_NAME
на имя, уникальное в регионе Azure. Дополнительные сведения о правилах именования см. в разделе "Ограничения конечной точки".
Для Linux выполните следующую команду:
export ENDPOINT_NAME=endpoint-`echo $RANDOM`
Чтобы определить конечную точку и развертывание, в этой статье используются шаблоны Azure Resource Manager online-endpoint.json и online-endpoint-deployment.json. Сведения об использовании шаблонов для определения виртуальной конечной точки и развертывания см. в разделе "Развертывание в Azure ".
Определение развертывания
Развертывание представляет собой набор ресурсов, необходимых для размещения модели, которая выполняет процесс вывода. В этом примере вы развертываете модель scikit-learn, которая выполняет регрессию и использует скрипт оценки score.py для выполнения модели при заданном входном запросе.
Дополнительные сведения о ключевых атрибутах развертывания см. в разделе "Сетевые развертывания".
Конфигурация развертывания использует расположение модели, которую вы хотите развернуть.
В следующем фрагменте показан файл endpoints/online/managed/sample/blue-deployment.yml, содержащий все необходимые входные данные для настройки развертывания:
blue-deployment.yml
$schema: https://azuremlschemas.azureedge.net/latest/managedOnlineDeployment.schema.json
name: blue
endpoint_name: my-endpoint
model:
path: ../../model-1/model/
code_configuration:
code: ../../model-1/onlinescoring/
scoring_script: score.py
environment:
conda_file: ../../model-1/environment/conda.yaml
image: mcr.microsoft.com/azureml/openmpi4.1.0-ubuntu22.04:latest
instance_type: Standard_DS3_v2
instance_count: 1
Файл blue-deployment.yml указывает следующие атрибуты развертывания:
-
model
— указывает свойства модели встроенно, используя path
(откуда загружать файлы). Интерфейс командной строки автоматически отправляет файлы модели и регистрирует модель с автоматически созданным именем.
-
environment
— использование встроенных определений, которые включают место загрузки файлов, интерфейс командной строки автоматически загружает файл conda.yaml
и регистрирует среду. Позже, чтобы собрать среду, развертывание использует image
для базового образа (в этом примере, это mcr.microsoft.com/azureml/openmpi4.1.0-ubuntu20.04:latest
), и затем conda_file
зависимости устанавливаются поверх базового образа.
-
code_configuration
— во время развертывания локальные файлы, такие как источник Python для модели оценки, отправляются из среды разработки.
Дополнительные сведения о схеме YAML см. в онлайн-справочнике по YAML.
Примечание.
Чтобы использовать конечные точки Kubernetes вместо управляемых сетевых конечных точек в качестве целевого объекта вычислений:
- Создайте и присоедините кластер Kubernetes в качестве целевого объекта вычислений к рабочей области Машинного обучения Azure с помощью студии машинного обучения Azure.
- Используйте YAML конечной точки для целевого объекта Kubernetes, а не управляемой конечной точки YAML. Необходимо отредактировать YAML, чтобы изменить значение
compute
на имя вашего зарегистрированного целевого компьютера. Вы можете использовать deployment.yaml, который содержит дополнительные свойства, применимые к развертыванию в Kubernetes.
Все команды, используемые в этой статье для управляемых сетевых конечных точек, также применяются к конечным точкам Kubernetes, за исключением следующих возможностей, которые не применяются к конечным точкам Kubernetes:
Чтобы настроить развертывание, выполните приведенные действия.
model = Model(path="../model-1/model/sklearn_regression_model.pkl")
env = Environment(
conda_file="../model-1/environment/conda.yaml",
image="mcr.microsoft.com/azureml/openmpi4.1.0-ubuntu20.04:latest",
)
blue_deployment = ManagedOnlineDeployment(
name="blue",
endpoint_name=endpoint_name,
model=model,
environment=env,
code_configuration=CodeConfiguration(
code="../model-1/onlinescoring", scoring_script="score.py"
),
instance_type="Standard_DS3_v2",
instance_count=1,
)
-
Model
— задает свойства модели в строке, используя path
(откуда загружать файлы). Пакет SDK автоматически отправляет файлы модели и регистрирует модель с автоматически созданным именем.
-
Environment
— с использованием встроенных определений, которые включают место, откуда загружать файлы, пакет SDK автоматически загружает файл conda.yaml
и регистрирует среду. Позже для сборки среды развертывание использует image
в качестве базового образа (в данном примере это mcr.microsoft.com/azureml/openmpi4.1.0-ubuntu20.04:latest
), а зависимости conda_file
устанавливаются на основе базового образа.
-
CodeConfiguration
— во время развертывания локальные файлы, такие как источник Python для модели оценки, отправляются из среды разработки.
Дополнительные сведения об определении онлайн-развертывания см. в классе OnlineDeployment.
При развертывании в Azure вы создадите конечную точку и развертывание для его добавления. В этом случае вам будет предложено указать имена конечной точки и развертывания.
Понять скрипт оценки
Совет
Для сетевых конечных точек используется тот же формат скрипта оценки, что и в более ранних версиях CLI и в пакете SDK для Python.
Скрипт оценки, указанный в code_configuration.scoring_script
, должен иметь функцию init()
и функцию run()
.
Скрипт оценки должен иметь init()
функцию и run()
функцию.
Скрипт оценки должен иметь init()
функцию и run()
функцию.
Скрипт оценки должен иметь init()
функцию и run()
функцию. В этой статье используется файл score.py.
При использовании шаблона для развертывания необходимо сначала отправить файлы оценки в хранилище BLOB-объектов Azure, а затем зарегистрировать его:
Следующий код использует команду az storage blob upload-batch
Azure CLI для отправки файлов оценки:
az storage blob upload-batch -d $AZUREML_DEFAULT_CONTAINER/score -s cli/endpoints/online/model-1/onlinescoring --account-name $AZURE_STORAGE_ACCOUNT
Следующий код регистрирует код с помощью шаблона:
az deployment group create -g $RESOURCE_GROUP \
--template-file arm-templates/code-version.json \
--parameters \
workspaceName=$WORKSPACE \
codeAssetName="score-sklearn" \
codeUri="https://$AZURE_STORAGE_ACCOUNT.blob.core.windows.net/$AZUREML_DEFAULT_CONTAINER/score"
В этом примере используется файл score.py: score.py
import os
import logging
import json
import numpy
import joblib
def init():
"""
This function is called when the container is initialized/started, typically after create/update of the deployment.
You can write the logic here to perform init operations like caching the model in memory
"""
global model
# AZUREML_MODEL_DIR is an environment variable created during deployment.
# It is the path to the model folder (./azureml-models/$MODEL_NAME/$VERSION)
# Please provide your model's folder name if there is one
model_path = os.path.join(
os.getenv("AZUREML_MODEL_DIR"), "model/sklearn_regression_model.pkl"
)
# deserialize the model file back into a sklearn model
model = joblib.load(model_path)
logging.info("Init complete")
def run(raw_data):
"""
This function is called for every invocation of the endpoint to perform the actual scoring/prediction.
In the example we extract the data from the json input and call the scikit-learn model's predict()
method and return the result back
"""
logging.info("model 1: request received")
data = json.loads(raw_data)["data"]
data = numpy.array(data)
result = model.predict(data)
logging.info("Request processed")
return result.tolist()
Функция init()
вызывается при инициализации или запуске контейнера. Обычно инициализация происходит вскоре после создания или обновления развертывания. Функция init
— это место для записи логики для глобальных операций инициализации, таких как кэширование модели в памяти (как показано в этом score.py файле).
Функция run()
вызывается каждый раз при вызове конечной точки, и она выполняет фактическую оценку и прогнозирование. В этом score.py файле run()
функция извлекает данные из входных данных JSON, вызывает метод модели predict()
scikit-learn, а затем возвращает результат прогнозирования.
Развертывание и отладка локально с помощью локальной конечной точки
Настоятельно рекомендуется локально запустить конечную точку для проверки и отладки кода и конфигурации перед развертыванием в Azure. Azure CLI и Python SDK поддерживают локальные конечные точки и развертывания, а Студия машинного обучения Azure и шаблоны ARM не поддерживают.
Для локального развертывания подсистема Docker должна быть установлена и запущена. Как правило, подсистема Docker запускается при включении компьютера. Если нет, вы можете устранить неполадки Docker Engine.
Совет
Вы можете использовать пакет Python HTTP-сервера для вывода результатов в Azure Machine Learning для отладки скрипта оценки локально без Docker Engine. Отладка с помощью сервера вывода помогает выполнить отладку скрипта оценки перед развертыванием на локальных конечных точках, чтобы можно было выполнять отладку без влияния на конфигурации контейнеров развертывания.
Для получения дополнительных сведений о локальной отладке онлайновых конечных точек перед их развертыванием в Azure см. раздел "Отладка онлайновых конечных точек".
Локальное развертывание модели
Сначала создайте конечную точку. При необходимости для локальной конечной точки можно пропустить этот шаг и непосредственно создать развертывание (следующий шаг), которое, в свою очередь, создаст необходимые метаданные. Развертывание моделей локально полезно для разработки и тестирования.
az ml online-endpoint create --local -n $ENDPOINT_NAME -f endpoints/online/managed/sample/endpoint.yml
ml_client.online_endpoints.begin_create_or_update(endpoint, local=True)
Студия не поддерживает локальные конечные точки. Чтобы проверить конечную точку локально, см. вкладки Azure CLI или Python.
Шаблон не поддерживает локальные конечные точки. Чтобы проверить конечную точку локально, см. вкладки Azure CLI или Python.
Теперь создайте развертывание с именем blue
в конечной точке.
az ml online-deployment create --local -n blue --endpoint $ENDPOINT_NAME -f endpoints/online/managed/sample/blue-deployment.yml
Флаг --local
инструктирует CLI развернуть конечную точку в среде Docker.
ml_client.online_deployments.begin_create_or_update(
deployment=blue_deployment, local=True
)
Флаг local=True
направляет пакет SDK для развертывания конечной точки в среде Docker.
Студия не поддерживает локальные конечные точки. Чтобы проверить конечную точку локально, см. вкладки Azure CLI или Python.
Шаблон не поддерживает локальные конечные точки. Чтобы проверить конечную точку локально, см. вкладки Azure CLI или Python.
Убедитесь, что локальное развертывание выполнено успешно
Проверьте состояние развертывания, чтобы узнать, была ли модель развернута без ошибок:
az ml online-endpoint show -n $ENDPOINT_NAME --local
Результат должен выглядеть аналогично следующему JSON. Значение параметра provisioning_state
— Succeeded
.
{
"auth_mode": "key",
"location": "local",
"name": "docs-endpoint",
"properties": {},
"provisioning_state": "Succeeded",
"scoring_uri": "http://localhost:49158/score",
"tags": {},
"traffic": {}
}
ml_client.online_endpoints.get(name=endpoint_name, local=True)
Метод возвращает ManagedOnlineEndpoint
сущность. Значение параметра provisioning_state
— Succeeded
.
ManagedOnlineEndpoint({'public_network_access': None, 'provisioning_state': 'Succeeded', 'scoring_uri': 'http://localhost:49158/score', 'swagger_uri': None, 'name': 'endpt-10061534497697', 'description': 'this is a sample endpoint', 'tags': {}, 'properties': {}, 'id': None, 'Resource__source_path': None, 'base_path': '/path/to/your/working/directory', 'creation_context': None, 'serialize': <msrest.serialization.Serializer object at 0x7ffb781bccd0>, 'auth_mode': 'key', 'location': 'local', 'identity': None, 'traffic': {}, 'mirror_traffic': {}, 'kind': None})
Студия не поддерживает локальные конечные точки. Чтобы проверить конечную точку локально, см. вкладки Azure CLI или Python.
Шаблон не поддерживает локальные конечные точки. Чтобы проверить конечную точку локально, см. вкладки Azure CLI или Python.
В следующей таблице приведены возможные значения для provisioning_state
:
значение |
Описание |
Создание |
Ресурс создается. |
Обновление |
Ресурс обновляется. |
Удаление |
Ресурс удаляется. |
Успешно |
Операция создания и обновления выполнена успешно. |
Неудачно |
Не удалось выполнить операцию создания, обновления или удаления. |
Вызов локальной конечной точки для оценки данных с помощью модели
Вызовите конечную точку для оценки модели с помощью invoke
команды и передачи параметров запроса, хранящихся в JSON-файле:
az ml online-endpoint invoke --local --name $ENDPOINT_NAME --request-file endpoints/online/model-1/sample-request.json
Если вы хотите использовать клиент REST (например, curl), вам потребуется URI оценки. Чтобы получить URI оценки, используйте команду az ml online-endpoint show --local -n $ENDPOINT_NAME
. Найдите атрибут scoring_uri
в возвращенных данных.
Вызовите конечную точку для оценки модели с помощью invoke
команды и передачи параметров запроса, хранящихся в JSON-файле.
ml_client.online_endpoints.invoke(
endpoint_name=endpoint_name,
request_file="../model-1/sample-request.json",
local=True,
)
Если вы хотите использовать клиент REST (например, curl), вам потребуется URI оценки. Чтобы получить URI оценки, выполните следующий код. Найдите атрибут scoring_uri
в возвращенных данных.
endpoint = ml_client.online_endpoints.get(endpoint_name, local=True)
scoring_uri = endpoint.scoring_uri
Студия не поддерживает локальные конечные точки. Чтобы проверить конечную точку локально, см. вкладки Azure CLI или Python.
Шаблон не поддерживает локальные конечные точки. Чтобы проверить конечную точку локально, см. вкладки Azure CLI или Python.
Проверьте журналы на результаты операции вызова.
В примере файла score.py метод run()
выводит некоторые выходные данные в консоли.
Эти выходные get-logs
данные можно просмотреть с помощью команды:
az ml online-deployment get-logs --local -n blue --endpoint $ENDPOINT_NAME
Эти выходные get_logs
данные можно просмотреть с помощью метода:
ml_client.online_deployments.get_logs(
name="blue", endpoint_name=endpoint_name, local=True, lines=50
)
Студия не поддерживает локальные конечные точки. Чтобы проверить конечную точку локально, см. вкладки Azure CLI или Python.
Шаблон не поддерживает локальные конечные точки. Чтобы проверить конечную точку локально, см. вкладки Azure CLI или Python.
Развертывание сетевой конечной точки в Azure
Теперь следует развернуть вашу онлайн конечную точку в Azure. Как лучшую практику для производства, мы рекомендуем зарегистрировать модель и среду, которую вы будете использовать в развертывании.
Регистрация модели и среды
Рекомендуется зарегистрировать модель и среду перед развертыванием в Azure, чтобы можно было указать зарегистрированные имена и версии во время развертывания. Регистрация ресурсов позволяет повторно использовать их без необходимости отправлять их каждый раз при создании развертываний, тем самым повышая воспроизводимость и возможность трассировки.
Примечание.
В отличие от развертывания в Azure, локальное развертывание не поддерживает использование зарегистрированных моделей и сред. Скорее, локальное развертывание использует локальные файлы модели и использует среды только с локальными файлами.
Для развертывания в Azure можно использовать локальные или зарегистрированные ресурсы (модели и среды). В этом разделе статьи развертывание в Azure использует зарегистрированные ресурсы, но вы можете использовать локальные ресурсы. Пример конфигурации развертывания, которая отправляет локальные файлы для локального развертывания, см. в разделе "Настройка развертывания".
Чтобы зарегистрировать модель и среду, используйте форму model: azureml:my-model:1
или environment: azureml:my-env:1
.
Для регистрации вы можете извлечь определения YAML model
и environment
в отдельные файлы YAML и использовать команды az ml model create
и az ml environment create
. Чтобы узнать больше об этих командах, выполните команду az ml model create -h
и az ml environment create -h
.
Создайте определение YAML для модели:
$schema: https://azuremlschemas.azureedge.net/latest/model.schema.json
name: my-model
path: ../../model-1/model/
Зарегистрируйте модель:
az ml model create -n my-model -v 1 -f ./model.yaml
Создайте определение YAML для среды:
$schema: https://azuremlschemas.azureedge.net/latest/environment.schema.json
name: my-env
image: mcr.microsoft.com/azureml/openmpi4.1.0-ubuntu20.04:latest
conda_file: ../../model-1/environment/conda.yaml
Зарегистрируйте среду:
az ml environment create -n my-env -v 1 -f ./environment.yaml
Дополнительные сведения о регистрации модели в качестве ресурса см. в разделе "Регистрация модели в качестве ресурса" в Машинное обучение с помощью интерфейса командной строки. Дополнительные сведения о создании среды см. в статье "Управление средами Машинное обучение Azure с помощью ИНТЕРФЕЙСА командной строки и пакета SDK (версия 2)".
Регистрация модели
from azure.ai.ml.entities import Model
from azure.ai.ml.constants import AssetTypes
file_model = Model(
path="../../model-1/model/",
type=AssetTypes.CUSTOM_MODEL,
name="my-model",
description="Model created from local file.",
)
ml_client.models.create_or_update(file_model)
Зарегистрируйте среду:
from azure.ai.ml.entities import Environment
env_docker_conda = Environment(
image="mcr.microsoft.com/azureml/openmpi4.1.0-ubuntu20.04",
conda_file="../../model-1/environment/conda.yaml",
name="my-env",
description="Environment created from a Docker image plus Conda environment.",
)
ml_client.environments.create_or_update(env_docker_conda)
Чтобы узнать, как зарегистрировать модель в качестве ресурса, чтобы указать зарегистрированное имя и версию во время развертывания, см. статью "Регистрация модели в качестве ресурса в Машинное обучение с помощью пакета SDK".
Дополнительные сведения о создании среды см. в статье "Управление средами Машинное обучение Azure с помощью ИНТЕРФЕЙСА командной строки и пакета SDK (версия 2)".
Регистрация модели.
Регистрация модели — это логическая сущность в рабочей области, которая может содержать один файл модели или каталог нескольких файлов. В целях лучшей производственной практики рекомендуется зарегистрировать модель и окружение. Перед тем, как создать конечную точку и выполнить развертывание, описанные в этой статье, необходимо зарегистрировать папку модели, содержащую модель.
Чтобы зарегистрировать пример модели, выполните следующие действия.
Перейдите в Студию машинного обучения Azure.
Перейдите на вкладку Модели на панели навигации слева.
Выберите " Регистрация" и выберите " Из локальных файлов".
Выберите неуказанный тип для типа модели.
Нажмите "Обзор" и выберите "Обзор папки".
\azureml-examples\cli\endpoints\online\model-1\model
Выберите папку из локальной копии репозитория, клонированного или скачаемого ранее. При появлении запроса нажмите кнопку "Отправить " и подождите завершения отправки.
Нажмите кнопку "Далее" после завершения отправки папки.
Введите понятное Имя модели. Действия, описанные в этой статье, предполагают, что модель называется model-1
.
Нажмите Далее, а затем Зарегистрировать для завершения регистрации.
См. дополнительные сведения о регистрации моделей и работе с ними".
Создание и регистрация среды
На панели навигации слева выберите страницу "Среды ".
Нажмите кнопку создания.
На странице "Параметры" укажите имя, например my-env
для среды.
Для "Выберите источник среды" выберите Использовать существующий образ Docker с необязательным источником conda.
Нажмите кнопку "Далее ", чтобы перейти на страницу "Настройка".
Скопируйте содержимое \azureml-examples\cli\endpoints\online\model-1\environment\conda.yaml
файла из локальной копии репозитория, клонированного или скачаного ранее.
Вставьте содержимое в текстовое поле.
Нажмите кнопку "Далее", пока не получите страницу "Рецензирование".
Щелкните Создать.
Дополнительные сведения о создании среды в студии см. в статье "Создание среды".
Чтобы зарегистрировать модель с помощью шаблона, необходимо сначала отправить файл модели в хранилище BLOB-объектов Azure. В следующем примере используется команда az storage blob upload-batch
для загрузки файла в хранилище по умолчанию для рабочей области:
az storage blob upload-batch -d $AZUREML_DEFAULT_CONTAINER/model -s cli/endpoints/online/model-1/model --account-name $AZURE_STORAGE_ACCOUNT
После отправки файла используйте шаблон для создания регистрации модели. В следующем примере modelUri
параметр содержит путь к модели:
az deployment group create -g $RESOURCE_GROUP \
--template-file arm-templates/model-version.json \
--parameters \
workspaceName=$WORKSPACE \
modelAssetName="sklearn" \
modelUri="azureml://subscriptions/$SUBSCRIPTION_ID/resourceGroups/$RESOURCE_GROUP/workspaces/$WORKSPACE/datastores/$AZUREML_DEFAULT_DATASTORE/paths/model/sklearn_regression_model.pkl"
Часть среды — это файл conda, указывающий зависимости модели, необходимые для размещения модели. В следующем примере показано, как считывать содержимое файла conda в переменные среды:
CONDA_FILE=$(cat cli/endpoints/online/model-1/environment/conda.yaml)
В следующем примере показано, как использовать шаблон для регистрации среды. Содержимое файла conda из предыдущего шага передается в шаблон с помощью condaFile
параметра:
ENV_VERSION=$RANDOM
az deployment group create -g $RESOURCE_GROUP \
--template-file arm-templates/environment-version.json \
--parameters \
workspaceName=$WORKSPACE \
environmentAssetName=sklearn-env \
environmentAssetVersion=$ENV_VERSION \
dockerImage=mcr.microsoft.com/azureml/openmpi3.1.2-ubuntu18.04:20210727.v1 \
condaFile="$CONDA_FILE"
Внимание
При определении пользовательской среды для развертывания убедитесь, что этот пакет azureml-inference-server-http
включен в файл conda. Этот пакет необходим для правильной работы сервера вывода. Если вы не знакомы с созданием собственной пользовательской среды, рекомендуется вместо этого использовать одну из наших курируемых сред, таких как minimal-py-inference
(для пользовательских моделей, которые не используют mlflow) или mlflow-py-inference
(для моделей, использующих mlflow). Эти курированные среды можно найти на вкладке "Среды" студии машинного обучения.
Конфигурация развертывания использует зарегистрированную модель, которую вы хотите развернуть, и зарегистрированную среду.
Используйте зарегистрированные ресурсы (модель и среда) в определении развертывания. В следующем фрагменте кода показан endpoints/online/managed/sample/blue-deployment-with-registered-assets.yml
файл со всеми необходимыми входными данными для настройки развертывания:
blue-deployment-with-registered-assets.yml
$schema: https://azuremlschemas.azureedge.net/latest/managedOnlineDeployment.schema.json
name: blue
endpoint_name: my-endpoint
model: azureml:my-model:1
code_configuration:
code: ../../model-1/onlinescoring/
scoring_script: score.py
environment: azureml:my-env:1
instance_type: Standard_DS3_v2
instance_count: 1
Чтобы настроить развертывание, используйте зарегистрированную модель и среду:
model = "azureml:my-model:1"
env = "azureml:my-env:1"
blue_deployment_with_registered_assets = ManagedOnlineDeployment(
name="blue",
endpoint_name=endpoint_name,
model=model,
environment=env,
code_configuration=CodeConfiguration(
code="../model-1/onlinescoring", scoring_script="score.py"
),
instance_type="Standard_DS3_v2",
instance_count=1,
)
При развертывании из студии вы создадите конечную точку и развертывание для добавления к ней. В этот момент вам будет предложено указать имена конечной точки и развертывания.
Используйте различные типы экземпляров ЦП и GPU, а также образы.
Вы можете указать типы экземпляров центрального процессора или GPU и образы в определении развертывания как для локального развертывания, так и для развертывания в Azure.
Определение развертывания в файле blue-deployment-with-registered-assets.yml использовало экземпляр общего назначения типа Standard_DS3_v2
и образ Docker mcr.microsoft.com/azureml/openmpi4.1.0-ubuntu20.04:latest
без использования GPU. Для вычислений GPU выберите SKU типа вычислений GPU и образ Docker GPU.
Для получения информации о поддерживаемых типах экземпляров общего назначения и GPU см. статью о номерах SKU виртуальных машин для управляемых сетевых конечных точек. Список базовых образов ЦП и GPU для Машинного обучения Azure см. на странице базовых образов Машинного обучения Azure.
Примечание.
Сведения об использовании Kubernetes вместо управляемых конечных точек в качестве целевого объекта вычислений см. в статье "Общие сведения о целевом объекте вычислений Kubernetes".
Вы можете указать типы экземпляров CPU или GPU и образы в конфигурации развертывания как для локального развертывания, так и для развертывания на Azure.
Ранее вы настроили развертывание, которое использовало экземпляр общего назначения Standard_DS3_v2
и образ Docker, не использующий GPU mcr.microsoft.com/azureml/openmpi4.1.0-ubuntu20.04:latest
. Для вычислений GPU выберите SKU типа вычислений GPU и образ Docker GPU.
Поддерживаемые типы экземпляров общего назначения и GPU перечислены в статье о номерах SKU поддерживаемых виртуальных машин для управляемых сетевых конечных точек. Список базовых образов ЦП и GPU для Машинного обучения Azure см. на странице базовых образов Машинного обучения Azure.
Примечание.
Сведения об использовании Kubernetes вместо управляемых конечных точек в качестве целевого объекта вычислений см. в статье "Общие сведения о целевом объекте вычислений Kubernetes".
Предыдущая регистрация среды указывает образ mcr.microsoft.com/azureml/openmpi3.1.2-ubuntu18.04
docker, отличный от GPU, передав значение environment-version.json
шаблону с помощью dockerImage
параметра. Для вычислений GPU укажите значение для образа docker GPU для шаблона (с помощью dockerImage
параметра) и укажите номер SKU online-endpoint-deployment.json
вычислительного типа GPU для шаблона (с помощью skuName
параметра).
Для поддерживаемых типов экземпляров общего назначения и GPU см. раздел о номерах SKU виртуальных машин, поддерживаемых управляемыми сетевыми конечными точками. Список базовых образов ЦП и GPU для Машинного обучения Azure см. на странице базовых образов Машинного обучения Azure.
Теперь разверните онлайн конечную точку в Azure.
Развернуть в Azure
Создайте конечную точку в облаке Azure.
az ml online-endpoint create --name $ENDPOINT_NAME -f endpoints/online/managed/sample/endpoint.yml
Создайте развертывание с именем blue
под конечной точкой.
az ml online-deployment create --name blue --endpoint $ENDPOINT_NAME -f endpoints/online/managed/sample/blue-deployment-with-registered-assets.yml --all-traffic
Создание развертывания может занять до 15 минут в зависимости от того, создается ли базовая среда или образ в первый раз. Последующие развертывания, использующие ту же среду, обрабатываются быстрее.
Совет
- Если вы предпочитаете не блокировать консоль CLI, можно добавить флаг
--no-wait
в команду. Однако этот параметр остановит интерактивное отображение состояния развертывания.
Внимание
Флаг --all-traffic
в коде az ml online-deployment create
, который используется для создания развертывания, выделяет 100 % трафика конечной точки только что созданному синему развертыванию. Хотя это полезно для разработки и тестирования, для рабочей среды может потребоваться маршрутизировать трафик к новому развертыванию с помощью явной команды. Например, az ml online-endpoint update -n $ENDPOINT_NAME --traffic "blue=100"
.
Создание конечной точки:
Используя endpoint
, который вы определили ранее, и MLClient
, который вы создали ранее, теперь можно создать конечную точку в рабочей области. Эта команда запускает процесс создания конечной точки и возвращает ответ-подтверждение, пока создание конечной точки продолжается.
ml_client.online_endpoints.begin_create_or_update(endpoint)
Создайте развертывание:
Используя blue_deployment_with_registered_assets
, который вы определили ранее, и MLClient
, который вы создали ранее, теперь можно создать развертывание в рабочей области. Эта команда запускает создание развертывания и отправляет подтвердительный ответ, пока продолжает создаваться развертывание.
ml_client.online_deployments.begin_create_or_update(blue_deployment_with_registered_assets)
Совет
- Если вы предпочитаете не блокировать консоль Python, можно добавить флаг
no_wait=True
в параметры. Однако этот параметр остановит интерактивное отображение состояния развертывания.
# blue deployment takes 100 traffic
endpoint.traffic = {"blue": 100}
ml_client.online_endpoints.begin_create_or_update(endpoint)
Создание управляемой сетевой конечной точки и развертывания
С помощью студии вы можете создать управляемую подключенную конечную точку прямо в браузере. При создании управляемой сетевой конечной точки в студии необходимо определить первоначальное развертывание. Создать пустую управляемую онлайн-конечную точку невозможно.
Одним из способов создания управляемого онлайн-конечного пункта в студии является использование страницы Модели. Этот метод также предоставляет простой способ добавления модели в существующее управляемое сетевое развертывание. Чтобы развернуть модель с именем model-1
, зарегистрированную ранее в разделе "Регистрация модели и среды", выполните указанные ниже действия .
Перейдите в Студию машинного обучения Azure.
Перейдите на вкладку Модели на панели навигации слева.
Выберите модель с именем model-1
, проверив круг рядом с его именем.
Выберите Развернуть>Конечную точку в режиме реального времени.
Это действие открывает окно, в котором можно указать сведения о конечной точке.
Введите имя конечной точки, уникальное в регионе Azure. Дополнительные сведения о правилах именования см. в разделе "Ограничения конечной точки".
Сохраните выбор по умолчанию: управляемое для типа вычислений.
Сохраните выбор по умолчанию: проверка подлинности на основе ключей для типа проверки подлинности. Дополнительные сведения о проверке подлинности см. в статье "Проверка подлинности клиентов для сетевых конечных точек".
Выберите Далее, пока не попадете на страницу "Развертывание". Здесь переключите диагностику Application Insights в состояние "Включено", чтобы вы могли, просматривая графики деятельности вашей конечной точки в студии, позже анализировать метрики и журналы с помощью Application Insights.
Нажмите кнопку "Далее ", чтобы перейти на страницу "Код + среда". Здесь выберите следующие параметры:
-
Выберите сценарий оценки для инференции: просмотрите и выберите
\azureml-examples\cli\endpoints\online\model-1\onlinescoring\score.py
файл из репозитория, клонированного или скачанного ранее.
-
Выберите раздел среды : выберите настраиваемые среды и выберите среду my-env:1 , созданную ранее.
Нажмите Далее, принимая значения по умолчанию, пока не появится запрос о создании развертывания.
Просмотрите параметры развертывания и нажмите кнопку "Создать ".
Кроме того, можно создать управляемую конечную точку в Интернете на странице «Конечные точки» в студии.
Перейдите в Студию машинного обучения Azure.
На панели навигации слева выберите Конечные точки.
Выберите + Создать.
Это действие открывает окно для выбора модели и указания сведений о конечной точке и развертывании. Введите параметры конечной точки и развертывания, как описано ранее, а затем создайте развертывание.
Используйте шаблон для создания веб-конечной точки:
az deployment group create -g $RESOURCE_GROUP \
--template-file arm-templates/online-endpoint.json \
--parameters \
workspaceName=$WORKSPACE \
onlineEndpointName=$ENDPOINT_NAME \
identityType=SystemAssigned \
authMode=AMLToken \
location=$LOCATION
Разверните модель в конечной точке после создания конечной точки:
resourceScope="/subscriptions/$SUBSCRIPTION_ID/resourceGroups/$RESOURCE_GROUP/providers/Microsoft.MachineLearningServices"
az deployment group create -g $RESOURCE_GROUP \
--template-file arm-templates/online-endpoint-deployment.json \
--parameters \
workspaceName=$WORKSPACE \
location=$LOCATION \
onlineEndpointName=$ENDPOINT_NAME \
onlineDeploymentName=blue \
codeId="$resourceScope/workspaces/$WORKSPACE/codes/score-sklearn/versions/1" \
scoringScript=score.py \
environmentId="$resourceScope/workspaces/$WORKSPACE/environments/sklearn-env/versions/$ENV_VERSION" \
model="$resourceScope/workspaces/$WORKSPACE/models/sklearn/versions/1" \
endpointComputeType=Managed \
skuName=Standard_F2s_v2 \
skuCapacity=1
Для отладки ошибок в развертывании см. статью "Устранение неполадок в развертывании конечных точек онлайн".
Проверка состояния конечной точки
Используйте команду show
для отображения информации в provisioning_state
для конечной точки и развертывания.
az ml online-endpoint show -n $ENDPOINT_NAME
Вывод списка всех конечных точек в рабочей области в формате таблицы с помощью list
команды:
az ml online-endpoint list --output table
Проверьте состояние конечной точки, чтобы узнать, была ли модель развернута без ошибок:
ml_client.online_endpoints.get(name=endpoint_name)
Перечислите все конечные точки в рабочей области с помощью метода list
в табличном формате.
for endpoint in ml_client.online_endpoints.list():
print(endpoint.name)
Метод возвращает список (итератор) сущностей ManagedOnlineEndpoint
.
Дополнительные сведения можно получить, указав дополнительные параметры. Например, вывести список конечных точек в виде таблицы:
print("Kind\tLocation\tName")
print("-------\t----------\t------------------------")
for endpoint in ml_client.online_endpoints.list():
print(f"{endpoint.kind}\t{endpoint.location}\t{endpoint.name}")
Просмотр управляемых сетевых конечных точек
Все управляемые сетевые конечные точки можно просмотреть на странице конечных точек. Перейдите на страницу сведений конечной точки, чтобы найти критически важные сведения, включая URI конечной точки, состояние, средства тестирования, мониторы действий, журналы развертывания и пример кода потребления:
На панели навигации слева выберите Конечные точки. Здесь можно просмотреть список всех конечных точек в рабочей области.
Необязательно: задайте фильтр для типа вычислительного ресурса, чтобы отобразить только управляемые вычислительные ресурсы.
Выберите имя конечной точки, чтобы просмотреть страницу сведений о конечной точке.
Совет
Хотя шаблоны полезны для развертывания ресурсов, их нельзя использовать для перечисления, отображения или вызова ресурсов. Используйте Azure CLI, пакет SDK для Python или студию для выполнения этих операций. В следующем коде используется Azure CLI.
Используйте команду show
, чтобы отобразить информацию на конечной точке и развертывании в provisioning_state
.
az ml online-endpoint show -n $ENDPOINT_NAME
Вывод списка всех конечных точек в рабочей области в формате таблицы с помощью list
команды:
az ml online-endpoint list --output table
Проверка онлайн-состояния развертывания
Проверьте журналы, чтобы узнать, была ли модель развернута без ошибок.
Чтобы просмотреть выходные данные журнала из контейнера, используйте следующую команду CLI:
az ml online-deployment get-logs --name blue --endpoint $ENDPOINT_NAME
По умолчанию журналы извлекаются из контейнера сервера вывода информации. Чтобы просмотреть журналы из контейнера инициализатора хранилища, добавьте --container storage-initializer
флаг. Дополнительные сведения о журналах развертывания см. в разделе "Получение журналов контейнеров".
Вы можете просмотреть выходные данные журнала с помощью метода get_logs
.
ml_client.online_deployments.get_logs(
name="blue", endpoint_name=endpoint_name, lines=50
)
По умолчанию журналы извлекаются из контейнера сервера вывода. Чтобы просмотреть журналы из контейнера инициализатора хранилища, добавьте параметр container_type="storage-initializer"
. Дополнительные сведения о журналах развертывания см. в разделе «Получение журналов контейнеров».
ml_client.online_deployments.get_logs(
name="blue", endpoint_name=endpoint_name, lines=50, container_type="storage-initializer"
)
Чтобы просмотреть выходные данные журнала, выберите вкладку "Журналы" на странице конечной точки. Если у вас несколько развертываний в конечной точке, используйте раскрывающийся список, чтобы выбрать развертывание, журнал которого вы хотите просмотреть.
По умолчанию журналы извлекаются с сервера инференса. Чтобы просмотреть журналы из контейнера инициализатора хранилища, используйте Azure CLI или пакет SDK для Python (см. каждую вкладку для получения сведений). Журналы из контейнера инициализатора хранилища содержат сведения о том, были ли успешно скачаны данные кода и модели в контейнер. Дополнительные сведения о журналах развертывания см. в разделе «Получение журналов контейнеров».
Совет
Хотя шаблоны полезны для развертывания ресурсов, их нельзя использовать для перечисления, отображения или вызова ресурсов. Используйте Azure CLI, пакет SDK для Python или студию для выполнения этих операций. В следующем коде используется Azure CLI.
Чтобы просмотреть выходные данные журнала из контейнера, используйте следующую команду CLI:
az ml online-deployment get-logs --name blue --endpoint $ENDPOINT_NAME
По умолчанию журналы извлекаются из контейнера сервера инференции. Чтобы просмотреть журналы из контейнера инициализатора хранилища, добавьте --container storage-initializer
флаг. Дополнительные сведения о журналах развертывания см. в разделе "Получение журналов контейнеров".
Вызов конечной точки для оценки данных с помощью модели
Используйте команду invoke
или клиент REST на ваш выбор, чтобы вызвать конечную точку и обработать некоторые данные.
az ml online-endpoint invoke --name $ENDPOINT_NAME --request-file endpoints/online/model-1/sample-request.json
Получите ключ, используемый для проверки подлинности в конечной точке:
Совет
Вы можете контролировать, какие субъекты безопасности Microsoft Entra могут получить аутентификационный ключ, назначив их на пользовательскую роль, которая позволяет Microsoft.MachineLearningServices/workspaces/onlineEndpoints/token/action
и Microsoft.MachineLearningServices/workspaces/onlineEndpoints/listkeys/action
. Дополнительные сведения об управлении авторизацией к рабочим областям см. в «Управление доступом к рабочей области Azure Machine Learning».
ENDPOINT_KEY=$(az ml online-endpoint get-credentials -n $ENDPOINT_NAME -o tsv --query primaryKey)
Используйте curl для оценки данных.
SCORING_URI=$(az ml online-endpoint show -n $ENDPOINT_NAME -o tsv --query scoring_uri)
curl --request POST "$SCORING_URI" --header "Authorization: Bearer $ENDPOINT_KEY" --header 'Content-Type: application/json' --data @endpoints/online/model-1/sample-request.json
Обратите внимание, что вы используете show
и get-credentials
команды для получения учетных данных проверки подлинности. Обратите также внимание на то, что флаг --query
используется для фильтрации только нужных атрибутов. Дополнительные сведения о флаге см. в статье "Запрос выходных --query
данных команды Azure CLI".
Чтобы просмотреть журналы вызовов, снова введите команду get-logs
.
MLClient
Используя созданный ранее дескриптор, получите дескриптор конечной точки. Затем конечную точку можно вызвать с помощью invoke
команды со следующими параметрами:
-
endpoint_name
— имя конечной точки
-
request_file
— файл с данными запроса
-
deployment_name
— имя конкретного развертывания для тестирования в конечной точке.
Отправьте пример запроса с помощью json-файла .
# test the blue deployment with some sample data
ml_client.online_endpoints.invoke(
endpoint_name=endpoint_name,
deployment_name="blue",
request_file="../model-1/sample-request.json",
)
Перейдите на вкладку "Тест" на странице сведений о конечной точке, чтобы протестировать управляемое сетевое развертывание. Введите тестовые входные данные и просмотрите результаты.
Откройте вкладку Тест на странице сведений о конечной точке.
С помощью раскрывающегося списка выберите развертывание, которое хотите протестировать.
Введите пример входных данных.
Выберите Тест.
Совет
Хотя шаблоны полезны для развертывания ресурсов, их нельзя использовать для перечисления, отображения или вызова ресурсов. Используйте Azure CLI, пакет SDK для Python или студию для выполнения этих операций. В следующем коде используется Azure CLI.
Используйте либо команду invoke
, либо клиент REST на ваш выбор, чтобы обратиться к конечной точке и обработать некоторые данные.
az ml online-endpoint invoke --name $ENDPOINT_NAME --request-file cli/endpoints/online/model-1/sample-request.json
(Необязательно) Обновите развертывание
Если вы хотите обновить код, модель, среду или параметры масштабирования, обновите файл YAML и введите команду az ml online-endpoint update
.
Примечание.
При обновлении количества экземпляров (для масштабирования развертывания) вместе с другими параметрами модели (например, кодом, моделью или средой) в одной update
команде сначала будет выполнена операция масштабирования, а затем будут применены другие обновления. Рекомендуется выполнять эти операции отдельно в рабочей среде.
Чтобы понять, как работает команда update
:
Откройте файл online/model-1/onlinescoring/score.py.
Измените последнюю строку функции init()
: после logging.info("Init complete")
добавьте logging.info("Updated successfully")
.
Сохраните файл.
Выполните следующую команду:
az ml online-deployment update -n blue --endpoint $ENDPOINT_NAME -f endpoints/online/managed/sample/blue-deployment-with-registered-assets.yml
Примечание.
Обновление с помощью YAML является декларативным. Это означает, что изменения в YAML отражаются в базовых ресурсах Azure Resource Manager (конечных точках и развертываниях). В декларативном подходе упрощается использование GitOps: все изменения конечных точек и развертываний (даже instance_count
) проходят через YAML.
Совет
- Вы можете использовать универсальные параметры обновления, такие как
--set
параметр, с помощью команды CLI update
для переопределения атрибутов в YAML или для задания определенных атрибутов, не передавая их в YAML-файл. Использовать --set
для отдельных атрибутов особенно удобно в сценариях разработки и тестирования. Например, чтобы увеличить значение instance_count
для первого развертывания, можно использовать флаг --set instance_count=2
. Однако поскольку YAML не обновляется, этот метод не упрощает процесс GitOps.
- Указание ФАЙЛА YAML не является обязательным. Например, если вы хотите протестировать различные параметры параллелизма для данного развертывания, можно попробовать что-то подобное
az ml online-deployment update -n blue -e my-endpoint --set request_settings.max_concurrent_requests_per_instance=4 environment_variables.WORKER_COUNT=4
. Это позволит сохранить всю существующую конфигурацию, но обновить только указанные параметры.
Так как вы изменили init()
функцию, которая выполняется при создании или обновлении конечной точки, сообщение Updated successfully
будет находиться в журналах. Чтобы получить журналы, выполните следующую команду:
az ml online-deployment get-logs --name blue --endpoint $ENDPOINT_NAME
Команда update
также работает с локальными развертываниями. Используйте такую же команду az ml online-deployment update
с флагом --local
.
Если вы хотите обновить код, модель или среду, обновите конфигурацию, а затем запустите MLClient
online_deployments.begin_create_or_update
метод для создания или обновления развертывания.
Примечание.
При обновлении количества экземпляров (для масштабирования развертывания) вместе с другими параметрами модели (например, кодом, моделью или средой) в одном begin_create_or_update
методе сначала будет выполнена операция масштабирования, а затем будут применены другие обновления. Рекомендуется выполнять эти операции отдельно в рабочей среде.
Чтобы понять, как работает команда begin_create_or_update
:
Откройте файл online/model-1/onlinescoring/score.py.
Измените последнюю строку функции init()
: после logging.info("Init complete")
добавьте logging.info("Updated successfully")
.
Сохраните файл.
Выполните метод :
ml_client.online_deployments.begin_create_or_update(blue_deployment_with_registered_assets)
Так как вы изменили init()
функцию, которая выполняется при создании или обновлении конечной точки, сообщение Updated successfully
будет находиться в журналах. Чтобы получить журналы, выполните следующую команду:
ml_client.online_deployments.get_logs(
name="blue", endpoint_name=endpoint_name, lines=50
)
Этот begin_create_or_update
метод также работает с локальными развертываниями. Используйте тот же метод с флагом local=True
.
В настоящее время студия позволяет обновлять только число экземпляров развертывания. Используйте следующие инструкции, чтобы изменять масштаб отдельного развертывания, настраивая количество экземпляров.
- Откройте страницу сведений о конечной точке и найдите карточку для развертывания, которую вы хотите обновить.
- Щелкните значок редактирования (значок карандаша) рядом с именем развертывания.
- Обновите число экземпляров, связанное с развертыванием. Вы можете выбрать вариант " Использование по умолчанию " или "Целевое использование " для типа масштабирования развертывания.
- Если вы выберете по умолчанию, вы также можете указать числовое значение для количества экземпляров.
- При выборе целевого использования можно указать значения, используемые для параметров при автомасштабировании развертывания.
- Выберите "Обновить" , чтобы завершить обновление счетчиков экземпляров для развертывания.
В настоящее время нет возможности обновить развертывание с помощью шаблона ARM.
Примечание.
Обновление развертывания в этом разделе является примером последовательного обновления на месте.
- Для управляемой онлайн-конечной точки развертывание обновляется до новой конфигурации, изменяя по 20% узлов за раз. То есть, если развертывание содержит 10 узлов, одновременно обновляются 2 узла.
- Для конечной точки Kubernetes online система итеративно создает новый экземпляр развертывания с новой конфигурацией и удаляет старый.
- Для использования в рабочей среде следует учитывать сине-зеленое развертывание, которое предлагает более безопасную альтернативу обновлению веб-службы.
Благодаря автомасштабированию автоматически запускается именно тот объем ресурсов, который нужен для обработки нагрузки в вашем приложении. Управляемые сетевые конечные точки поддерживают автоматическое масштабирование через интеграцию с функцией автомасштабирования Azure Monitor. Сведения о настройке автомасштабирования см. в разделе Автомасштабирование сетевых конечных точек.
(Необязательно) Мониторинг соглашения об уровне обслуживания с помощью Azure Monitor
Чтобы просмотреть метрики и настроить оповещения на основе соглашения об уровне обслуживания, выполните действия, описанные в статье Мониторинг сетевых конечных точек.
(Необязательно) Интеграция с Log Analytics
Команда get-logs
для интерфейса командной строки или метод get_logs
для SDK выводит только последние несколько сотен строк журналов из автоматически выбранной инстанции. Однако Log Analytics позволяет надежно хранить и анализировать журналы. Дополнительные сведения об использовании ведения журнала см. в разделе "Мониторинг сетевых конечных точек".
Удалите конечную точку и развертывание
Удалите конечную точку и все его базовые развертывания:
az ml online-endpoint delete --name $ENDPOINT_NAME --yes --no-wait
Удалите конечную точку и все связанные с ней развертывания.
ml_client.online_endpoints.begin_delete(name=endpoint_name)
Если вы не собираетесь использовать конечную точку и развертывание, удалите их. При удалении конечной точки также удаляются все базовые развертывания.
- Перейдите в Студию машинного обучения Azure.
- На панели навигации слева выберите Конечные точки.
- Выберите конечную точку, щелкнув кружок рядом с именем модели.
- Выберите команду Удалить.
Кроме того, можно удалить управляемую конечную точку в Сети напрямую, щелкнув значок "Удалить" на странице сведений о конечной точке.
Удалите конечную точку и все его базовые развертывания:
az ml online-endpoint delete --name $ENDPOINT_NAME --yes --no-wait
Связанный контент