
В этой статье вы научитесь развертывать свои модели машинного обучения с помощью машинного обучения Azure. Развертывание модели - это метод, с помощью которого вы интегрируете модель машинного обучения в существующую производственную среду, чтобы начать использовать ее для принятия практических бизнес-решений на основе данных.
Служба машинного обучения Azure - это облачная служба, которую вы используете для обучения, развертывания, автоматизации и управления моделями машинного обучения в широком масштабе, предоставляемом облаком. Сервис полностью поддерживает технологии с открытым исходным кодом, такие как PyTorch, TensorFlow и scikit-learn, и может использоваться для любого вида машинного обучения, от классического машинного обучения до глубокого обучения, контролируемого и неконтролируемого обучения.
Кроме того, служба машинного обучения Azure представляет новую возможность, которая помогает упростить процесс развертывания модели, используемый в жизненном цикле машинного обучения:

Некоторым специалистам по данным трудно подготовить модель машинного обучения для работы в производственной системе. Чтобы решить эту проблему, Машинное обучение Azure может помочь вам локально упаковать и отлаживать модели машинного обучения, прежде чем отправлять их в облако. Это должно значительно сократить время внутреннего цикла, необходимое для итерации и получения удовлетворительной службы вывода до того, как упакованная модель достигнет центра обработки данных.
Рабочий процесс развертывания аналогичен независимо от того, где вы развертываете свою модель:
- Зарегистрируйте модель.
- Подготовьтесь к развертыванию (укажите активы, использование, цель вычислений)
- Разверните модель в целевом объекте вычислений.
- Используйте развернутую модель, также называемую веб-службой.
1. Зарегистрируйте свою модель
Зарегистрируйте свои модели машинного обучения в рабочей области машинного обучения Azure. Модель может быть получена из машинного обучения Azure или откуда-то еще. Следующие примеры демонстрируют, как зарегистрировать модель из файла:
Зарегистрируйте модель из экспериментального прогона
- Пример Scikit-learn с использованием SDK
model = run.register_model(model_name=’sklearn_mnist’, model_path = ’outputs/sklearn_mnist_model.pkl’) print(model.name, model.id, model.version, sep=’\t’)
- Использование интерфейса командной строки
az ml model register -n sklearn_mnist — asset-path outputs/sklearn_mnist_model.pkl — experiment-name myexperiment
- Использование VS Code
Зарегистрируйте модели, используя любые файлы или папки моделей с расширением Visual Studio Code.
Зарегистрируйте модель, созданную извне
Вы можете зарегистрировать модель, созданную извне, указав локальный путь к модели. Вы можете указать папку или отдельный файл.
- Пример ONNX с Python SDK
onnx_model_url = "https://www.cntk.ai/OnnxModels/mnist/opset_7/mnist.tar.gz"
urllib.request.urlretrieve(onnx_model_url, filename="mnist.tar.gz")
!tar xvzf mnist.tar.gz
model = Model.register(workspace = ws,
model_path ="mnist/model.onnx",
model_name = "onnx_mnist",
tags = {"onnx": "demo"}
description = "MNIST image classification CNN from ONNX Model Zoo",)
- Использование интерфейса командной строки
az ml model register -n onnx_mnist -p mnist/model.onnx
2. Подготовьтесь к развертыванию
Для развертывания в качестве веб-службы необходимо создать конфигурацию вывода (InferenceConfig) и конфигурацию развертывания. Сценарий входа получает данные, отправленные в развернутую веб-службу, и передает их модели. Затем он принимает ответ, возвращенный моделью, и возвращает его клиенту.
Скрипт содержит две функции, которые загружают и запускают модель:
- init (): обычно эта функция загружает модель в глобальный объект. Эта функция запускается только один раз при запуске контейнера Docker для вашей веб-службы.
- run (input_data): эта функция использует модель для прогнозирования значения на основе входных данных. Входные и выходные данные для выполнения обычно используют JSON для сериализации и десериализации. Вы также можете работать с необработанными двоичными данными. Вы можете преобразовать данные перед их отправкой в модель или перед возвратом клиенту.
3. Разверните до цели
В следующей таблице представлен пример создания конфигурации развертывания для каждой цели вычислений:

Давайте вместе рассмотрим пример использования существующего кластера AKS с использованием пакета SDK для машинного обучения Azure, интерфейса командной строки или портала Azure. Если у вас уже есть подключенный кластер AKS, вы можете развернуть его:
- Использование SDK
aks_target = AksCompute(ws,"myaks")
Примечание. При развертывании в кластере, настроенном для разработки / тестирования, убедитесь, что он создан с достаточным количеством ядер и памяти для обработки этой конфигурации развертывания. Помните, что память также используется такими вещами, как зависимости и компоненты AML.
deployment_config = AksWebservice.deploy_configuration(cpu_cores = 1, memory_gb = 1) service = Model.deploy(ws, "aksservice", [model], inference_config, deployment_config, aks_target) service.wait_for_deployment(show_output = True) print(service.state) print(service.get_logs())
- Использование интерфейса командной строки
az ml model deploy -ct myaks -m mymodel:1 -n aksservice -ic inferenceconfig.json -dc deploymentconfig.json
- Использование VS Code. Вы также можете выполнить развертывание в AKS с помощью расширения VS Code, но вам необходимо заранее настроить кластеры AKS.
4. Использование веб-сервисов.
Каждая развернутая веб-служба предоставляет REST API, поэтому вы можете создавать клиентские приложения на различных языках программирования. Если вы включили аутентификацию для своей службы, вам необходимо указать служебный ключ в качестве токена в заголовке запроса.
Вот пример того, как вызвать вашу службу в Python:
import requests
import json
headers = {'Content-Type':'application/json'}
if service.auth_enabled:
headers['Authorization'] = 'Bearer '+service.get_keys()[0]
print(headers)
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]
]
}
)
response = requests.post(service.scoring_uri, data=test_sample, headers=headers)
print(response.status_code)
print(response.elapsed)
print(response.json())
Вы можете отправить данные в этот API и получить прогноз, возвращаемый моделью. Общий рабочий процесс для создания клиента, использующего веб-службу машинного обучения, следующий:
- Используйте SDK, чтобы получить информацию о подключении.
- Определите тип данных запроса, используемых моделью.
- Создайте приложение, которое вызывает веб-службу.
Вывод
В этой статье вы узнали о первых шагах по развертыванию моделей машинного обучения с помощью Машинного обучения Azure. Машинное обучение Azure можно интенсивно использовать в различных записных книжках для решения задач, связанных с разработкой модели искусственного интеллекта, таких как:
- Настройка гиперпараметров
- Отслеживание и мониторинг показателей для улучшения процесса создания модели
- Масштабирование и масштабирование вычислений, таких как DSVM и Azure ML Compute
- Отправка трубопроводов
Подпишитесь на Темы FAUN и получайте еженедельное авторское письмо с обязательными техническими историями, новостями и учебными пособиями 🗞️
Подписывайтесь на нас в Twitter 🐦 и Facebook 👥 и Instagram 📷 и присоединяйтесь к нашим Facebook и Linkedin Группы 💬 .
