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

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

Кроме того, служба машинного обучения Azure представляет новую возможность, которая помогает упростить процесс развертывания модели, используемый в жизненном цикле машинного обучения:

Некоторым специалистам по данным трудно подготовить модель машинного обучения для работы в производственной системе. Чтобы решить эту проблему, Машинное обучение Azure может помочь вам локально упаковать и отлаживать модели машинного обучения, прежде чем отправлять их в облако. Это должно значительно сократить время внутреннего цикла, необходимое для итерации и получения удовлетворительной службы вывода до того, как упакованная модель достигнет центра обработки данных.

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

  1. Зарегистрируйте модель.
  2. Подготовьтесь к развертыванию (укажите активы, использование, цель вычислений)
  3. Разверните модель в целевом объекте вычислений.
  4. Используйте развернутую модель, также называемую веб-службой.

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

  1. Используйте SDK, чтобы получить информацию о подключении.
  2. Определите тип данных запроса, используемых моделью.
  3. Создайте приложение, которое вызывает веб-службу.

Вывод

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

  • Настройка гиперпараметров
  • Отслеживание и мониторинг показателей для улучшения процесса создания модели
  • Масштабирование и масштабирование вычислений, таких как DSVM и Azure ML Compute
  • Отправка трубопроводов

Подпишитесь на Темы FAUN и получайте еженедельное авторское письмо с обязательными техническими историями, новостями и учебными пособиями 🗞️

Подписывайтесь на нас в Twitter 🐦 и Facebook 👥 и Instagram 📷 и присоединяйтесь к нашим Facebook и Linkedin Группы 💬 .

Если этот пост был полезен, пожалуйста, нажмите несколько раз кнопку хлопка 👏 ниже, чтобы выразить поддержку автору! ⬇