ОБЛАСТЬ ПРИМЕНЕНИЯ:
Расширение машинного обучения Azure CLI v2 (текущая версия)
Python SDK azure-ai-ml v2 (текущая версия)
В этой статье вы узнаете, как развернуть модель в онлайн-конечной точке для использования в режиме реального времени вывода. Начните с развертывания модели на локальном компьютере для отладки любых ошибок. Затем вы развертываете и тестируете модель в Azure, просматриваете журналы развертывания и отслеживаете соглашение об уровне обслуживания (SLA). В конце этой статьи у вас есть масштабируемая конечная точка HTTPS/REST, которую можно использовать для вывода в режиме реального времени.
Сетевые конечные точки — это конечные точки, используемые для вывода в режиме реального времени. Существует два типа сетевых конечных точек: управляемые сетевые конечные точки и сетевые конечные точки Kubernetes. Дополнительные сведения о различиях см. в статье об управляемых сетевых конечных точках и веб-точках Kubernetes.
Управляемые подключенные конечные точки помогают развертывать модели машинного обучения в комплексном режиме. Управляемые сетевые конечные точки работают с мощными машинами ЦП и GPU в Azure масштабируемым и полностью управляемым образом. Управляемые сетевые конечные точки заботятся о обслуживании, масштабировании, защите и мониторинге моделей. Эта помощь освобождает вас от затрат на настройку базовой инфраструктуры и управление ею.
Основной пример в этой статье использует управляемые сетевые конечные точки для развертывания. Чтобы использовать Kubernetes, ознакомьтесь с заметками в этом документе, которые соответствуют обсуждению управляемой сетевой конечной точки.
Предварительные условия
ПРИМЕНЯЕТСЯ К:
расширение Azure CLI для машинного обучения версии 2 (текущая)
Управление доступом на основе ролей Azure (Azure RBAC) используется для предоставления доступа к операциям в Машинном обучении Azure. Чтобы выполнить шаги, описанные в этой статье, вашей учетной записи должна быть назначена роль владельца или участника рабочей области машинного обучения Azure, или пользовательская роль должна позволять это Microsoft.MachineLearningServices/workspaces/onlineEndpoints/*
. Если вы используете Студию машинного обучения Azure для создания конечных точек или развертываний в Сети и управления ими, вам потребуется дополнительное разрешение Microsoft.Resources/deployments/write
владельца группы ресурсов. Дополнительные сведения см. в статье "Управление доступом к рабочим областям Azure машинного обучения".
(Необязательно) Для локального развертывания необходимо установить подсистему Docker на локальном компьютере. Мы настоятельно рекомендуем этот параметр, что упрощает отладку проблем.
ОБЛАСТЬ ПРИМЕНЕНИЯ:
Пакет SDK для Python azure-ai-ml версии 2 (current)
Рабочая область Машинного обучения Azure. Инструкции по созданию рабочей области см. в разделе "Создание рабочей области".
Пакет SDK машинного обучения Azure для Python версии 2. Чтобы установить пакет SDK, используйте следующую команду:
pip install azure-ai-ml azure-identity
Чтобы обновить существующую установку пакета SDK до последней версии, выполните следующую команду:
pip install --upgrade azure-ai-ml azure-identity
Для получения дополнительной информации см. библиотеку клиента пакета Azure Machine Learning для Python.
Azure RBAC используется для предоставления доступа к операциям в Машинном обучении Azure. Чтобы выполнить действия, описанные в этой статье, вашей учетной записи пользователя должна быть присвоена роль владельца или участника для пространства машинного обучения Azure, или пользовательская роль должна предоставлять доступ Microsoft.MachineLearningServices/workspaces/onlineEndpoints/*
. Дополнительные сведения см. в статье "Управление доступом к рабочим областям Azure машинного обучения".
(Необязательно) Для локального развертывания необходимо установить подсистему Docker на локальном компьютере. Мы настоятельно рекомендуем этот параметр, что упрощает отладку проблем.
Прежде чем выполнить действия, описанные в этой статье, убедитесь, что у вас есть следующие предварительные требования:
Расширение Azure CLI и CLI для машинного обучения используются в этих шагах, но они не являются основным фокусом. Они используются больше в качестве служебных программ для передачи шаблонов в Azure и проверки состояния развертываний шаблонов.
- Azure RBAC используется для предоставления доступа к операциям в Машинном обучении Azure. Чтобы выполнить действия, описанные в этой статье, учетной записи пользователя должна быть назначена роль Владельца или Участника для Azure Machine Learning пространства, или пользовательская роль должна это разрешать
Microsoft.MachineLearningServices/workspaces/onlineEndpoints/*
. Дополнительные сведения см. в статье Управление доступом к рабочей области Машинного обучения Azure.
Убедитесь, что для развертывания достаточно квоты виртуальных машин. Машинное обучение Azure резервирует 20% вычислительных ресурсов для выполнения обновлений на некоторых версиях виртуальных машин. Например, если вы запрашиваете 10 экземпляров в развертывании, необходимо иметь квоту 12 для каждого числа ядер для версии виртуальной машины. Ошибка при учете дополнительных вычислительных ресурсов приводит к ошибке. Некоторые версии виртуальных машин исключены из дополнительного резервирования квот. Дополнительные сведения о выделении квот см. в статье о выделении квот виртуальной машины для развертывания.
Кроме того, можно использовать квоту из общего пула квот Машинного обучения Azure в течение ограниченного времени. Машинное обучение 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, затем перейдите в каталог azureml-examples/cli:
git clone --depth 1 https://github.com/Azure/azureml-examples
cd azureml-examples/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 directory:
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. В этом примере используется проверка подлинности Azure по умолчанию.
# enter details of your Azure Machine Learning workspace
subscription_id = "<subscription ID>"
resource_group = "<resource group>"
workspace = "<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
для клонирования только последнего коммита в репозиторий, что сокращает время выполнения операции.
Скачивание файлов из репозитория примеров
Если вы клонировали репозиторий примеров, локальный компьютер уже имеет копии файлов для этого примера, и вы можете перейти к следующему разделу. Если вы не клонируйте репозиторий, скачайте его на локальный компьютер.
- Перейдите в репозиторий примеров (azureml-examples).
- Перейдите к кнопке <> "Код " на странице, а затем на вкладке "Локальный " нажмите кнопку "Скачать ZIP".
- Найдите папку /cli/endpoints/online/model-1/model и файл /cli/endpoints/online/model-1/onlinescoring/score.py.
Настройка переменных среды
Задайте следующие переменные среды, чтобы их можно было использовать в примерах в этой статье. Замените значения идентификатором подписки Azure, регионом Azure, где находится ваша рабочая область, группа ресурсов, содержащая рабочую область, и имя рабочей области:
export SUBSCRIPTION_ID="<subscription ID>"
export LOCATION="<your region>"
export RESOURCE_GROUP="<resource group>"
export WORKSPACE="<workspace name>"
Пара примеров шаблонов требует загрузки файлов в хранилище BLOB-объектов Azure для вашей рабочей области. Следующие действия запрашивают рабочую область и хранят эти сведения в переменных среды, используемых в примерах:
Получение токена доступа:
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, а затем перейдите в каталог azureml-examples :
git clone --depth 1 https://github.com/Azure/azureml-examples
cd azureml-examples
Используйте --depth 1
для клонирования только последнего коммита в репозиторий, что сокращает время выполнения операции.
Определение конечной точки
Чтобы определить конечную точку в Сети, укажите имя конечной точки и режим проверки подлинности. Дополнительные сведения об управляемых сетевых конечных точках см. в статье "Сетевые конечные точки".
Установите имя конечной точки
Чтобы задать имя конечной точки, выполните следующую команду. Замените <YOUR_ENDPOINT_NAME>
на имя, уникальное в регионе Azure. Дополнительные сведения о правилах именования см. в разделе "Ограничения конечной точки".
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 для веб-конечной точки. Сведения об ограничениях, связанных с управляемыми конечными точками, см. в разделе «Конечные точки в режиме онлайн и пакетные конечные точки в Azure Machine Learning».
Ключ. |
Описание |
$schema |
(Необязательно) Схема YAML. Чтобы просмотреть все доступные параметры в ФАЙЛЕ YAML, можно просмотреть схему в предыдущем фрагменте кода в браузере. |
name |
Имя конечной точки. |
auth_mode |
Используйте key для аутентификации на основе ключей. Используйте aml_token для аутентификации в службе Машинное обучение Azure на основе токенов. Используйте aad_token для аутентификации на основе токенов Microsoft Entra (предварительная версия). Дополнительные сведения о проверке подлинности см. в статье "Проверка подлинности клиентов для сетевых конечных точек". |
Сначала определите имя сетевой конечной точки, а затем настройте конечную точку.
Замените <YOUR_ENDPOINT_NAME>
на имя, уникальное в регионе Azure, или используйте пример метода для определения случайного имени. Не забудьте удалить метод, который вы не используете. Дополнительные сведения о правилах именования см. в разделе "Ограничения конечной точки".
# method 1: define an endpoint name
endpoint_name = "<YOUR_ENDPOINT_NAME>"
# method 2: 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 из студии создается конечная точка и развертывание для его добавления. В этот момент вам предложат указать имена конечной точки и развертывания.
Установите имя конечной точки
Чтобы задать имя конечной точки, выполните следующую команду, чтобы создать случайное имя. Оно должно быть уникальным в рамках региона Azure. Дополнительные сведения о правилах именования см. в разделе "Ограничения конечной точки".
export ENDPOINT_NAME=endpoint-`echo $RANDOM`
Чтобы определить конечную точку и развертывание, в этой статье используются шаблоны Azure Resource Manager (шаблоны ARM) online-endpoint.json и online-endpoint-deployment.json. Сведения об использовании шаблонов для определения виртуальной конечной точки и развертывания см. в разделе "Развертывание в Azure ".
Определение развертывания
Развертывание представляет собой набор ресурсов, необходимых для размещения модели, которая выполняет процесс вывода. В этом примере вы развертываете scikit-learn
модель, которая выполняет регрессию, и используете скрипт оценки score.py для запуска модели в определенном запросе ввода.
Дополнительные сведения о ключевых атрибутах развертывания см. в разделе "Сетевые развертывания".
Конфигурация развертывания использует расположение модели, которую требуется развернуть.
В следующем фрагменте показан файл endpoints/online/managed/sample/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 endpoint для работы с Kubernetes вместо управляемого YAML endpoint. Необходимо отредактировать 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-объектов, а затем зарегистрировать его:
Следующий код использует команду 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 из репозитория, клонированного или скачаного ранее:
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 и пакет SDK Python поддерживают локальные конечные точки и развертывания, но студия машинного обучения Azure и шаблоны ARM — нет.
Для локального развертывания подсистема Docker должна быть установлена и запущена. Как правило, подсистема Docker запускается при включении компьютера. Если нет, вы можете устранить неполадки Docker Engine.
Пакет Python сервера машинного обучения Azure можно использовать для локальной отладки скрипта оценки без подсистемы Docker. Отладка с помощью сервера вывода помогает выполнить отладку скрипта оценки перед развертыванием на локальных конечных точках, чтобы можно было выполнить отладку без влияния на конфигурации контейнера развертывания.
Дополнительные сведения об отладке сетевых конечных точек локально перед развертыванием в Azure см. в статье отладка конечной точки Online.
Локальное развертывание модели
Сначала создайте конечную точку. При необходимости для локальной конечной точки можно пропустить этот шаг. Вы можете создать развертывание непосредственно (следующий шаг), который, в свою очередь, создает необходимые метаданные. Развертывание моделей локально полезно для разработки и тестирования.
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
:
значение |
Описание |
Creating |
Ресурс создается. |
Updating |
Ресурс обновляется. |
Deleting |
Ресурс удаляется. |
Succeeded |
Операция создания или обновления выполнена успешно. |
Failed |
Сбой операции создания, обновления или удаления. |
Вызов локальной конечной точки для оценки данных с помощью модели
Вызовите конечную точку для оценки модели с помощью 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
.
Для регистрации можно извлечь определения model
YAML и environment
в отдельные файлы YAML в конечной точке, в сети, управляемой или образцеaz ml model create
папки, а также использовать команды и az ml environment create
. Чтобы узнать больше об этих командах, выполните команду az ml model create -h
и az ml environment create -h
.
Создайте определение YAML для модели. Назовите файл model.yml:
$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 endpoints/online/managed/sample/model.yml
Создайте определение YAML для среды. Назовите файл environment.yml:
$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 endpoints/online/managed/sample/environment.yml
Дополнительные сведения о регистрации модели в качестве ресурса см. в разделе "Регистрация модели" с помощью Azure CLI или пакета SDK для Python. Дополнительные сведения о создании среды см. в разделе "Создание настраиваемой среды".
Зарегистрируйте модель:
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)
Чтобы узнать, как зарегистрировать модель в качестве ресурса, чтобы указать зарегистрированное имя и версию во время развертывания, см. статью "Регистрация модели" с помощью Azure CLI или пакета SDK для Python.
Дополнительные сведения о создании среды см. в разделе "Создание настраиваемой среды".
Регистрация модели.
Регистрация модели — это логическая сущность в рабочей области, которая может содержать один файл модели или каталог нескольких файлов. Рекомендуется зарегистрировать модель и среду в рабочей среде. Перед созданием конечной точки и развертывания в этой статье зарегистрируйте папку модели , содержащую модель.
Чтобы зарегистрировать пример модели, выполните следующие действия.
Перейдите к Студия машинного обучения 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-объектов. В следующем примере используется команда 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
). Эти курируемые среды можно найти на вкладке "Среды " экземпляра студии машинного обучения Azure.
Конфигурация развертывания использует зарегистрированную модель, которую вы хотите развернуть, и зарегистрированную среду.
Используйте зарегистрированные ресурсы (модель и среда) в определении развертывания. В следующем фрагменте показан файл endpoints/online/managed/sample/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
общего назначения и образ mcr.microsoft.com/azureml/openmpi4.1.0-ubuntu20.04:latest
Docker, отличный от GPU. Для вычислений GPU выберите версию вычислительного типа GPU и образ Docker GPU.
Поддерживаемые типы экземпляров общего назначения и GPU см. в списке SKU управляемых сетевых конечных точек. Список базовых образов ЦП и GPU для Машинного обучения Azure см. на странице базовых образов Машинного обучения Azure.
Вы можете указать типы экземпляров CPU или GPU и образы в конфигурации развертывания как для локального развертывания, так и для развертывания на Azure.
Ранее вы настроили развертывание, которое использовало экземпляр общего назначения Standard_DS3_v2
и образ Docker, не использующий GPU mcr.microsoft.com/azureml/openmpi4.1.0-ubuntu20.04:latest
. Для вычислений GPU выберите версию вычислительного типа GPU и образ Docker GPU.
Поддерживаемые типы экземпляров общего назначения и GPU см. в списке SKU управляемых сетевых конечных точек. Список базовых образов ЦП и GPU для Машинного обучения Azure см. на странице базовых образов Машинного обучения Azure.
Предыдущая регистрация среды указывает образ Docker, отличный от GPU, передав значение в шаблон mcr.microsoft.com/azureml/openmpi3.1.2-ubuntu18.04
environment-version.json с помощью dockerImage
параметра. Для вычислений GPU укажите значение для образа Docker GPU для шаблона (используйте dockerImage
параметр) и укажите версию 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".
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 отражаются в базовых ресурсах 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
.
На данный момент вы можете обновлять только число экземпляров развертывания. Используйте следующие инструкции, чтобы изменять масштаб отдельного развертывания, настраивая количество экземпляров.
- Откройте страницу сведений о конечной точке и найдите карточку для развертывания, которое требуется обновить.
- Щелкните значок редактирования (значок карандаша) рядом с именем развертывания.
- Обновите число экземпляров, связанное с развертыванием. Выберите параметр "Использование по умолчанию " или " Целевое использование " для типа масштабирования развертывания.
- Если выбран параметр Default, можно также указать числовое значение для счетчика экземпляров.
- При выборе целевого использования можно указать значения, используемые для параметров при автомасштабировании развертывания.
- Выберите "Обновить" , чтобы завершить обновление счетчиков экземпляров для развертывания.
В настоящее время нет возможности обновить развертывание с помощью шаблона ARM.
Примечание.
Обновление развертывания в этом разделе является примером последовательного обновления на месте.
- Для управляемой сетевой конечной точки развертывание обновляется до новой конфигурации, при этом одновременно изменяется конфигурация у 20% узлов. То есть, если развертывание содержит 10 узлов, одновременно обновляются 2 узла.
- Для конечной точки Kubernetes online система итеративно создает новый экземпляр развертывания с новой конфигурацией и удаляет старый.
- Для использования в рабочей среде рекомендуется использовать сине-зеленое развертывание, которое предлагает более безопасную альтернативу обновлению веб-службы.
Благодаря автомасштабированию автоматически запускается именно тот объем ресурсов, который нужен для обработки нагрузки в вашем приложении. Управляемые сетевые конечные точки поддерживают автомасштабирование с помощью интеграции с функцией автомасштабирования Azure Monitor. Сведения о настройке автомасштабирования см. в разделе "Автомасштабирование сетевых конечных точек".
(Необязательно) Мониторинг соглашения об уровне обслуживания с помощью Azure Monitor
Чтобы просмотреть метрики и задать оповещения на основе SLA, выполните действия, описанные в разделе "Мониторинг сетевых конечных точек".
(Необязательно) Интеграция с 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
Связанный контент