Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
ОБЛАСТЬ ПРИМЕНЕНИЯ:Расширение Машинного обучения для Azure CLI версии 1
пакет SDK для Python azureml версии 1
Внимание
В этой статье содержатся сведения об использовании пакета SDK машинного обучения Azure версии 1. Пакет SDK версии 1 не рекомендуется использовать 31 марта 2025 г. и поддержка этого пакета завершится 30 июня 2026 г. Вы можете установить и использовать пакет SDK версии 1 до этой даты.
Рекомендуется перейти на пакет SDK версии 2 до 30 июня 2026 г. Дополнительные сведения о пакете SDK версии 2 см. в статье "Что такое пакет SDK для Python для Машинного обучения Azure версии 2 " и справочник по пакету SDK версии 2.
Узнайте, как развертывать модель машинного обучения или глубокого обучения в качестве веб-службы в облаке Azure.
Примечание.
Машинное обучение Azure Конечные точки (версия 2) обеспечивают улучшенный и простой интерфейс развертывания. Они поддерживают сценарии развертывания как в режиме реального времени, так и при использовании пакетного вывода. Конечные точки служат единым интерфейсом для вызова развертывания моделей и управления ими в вычислительных ресурсах разных типов. См. раздел "Что такое конечные точки Машинное обучение Azure?".
Рабочий процесс для развертывания модели
Последовательность действий всегда одна и та же, независимо от того, где развертывается модель:
- регистрация модели;
- Подготовка начального сценария.
- Подготовка конфигурации вывода.
- Локальное развертывание модели для проверки работы всех элементов.
- выбор целевого объекта вычислений;
- Развертывание модели в облаке.
- тестирование получившейся веб-службы.
Дополнительные сведения об основных понятиях, связанных с рабочим процессом развертывания машинного обучения, см. в статье Администрирование, развертывание и мониторинг моделей с помощью службы "Машинное обучение Azure".
Необходимые компоненты
ОБЛАСТЬ ПРИМЕНЕНИЯ: расширение машинного обучения Azure CLI версии 1
Внимание
Для использования некоторых команд Azure CLI, приведенных в этой статье, используйте расширение azure-cli-ml
(версия 1) для Машинного обучения Azure. Поддержка расширения версии 1 будет прекращена 30 сентября 2025 г. Вы можете установить и использовать расширение версии 1 до этой даты.
Рекомендуется перейти на расширение ml
(версия 2) до 30 сентября 2025 г. Дополнительные сведения о расширении версии 2 см. в разделе Машинное обучение Azure расширение CLI и пакет SDK для Python версии 2.
- Рабочая область Машинного обучения Azure. Дополнительные сведения см. в разделе Создание ресурсов рабочей области.
- Модель. В примерах этой статьи используется предварительно обученная модель.
- Компьютер, на котором можно запустить Docker, например вычислительный экземпляр.
Подключение к рабочей области
ОБЛАСТЬ ПРИМЕНЕНИЯ: расширение машинного обучения Azure CLI версии 1
Чтобы просмотреть рабочие области, к которым у вас есть доступ, используйте следующие команды:
az login
az account set -s <subscription>
az ml workspace list --resource-group=<resource-group>
Регистрация модели.
В типичном случае при работе с развернутой службой машинного обучения нужны следующие компоненты:
- Ресурсы, представляющие определенную модель, которую требуется развернуть (например, файл модели pytorch).
- Код, выполняющийся в службе и запускающий модель для заданных входных данных.
С помощью Машинного обучения Azure можно разделить развертывание на два отдельных компонента, чтобы использовать один и тот же код, при этом просто обновив модель. Мы определяем механизм отправки модели отдельно от кода как "регистрация модели".
При регистрации модели мы отправляем ее в облако (в учетную запись хранения по умолчанию для вашей рабочей области), а затем подключаем к тому же вычислительному ресурсу, где работает веб-служба.
В следующих примерах показано, как зарегистрировать модель.
Внимание
Следует использовать только те модели, которые вы создали или получили из надежного источника. Сериализованные модели следует рассматривать как код, так как уязвимости безопасности обнаружены во многих популярных форматах. Кроме того, модели могут быть намеренно обучены вредоносным намерением для предоставления ошибочных или неточных выходных данных.
ОБЛАСТЬ ПРИМЕНЕНИЯ: расширение машинного обучения Azure CLI версии 1
Приведенные ниже команды загружают модель и регистрируют ее в рабочей области Машинного обучения Azure:
wget https://aka.ms/bidaf-9-model -O model.onnx --show-progress
az ml model register -n bidaf_onnx \
-p ./model.onnx \
-g <resource-group> \
-w <workspace-name>
Задайте параметр -p
в пути к папке или файлу, которые необходимо зарегистрировать.
Дополнительные сведения о az ml model register
см. в справочной документации.
Регистрация модели из задания обучения Машинное обучение Azure
Если нужно зарегистрировать модель, которая ранее была создана с помощью задания обучения в Машинном обучении Azure, то можно указать название эксперимента, идентификатор запуска и путь до модели:
az ml model register -n bidaf_onnx --asset-path outputs/model.onnx --experiment-name myexperiment --run-id myrunid --tag area=qna
Параметр --asset-path
ссылается на расположение модели в облаке. В этом примере используется путь к одному файлу. Чтобы включить несколько файлов в регистрацию модели, задайте для --asset-path
путь к папке, содержащей файлы.
Дополнительные сведения о az ml model register
см. в справочной документации.
Примечание.
Вы также можете зарегистрировать модель из локального файла с помощью портала пользовательского интерфейса рабочей области.
В настоящее время существует два варианта отправки локального файла модели в пользовательском интерфейсе:
- Из локальных файлов, которые регистрируют модель версии 2.
- Из локальных файлов (на основе фреймворка), регистрируется модель версии 1.
Можно развернуть только модели, зарегистрированные через вход из локальных файлов (на основе платформы), которые называются моделями версии 1, в виде веб-служб с помощью SDKv1/CLIv1.
Определение фиктивного начального сценария
Скрипт входа принимает данные, отправляемые в развернутую веб-службу, и передает их в модель. Затем он возвращает ответ модели клиенту. Этот сценарий относится только к вашей модели. Начальный сценарий оптимизирован для работы с данными, которые получает и возвращает модель.
В начальном сценарии нужно выполнить два следующих действия:
- Загрузка модели (с помощью функции
init()
). - Запуск модели с входными данным (с помощью функции
run()
).
Для первоначального развертывания используйте фиктивный начальный сценарий, который выводит полученные данные.
import json
def init():
print("This is init")
def run(data):
test = json.loads(data)
print(f"received data {test}")
return f"test is {test}"
Сохраните этот файл как echo_score.py
в каталоге source_dir
. Этот фиктивный сценарий возвращает данные, которые вы ему отправляете. Он не использует модель. Но это полезно для тестирования работы скрипта оценки.
Определение конфигурации вывода
Конфигурация вывода описывает контейнер Docker и файлы, используемые при инициализации веб-службы. Все файлы в исходном каталоге, включая вложенные каталоги, архивируются и отправляются в облако при развертывании веб-службы.
Следующая конфигурация вывода указывает, что развертывание машинного обучения использует файл echo_score.py
в ./source_dir
каталоге для обработки входящих запросов и что он использует образ Docker с пакетами Python, указанными в project_environment
среде.
При создании среды проекта вы можете использовать любую Среду, управляемую логическим выводом машинного обучения Azure, в качестве базового образа Docker. Необходимые зависимости устанавливаются сверху. Полученный образ Docker хранится в репозитории, связанном с рабочей областью.
Примечание.
Отправка исходного каталога машинного обучения Azure не учитывает .gitignore или Amlignore
ОБЛАСТЬ ПРИМЕНЕНИЯ: расширение машинного обучения Azure CLI версии 1
Минимальная конфигурация вывода может быть записана следующим образом:
{
"entryScript": "echo_score.py",
"sourceDirectory": "./source_dir",
"environment": {
"docker": {
"arguments": [],
"baseDockerfile": null,
"baseImage": "mcr.microsoft.com/azureml/openmpi3.1.2-ubuntu18.04",
"enabled": false,
"sharedVolumes": true,
"shmSize": null
},
"environmentVariables": {
"EXAMPLE_ENV_VAR": "EXAMPLE_VALUE"
},
"name": "my-deploy-env",
"python": {
"baseCondaEnvironment": null,
"condaDependencies": {
"channels": [],
"dependencies": [
"python=3.6.2",
{
"pip": [
"azureml-defaults"
]
}
],
"name": "project_environment"
},
"condaDependenciesFile": null,
"interpreterPath": "python",
"userManagedDependencies": false
},
"version": "1"
}
}
Сохраните файл под именем dummyinferenceconfig.json
.
Более подробное обсуждение конфигураций вывода см. в этой статье.
Определение конфигурации развертывания
В конфигурации развертывания определяются объем памяти и количество ядер, которые необходимы веб-службе для работы. В ней также указываются сведения о конфигурации базовой веб-службы. Например, конфигурация развертывания позволяет указать, что для службы требуется 2 гигабайт памяти, 2 ядра ЦП, 1 gpu ядра и включает автомасштабирование.
Параметры, доступные для конфигурации развертывания, зависят от выбранного целевого объекта вычислений. В локальном развертывании можно указать, на каком порту предоставляется веб-служба.
ОБЛАСТЬ ПРИМЕНЕНИЯ: расширение машинного обучения Azure CLI версии 1
Записи в документе deploymentconfig.json
соответствуют параметрам для LocalWebservice.deploy_configuration. В следующей таблице описано сопоставление сущностей в документе JSON и параметров метода:
Сущность JSON | Параметр метода | Описание |
---|---|---|
computeType |
Неприменимо | Целевой объект вычислений. Для локальных целевых объектов нужно задать значение local . |
port |
port |
Локальный порт, на который будет предоставляться конечная точка HTTP службы. |
Код JSON — это пример конфигурации развертывания для использования с CLI:
{
"computeType": "local",
"port": 32267
}
Сохраните этот JSON как файл с именем deploymentconfig.json
.
Дополнительные сведения см. в разделе со схемой развертывания.
Развертывание модели машинного обучения
Теперь вы готовы к развертыванию вашей модели.
ОБЛАСТЬ ПРИМЕНЕНИЯ: расширение машинного обучения Azure CLI версии 1
Замените bidaf_onnx:1
названием вашей модели и номером ее версии.
az ml model deploy -n myservice \
-m bidaf_onnx:1 \
--overwrite \
--ic dummyinferenceconfig.json \
--dc deploymentconfig.json \
-g <resource-group> \
-w <workspace-name>
Вызов модели
Проверим, успешно ли развернута модель echo. Вы должны иметь возможность выполнять запрос активности и запрашивать оценку:
ОБЛАСТЬ ПРИМЕНЕНИЯ: расширение машинного обучения Azure CLI версии 1
curl -v http://localhost:32267
curl -v -X POST -H "content-type:application/json" \
-d '{"query": "What color is the fox", "context": "The quick brown fox jumped over the lazy dog."}' \
http://localhost:32267/score
Определение начального сценария
Теперь пора загрузить модель. Сначала изменим начальный сценарий:
import json
import numpy as np
import os
import onnxruntime
from nltk import word_tokenize
import nltk
def init():
nltk.download("punkt")
global sess
sess = onnxruntime.InferenceSession(
os.path.join(os.getenv("AZUREML_MODEL_DIR"), "model.onnx")
)
def run(request):
print(request)
text = json.loads(request)
qw, qc = preprocess(text["query"])
cw, cc = preprocess(text["context"])
# Run inference
test = sess.run(
None,
{"query_word": qw, "query_char": qc, "context_word": cw, "context_char": cc},
)
start = np.asscalar(test[0])
end = np.asscalar(test[1])
ans = [w for w in cw[start : end + 1].reshape(-1)]
print(ans)
return ans
def preprocess(word):
tokens = word_tokenize(word)
# split into lower-case word tokens, in numpy array with shape of (seq, 1)
words = np.asarray([w.lower() for w in tokens]).reshape(-1, 1)
# split words into chars, in numpy array with shape of (seq, 1, 1, 16)
chars = [[c for c in t][:16] for t in tokens]
chars = [cs + [""] * (16 - len(cs)) for cs in chars]
chars = np.asarray(chars).reshape(-1, 1, 1, 16)
return words, chars
Сохраните этот файл под именем score.py
в source_dir
.
Обратите внимание на использование переменной среды AZUREML_MODEL_DIR
для определения места зарегистрированной модели. Теперь мы добавили несколько пакетов pip.
ОБЛАСТЬ ПРИМЕНЕНИЯ: расширение машинного обучения Azure CLI версии 1
{
"entryScript": "score.py",
"sourceDirectory": "./source_dir",
"environment": {
"docker": {
"arguments": [],
"baseDockerfile": null,
"baseImage": "mcr.microsoft.com/azureml/openmpi3.1.2-ubuntu18.04",
"enabled": false,
"sharedVolumes": true,
"shmSize": null
},
"environmentVariables": {
"EXAMPLE_ENV_VAR": "EXAMPLE_VALUE"
},
"name": "my-deploy-env",
"python": {
"baseCondaEnvironment": null,
"condaDependencies": {
"channels": [],
"dependencies": [
"python=3.6.2",
{
"pip": [
"azureml-defaults",
"nltk",
"numpy",
"onnxruntime"
]
}
],
"name": "project_environment"
},
"condaDependenciesFile": null,
"interpreterPath": "python",
"userManagedDependencies": false
},
"version": "2"
}
}
Сохраните этот файл как inferenceconfig.json
.
Повторное развертывание и вызов службы
Снова развернем службу:
ОБЛАСТЬ ПРИМЕНЕНИЯ: расширение машинного обучения Azure CLI версии 1
Замените bidaf_onnx:1
названием вашей модели и номером ее версии.
az ml model deploy -n myservice \
-m bidaf_onnx:1 \
--overwrite \
--ic inferenceconfig.json \
--dc deploymentconfig.json \
-g <resource-group> \
-w <workspace-name>
Теперь проверим, что можем отправить в службу запрос POST:
ОБЛАСТЬ ПРИМЕНЕНИЯ: расширение машинного обучения Azure CLI версии 1
curl -v -X POST -H "content-type:application/json" \
-d '{"query": "What color is the fox", "context": "The quick brown fox jumped over the lazy dog."}' \
http://localhost:32267/score
Выбор целевого объекта вычислений
Целевой объект вычислений, используемый для размещения модели, влияет на стоимость и доступность развернутой конечной точки. Для выбора подходящего целевого объекта вычислений используйте приведенную таблицу.
Целевой объект вычислений | Используется для | Поддержка GPU | Описание |
---|---|---|---|
Локальная веб-служба | Тестирование и отладка | Используется для ограниченного тестирования и устранения неполадок. Аппаратное ускорение зависит от использования библиотек в локальной системе. | |
Kubernetes для Машинного обучения Azure | Вывод в реальном времени | Да | Запустите рабочие нагрузки вывода в облаке. |
Экземпляры контейнеров Azure | Вывод в режиме реального времени Рекомендуется только для разработки и тестирования. |
Используйте для небольших рабочих нагрузок на основе ЦП, которым требуется менее 48 ГБ ОЗУ. Не требует управления кластером. Подходит только для моделей размером менее 1 ГБ. Поддерживается в конструкторе. |
Примечание.
При выборе SKU кластера сначала масштабируйте и масштабируйте. Начните с компьютера с 150% ОЗУ, который требуется для вашей модели, профилируйте результат и найдите компьютер с необходимой производительностью. После этого увеличьте количество компьютеров в соответствии с объемом параллельного вывода.
Примечание.
Машинное обучение Azure Конечные точки (версия 2) обеспечивают улучшенный и простой интерфейс развертывания. Они поддерживают сценарии развертывания как в режиме реального времени, так и при использовании пакетного вывода. Конечные точки служат единым интерфейсом для вызова развертывания моделей и управления ими в вычислительных ресурсах разных типов. См. раздел "Что такое конечные точки Машинное обучение Azure?".
Развертывание в облаке
Убедившись, что служба работает локально и выбрала удаленный целевой объект вычислений, вы будете готовы к развертыванию в облаке.
Изменим конфигурацию развертывания таким образом, чтобы она соответствовала выбранному целевому объекту вычислений (в данном случае — Экземплярам контейнеров Azure):
ОБЛАСТЬ ПРИМЕНЕНИЯ: расширение машинного обучения Azure CLI версии 1
Параметры, доступные для конфигурации развертывания, зависят от выбранного целевого объекта вычислений.
{
"computeType": "aci",
"containerResourceRequirements":
{
"cpu": 0.5,
"memoryInGB": 1.0
},
"authEnabled": true,
"sslEnabled": false,
"appInsightsEnabled": false
}
Сохраните этот файл как re-deploymentconfig.json
.
Дополнительные сведения см. в этом справочнике.
Снова развернем службу:
ОБЛАСТЬ ПРИМЕНЕНИЯ: расширение машинного обучения Azure CLI версии 1
Замените bidaf_onnx:1
названием вашей модели и номером ее версии.
az ml model deploy -n myservice \
-m bidaf_onnx:1 \
--overwrite \
--ic inferenceconfig.json \
--dc re-deploymentconfig.json \
-g <resource-group> \
-w <workspace-name>
Для просмотра журналов службы используйте следующую команду:
az ml service get-logs -n myservice \
-g <resource-group> \
-w <workspace-name>
Вызов удаленной веб-службы
При удаленном развертывании может быть включена проверка подлинности ключа. В примере ниже показано, как получить ключ службы с помощью Python, чтобы выполнить запрос вывода.
import requests
import json
from azureml.core import Webservice
service = Webservice(workspace=ws, name="myservice")
scoring_uri = service.scoring_uri
# If the service is authenticated, set the key or token
key, _ = service.get_keys()
# Set the appropriate headers
headers = {"Content-Type": "application/json"}
headers["Authorization"] = f"Bearer {key}"
# Make the request and display the response and logs
data = {
"query": "What color is the fox",
"context": "The quick brown fox jumped over the lazy dog.",
}
data = json.dumps(data)
resp = requests.post(scoring_uri, data=data, headers=headers)
print(resp.text)
print(service.get_logs())
Дополнительные примеры клиентов на других языках см. в статье о клиентских приложениях для использования веб-служб.
Настройка сообщений электронной почты в студии
Чтобы начать получать сообщения электронной почты при завершении задания, веб-конечной точки или пакетной конечной точки или при возникновении проблемы (сбой, отмена), выполните следующие действия:
- В студии машинного обучения Azure перейдите к параметрам, выбрав значок шестеренки.
- Перейдите на вкладку Уведомления по электронной почте.
- Включите или отключите уведомления по электронной почте для конкретного события.
Основные сведения о состоянии службы
Во время развертывания модели вы можете просматривать изменение состояния службы.
Возможные состояния обновления описаны в следующей таблице:
Состояние веб-службы | Описание | Конечное состояние? |
---|---|---|
Переходное | Служба находится в процессе развертывания. | нет |
Нездоровый | Служба была развернута, но сейчас недоступна. | нет |
Невозможно запланировать | В настоящее время служба не может быть развернута из-за нехватки ресурсов. | нет |
Неудачно | Не удалось выполнить развертывание службы из-за ошибки или сбоя. | Да |
Работоспособно | Служба работоспособна, конечная точка доступна. | Да |
Совет
При развертывании образы Docker для целевых объектов вычислений создаются и загружаются из Реестра контейнеров Azure (ACR). По умолчанию служба Машинного обучения Azure создает реестр ACR, который использует уровень обслуживания Basic. Изменение ACR для рабочей области на уровень "Стандарт" или "Премиум" может сократить время, затрачиваемое на сборку и развертывание образов в целевые объекты вычислений. Дополнительные сведения см в статье Уровни службы Реестра контейнеров Azure.
Примечание.
Если вы развертываете модель в службе Azure Kubernetes (AKS), мы рекомендуем включить Azure Monitor для этого кластера. Это помогает понять общее работоспособность кластера и использование ресурсов. Могут также быть полезными следующие ресурсы.
- Проверка событий Работоспособности ресурсов, влияющих на кластер AKS
- Диагностика Службы Azure Kubernetes
Если вы пытаетесь развернуть модель в неработоспособном или перегруженном кластере, ожидается, что возникают проблемы. Если вам нужна помощь по устранению неполадок с кластером AKS, обратитесь в службу поддержки AKS.
Удаление ресурсов
ОБЛАСТЬ ПРИМЕНЕНИЯ: расширение машинного обучения Azure CLI версии 1
# Get the current model id
import os
stream = os.popen(
'az ml model list --model-name=bidaf_onnx --latest --query "[0].id" -o tsv'
)
MODEL_ID = stream.read()[0:-1]
MODEL_ID
az ml service delete -n myservice
az ml service delete -n myaciservice
az ml model delete --model-id=<MODEL_ID>
Для удаления развернутой веб-службы используйте az ml service delete <name of webservice>
.
Чтобы удалить зарегистрированную модель из рабочей области, используйте az ml model delete <model id>
Узнайте больше об удалении веб-службы и удалении модели.
Следующие шаги
- Устранение неполадок при развертывании
- Обновление веб-службы
- Одно из вариантов развертывания для автоматизированного машинного обучения выполняется в студии машинного обучения Azure
- Использование TLS для защиты веб-службы с помощью Машинного обучения Azure.
- Мониторинг моделей машинного обучения в Azure с помощью Application Insights
- Создание предупреждений и триггеров событий для развертываний моделей