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


Локальное развертывание модели

Узнайте, как использовать машинное обучение Azure для развертывания модели в виде веб-службы на вашем вычислительном экземпляре машинного обучения Azure. Используйте вычислительные экземпляры, если:

  • вам важно быстро выполнять развертывание и проверку модели.
  • вы тестируете модель, которая находится в стадии разработки.

Совет

Развертывание модели из Jupyter Notebook на вычислительном экземпляре в виде веб-службы на той же виртуальной машине называется локальным. В этом случае вычислительным экземпляром является локальный компьютер.

Примечание.

Машинное обучение Azure Конечные точки (версия 2) обеспечивают улучшенный и простой интерфейс развертывания. Они поддерживают сценарии развертывания как в режиме реального времени, так и при использовании пакетного вывода. Конечные точки служат единым интерфейсом для вызова развертывания моделей и управления ими в вычислительных ресурсах разных типов. См. раздел "Что такое конечные точки Машинное обучение Azure?".

Необходимые компоненты

Развертывание на вычислительных экземплярах

Ваш вычислительный экземпляр содержит пример записной книжки для демонстрации локальных развертываний. Чтобы загрузить записную книжку и развернуть модель в виде веб-службы на виртуальной машине, сделайте следующее:

  1. В студии машинного обучения Azure выберите "Записные книжки", а затем в разделе "Примеры записных книжек" выберите файл how-to-use-azureml/deployment/deploy-to-local/register-model-deploy-local.ipynb. Клонируйте эту записную книжку в свою пользовательскую папку.

  2. Найдите записную книжку, клонированную на шаге 1, затем выберите или создайте вычислительный экземпляр для запуска записной книжки.

    Снимок экрана: запущенная в записной книжке локальная служба

  3. Записная книжка отображает URL-адрес и порт, используемые для запуска службы. Например, https://localhost:6789. Чтобы отобразить порт, вы также можете запустить ячейку, содержащую print('Local service port: {}'.format(local_service.port)).

    Снимок экрана: порт запущенной локальной службы

  4. Чтобы протестировать службу из вычислительного экземпляра, используйте URL-адрес https://localhost:<local_service.port>. Для тестирования из удаленного клиента получите общедоступный URL-адрес службы, выполняющейся на вычислительном экземпляре. Общедоступный URL-адрес можно определить по следующей формуле:

    • Виртуальная машина для записных книжек: https://<vm_name>-<local_service_port>.<azure_region_of_workspace>.notebooks.azureml.net/score.
    • Вычислительный экземпляр: https://<vm_name>-<local_service_port>.<azure_region_of_workspace>.instances.azureml.net/score.

    Например,

    • Виртуальная машина для записных книжек: https://vm-name-6789.northcentralus.notebooks.azureml.net/score
    • Вычислительный экземпляр: https://vm-name-6789.northcentralus.instances.azureml.net/score

Тестирование службы

Чтобы отправить выборку данных в запущенную службу, используйте показанный ниже код. Вместо значения service_url укажите URL-адрес из предыдущего действия.

Примечание.

При проверке подлинности в развертывании в вычислительном экземпляре проверка подлинности выполняется с помощью идентификатора Microsoft Entra. Вызов interactive_auth.get_authentication_header() в примере кода проходит проверку подлинности с помощью идентификатора Microsoft Entra и возвращает заголовок, который затем можно использовать для проверки подлинности в службе в вычислительном экземпляре. Дополнительные сведения см. в статье Настройка проверки подлинности ресурсов и рабочих процессов Машинного обучения Azure.

Для проверки подлинности в развернутой службе Azure Kubernetes или экземплярах контейнеров Azure используется другой способ. См. статью Настройка проверки подлинности для моделей машинного обучения Azure, развернутых как веб-службы.

import requests
import json
from azureml.core.authentication import InteractiveLoginAuthentication

# Get a token to authenticate to the compute instance from remote
interactive_auth = InteractiveLoginAuthentication()
auth_header = interactive_auth.get_authentication_header()

# Create and submit a request using the auth header
headers = auth_header
# Add content type header
headers.update({'Content-Type':'application/json'})

# Sample data to send to the service
test_sample = json.dumps({'data': [
    [1,2,3,4,5,6,7,8,9,10],
    [10,9,8,7,6,5,4,3,2,1]
]})
test_sample = bytes(test_sample,encoding = 'utf8')

# Replace with the URL for your compute instance, as determined from the previous section
service_url = "https://vm-name-6789.northcentralus.notebooks.azureml.net/score"
# for a compute instance, the url would be https://vm-name-6789.northcentralus.instances.azureml.net/score
resp = requests.post(service_url, test_sample, headers=headers)
print("prediction:", resp.text)

Следующие шаги