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


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

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

  • Убедитесь, что для развертывания достаточно квоты виртуальных машин. Машинное обучение 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/ .

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

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

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

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

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

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

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

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

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

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

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

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

Теперь создайте развертывание с именем 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:

значение Описание
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 в возвращенных данных.

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

В примере файла 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.

Для регистрации можно извлечь определения model YAML и environment в отдельные файлы YAML в конечной точке, в сети, управляемой или образцеaz ml model create папки, а также использовать команды и az ml environment create. Чтобы узнать больше об этих командах, выполните команду az ml model create -h и az ml environment create -h.

  1. Создайте определение YAML для модели. Назовите файл model.yml:

    $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 endpoints/online/managed/sample/model.yml
    
  3. Создайте определение 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
    
  4. Зарегистрируйте среду:

    az ml environment create -n my-env -v 1 -f endpoints/online/managed/sample/environment.yml
    

Дополнительные сведения о регистрации модели в качестве ресурса см. в разделе "Регистрация модели" с помощью Azure CLI или пакета SDK для Python. Дополнительные сведения о создании среды см. в разделе "Создание настраиваемой среды".

Внимание

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

Используйте различные типы экземпляров ЦП и GPU, а также образы.

Вы можете указать типы экземпляров центрального процессора или GPU и образы в определении развертывания как для локального развертывания, так и для развертывания в Azure.

Определение развертывания в файле blue-deployment-with-registered-assets.yml использовал экземпляр типа Standard_DS3_v2 общего назначения и образ mcr.microsoft.com/azureml/openmpi4.1.0-ubuntu20.04:latestDocker, отличный от GPU. Для вычислений GPU выберите версию вычислительного типа 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
    

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

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

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

    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 отражаются в базовых ресурсах 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

Чтобы просмотреть метрики и задать оповещения на основе SLA, выполните действия, описанные в разделе "Мониторинг сетевых конечных точек".

(Необязательно) Интеграция с Log Analytics

Команда get-logs для интерфейса командной строки или метод get_logs пакета SDK предоставляет только последние несколько сот строк журналов из автоматически определенного экземпляра. Однако Log Analytics позволяет надежно хранить и анализировать журналы. Дополнительные сведения об использовании ведения журнала см. в разделе "Использование журналов".

Удалите конечную точку и развертывание

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

az ml online-endpoint delete --name $ENDPOINT_NAME --yes --no-wait