Поделиться через


Развертывание и оценка модели машинного обучения с помощью сетевой конечной точки

ОБЛАСТЬ ПРИМЕНЕНИЯ:Расширение машинного обучения 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 на локальном компьютере. Настоятельно рекомендуем использовать этот вариант, чтобы упростить отладку.

  • Убедитесь, что для развертывания достаточно квоты виртуальных машин. Машинное обучение 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.shcli каталоге, а файлы конфигурации YAML находятся в подкаталоге endpoints/online/managed/sample/ .

Примечание.

Файлы конфигурации YAML для конечных точек Kubernetes в сети находятся в подкаталоге endpoints/online/kubernetes/ .

Определение конечной точки

Чтобы определить конечную точку в Сети, укажите имя конечной точки и режим проверки подлинности. Дополнительные сведения об управляемых сетевых конечных точках см. в статье "Сетевые конечные точки".

Установите имя конечной точки

Чтобы задать имя конечной точки, выполните следующую команду. Замените 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 (предварительная версия).
Дополнительные сведения о проверке подлинности см. в статье "Проверка подлинности клиентов для сетевых конечных точек".

Определение развертывания

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

  1. Создайте и присоедините кластер Kubernetes в качестве целевого объекта вычислений к рабочей области Машинного обучения Azure с помощью студии машинного обучения Azure.
  2. Используйте YAML конечной точки для целевого объекта Kubernetes, а не управляемой конечной точки YAML. Необходимо отредактировать YAML, чтобы изменить значение compute на имя вашего зарегистрированного целевого компьютера. Вы можете использовать deployment.yaml, который содержит дополнительные свойства, применимые к развертыванию в Kubernetes.

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

Понять скрипт оценки

Совет

Для сетевых конечных точек используется тот же формат скрипта оценки, что и в более ранних версиях CLI и в пакете SDK для Python.

Скрипт оценки, указанный в code_configuration.scoring_script, должен иметь функцию init() и функцию run().

В этом примере используется файл 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

Теперь создайте развертывание с именем blue в конечной точке.

az ml online-deployment create --local -n blue --endpoint $ENDPOINT_NAME -f endpoints/online/managed/sample/blue-deployment.yml

Флаг --local инструктирует CLI развернуть конечную точку в среде Docker.

Совет

Используйте Visual Studio Code для локального тестирования и отладки конечных точек. Дополнительные сведения см. в разделе Локальная отладка сетевых конечных точек в Visual Studio Code.

Убедитесь, что локальное развертывание выполнено успешно

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

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": {}
}

В следующей таблице приведены возможные значения для 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 в возвращенных данных.

Проверьте журналы на результаты операции вызова.

В примере файла score.py метод run() выводит некоторые выходные данные в консоли.

Эти выходные get-logs данные можно просмотреть с помощью команды:

az ml online-deployment get-logs --local -n blue --endpoint $ENDPOINT_NAME

Развертывание сетевой конечной точки в 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.

  1. Создайте определение YAML для модели:

    $schema: https://azuremlschemas.azureedge.net/latest/model.schema.json
    name: my-model
    path: ../../model-1/model/
    
  2. Зарегистрируйте модель:

    az ml model create -n my-model -v 1 -f ./model.yaml
    
  3. Создайте определение 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
    
  4. Зарегистрируйте среду:

    az ml environment create -n my-env -v 1 -f ./environment.yaml
    

Дополнительные сведения о регистрации модели в качестве ресурса см. в разделе "Регистрация модели в качестве ресурса" в Машинное обучение с помощью интерфейса командной строки. Дополнительные сведения о создании среды см. в статье "Управление средами Машинное обучение Azure с помощью ИНТЕРФЕЙСА командной строки и пакета SDK (версия 2)".

Внимание

При определении пользовательской среды для развертывания убедитесь, что этот пакет 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

Используйте различные типы экземпляров ЦП и 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".

Теперь разверните онлайн конечную точку в Azure.

Развернуть в Azure

  1. Создайте конечную точку в облаке Azure.

    az ml online-endpoint create --name $ENDPOINT_NAME -f endpoints/online/managed/sample/endpoint.yml
    
  2. Создайте развертывание с именем 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".

Для отладки ошибок в развертывании см. статью "Устранение неполадок в развертывании конечных точек онлайн".

Проверка состояния конечной точки

  1. Используйте команду show для отображения информации в provisioning_state для конечной точки и развертывания.

    az ml online-endpoint show -n $ENDPOINT_NAME
    
  2. Вывод списка всех конечных точек в рабочей области в формате таблицы с помощью list команды:

    az ml online-endpoint list --output table
    

Проверка онлайн-состояния развертывания

Проверьте журналы, чтобы узнать, была ли модель развернута без ошибок.

  1. Чтобы просмотреть выходные данные журнала из контейнера, используйте следующую команду CLI:

    az ml online-deployment get-logs --name blue --endpoint $ENDPOINT_NAME
    

    По умолчанию журналы извлекаются из контейнера сервера вывода информации. Чтобы просмотреть журналы из контейнера инициализатора хранилища, добавьте --container storage-initializer флаг. Дополнительные сведения о журналах развертывания см. в разделе "Получение журналов контейнеров".

Вызов конечной точки для оценки данных с помощью модели

  1. Используйте команду invoke или клиент REST на ваш выбор, чтобы вызвать конечную точку и обработать некоторые данные.

    az ml online-endpoint invoke --name $ENDPOINT_NAME --request-file endpoints/online/model-1/sample-request.json
    
  2. Получите ключ, используемый для проверки подлинности в конечной точке:

    Совет

    Вы можете контролировать, какие субъекты безопасности 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)
    
  3. Используйте 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".

  4. Чтобы просмотреть журналы вызовов, снова введите команду get-logs.

(Необязательно) Обновите развертывание

Если вы хотите обновить код, модель, среду или параметры масштабирования, обновите файл YAML и введите команду az ml online-endpoint update.

Примечание.

При обновлении количества экземпляров (для масштабирования развертывания) вместе с другими параметрами модели (например, кодом, моделью или средой) в одной update команде сначала будет выполнена операция масштабирования, а затем будут применены другие обновления. Рекомендуется выполнять эти операции отдельно в рабочей среде.

Чтобы понять, как работает команда update:

  1. Откройте файл online/model-1/onlinescoring/score.py.

  2. Измените последнюю строку функции init(): после logging.info("Init complete") добавьте logging.info("Updated successfully").

  3. Сохраните файл.

  4. Выполните следующую команду:

    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. Это позволит сохранить всю существующую конфигурацию, но обновить только указанные параметры.
  5. Так как вы изменили init() функцию, которая выполняется при создании или обновлении конечной точки, сообщение Updated successfully будет находиться в журналах. Чтобы получить журналы, выполните следующую команду:

    az ml online-deployment get-logs --name blue --endpoint $ENDPOINT_NAME
    

Команда update также работает с локальными развертываниями. Используйте такую же команду az ml online-deployment update с флагом --local.

Примечание.

Обновление развертывания в этом разделе является примером последовательного обновления на месте.

  • Для управляемой онлайн-конечной точки развертывание обновляется до новой конфигурации, изменяя по 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