Базовый сценарий использования сервиса AutoML

Базовый сценарий предполагает обучение модели AutoML на ваших данных через графический интерфейс платформы.

Решим задачу прогнозирования годовой выручки ресторанов, предложенную компанией TAB Food Investments, которая управляет ресторанами Burger King в Турции и Китае (см. подробнее). Модель будем обучать на наборе данных, содержащих сведениях о ресторанах и будем прогнозировать выручку.

Результат обучения модели:

  • Загруженный набор данных (dataset) в объектное хранилище S3.

  • Обученная модель машинного обучения AutoML.

  • Подготовленный и запущенный Docker-образ для работающей модели на сервисе Deployments.

  • Обращения к развернутой модели с помощью HTTP-запросов для получения прогнозов модели по новым данным.

Файлы для скачивания:

  1. Тренировочный Dataset

  2. Скрипт для обучения модели

Для выполнения задачи:

Загрузите файлы в бакет пользователя на S3

Выполните следующие действия:

Загрузите файлы в бакет пользователя на S3. Рекомендуем использовать для загрузки Файловый менеджер. Cм. Загрузка и хранение данных.

Создайте и запустите задачу AutoML для автоматического обучения модели

Выполните следующие действия:

  1. Нажмите на вкладку Задачи AutoML из главного меню для перехода на страницу сервиса.

  2. Нажмите кнопку Новый AutoML. В открывшемся диалоговом окне:

    • Введите Название модели (например, myfirstautoml).

    • Выберите Подключение S3. Для этого укажите нужный бакет/данные для обучения из списка или укажите параметры подключения вручную.

    • Загрузите Dataset и определите задачи.

    • Выберите целевой признак «revenue». Становится доступным после загрузки dataset. Этот признак выступает в роли прогнозируемой выручки.

    • Укажите путь сохранения модели во вкладке Расширенные настройки (для простоты сохраняйте в том же бакете, откуда загружали модель).

    • Выберите задачу обучения типа «Регрессия» (нужно составить прогноз на основе выборки объектов с различными признаками. На выходе должно получиться вещественное число, подробнее см. Типы задач обучения).

    • Выберите целевую метрику «mae» (средняя абсолютная ошибка).

  3. Не задавайте настройки во вкладке Расширенные настройки (Роли и расширенные параметры признаков) и базовые настройки для ресурсов задачи (количество GPU и максимальное время обучения).

  4. Нажмите Начать обучение для запуска обучения модели с указанными параметрами.

Подробнее см. в пункте Создание задачи обучения в разделе Типы задач обучения.

В процессе обучения можно также отслеживать прогресс на вкладке Environments → Задачи и окружения.

Важно

Чтобы остановить задачу AutoML необходимо:

  1. Перейдите на вкладку Задачи и окружения.

  2. Найдите задачу которую необходимо остановить на вкладке Задачи и окружения.

  3. Из Кнопка с тремя вертикальными точками выбрать команду остановить.

Статус модели можно отслеживать с помощью индикатора. Красный индикатор — ошибка, желтый — выполняется обучение или задача остановлена, зеленый — обучение успешно завершено. После того как текущий статус модели сменился на «Завершена», результат обучения — обученная модель — сохранится на S3 по пути, указанному в поле Расположение модели. Обученная модель имеет расширение .pkl.

Соберите Docker-образ с обученной моделью на сервисе Deployments

Для получения предсказаний от модели необходимо:

  1. Собрать Docker-образ с обученной моделью.

  2. Запустить деплой обученной модели.

  3. Обратиться к обученной модели за предсказанием.

Собрать Docker-образ можно двумя путями:

  1. Соберите Docker-образ автоматически. Для этого из меню Кнопка с тремя вертикальными точками в карточке AutoML выберите команду Создать образ. См. подробнее в разделе Автоматическая сборка Docker-образа.

  2. Соберите Docker-образ с обученной моделью:

    • Перейдите на вкладку Deployments → Деплои.

    • Нажмите кнопку Создать деплой. Откроется диалог Создать Deploy.

      • Выберите Создайте новый.

      • В открывшемся окне задать необходимые настройки. См. Сборка образов. В качестве базового образа указать registry.aicloud.sbcp.ru/base/laml-autofit:0.2.10-dev.12. Обратите внимание на строку в serving-скрипте. Вместо your_model.pkl следует подставить имя модели на S3.

        def load(self)
          model_file_path = 'your_model_pkl'
        

        Далее нажмите кнопку Создать образ и дождитесь сборки образа (пребывание в статусе pending приблизительно - 5-10 минут, время сборки образа).

После окончания сборки на вкладке Деплои появится образ для развертывания. Посмотреть результат сборки можно с помощью карточки деплоя. Развернутая работающая модель будет иметь статус running.

Отправьте HTTP-запрос к модели на сервис Deployments

Для обращения к развернутой модели посредством HTTP-запроса выполняйте действия в точном соответствии с инструкцией Отправка HTTP-запросов к сервису.

  1. Отправьте запрос на авторизацию (подробнее). В ответ придет параметр your access token для запроса. Подробнее см. Отправка HTTP-запросов к сервису.

  2. После получения ответа (токена на авторизацию) запрос на сервис, где развернута модель, может выглядеть следующим образом (порядок получения параметров your GWAPI key и your x-workspace-id приведен в Отправка HTTP-запросов к сервису.

Пример HTTP-запроса

 curl --location --request POST 'https://api.aicloud.sbercloud.ru/public/v2/inference/v1/predict/{name}/{predict}/' \
--header 'Content-Type: application/json' \
--header 'authorization: <your access token>' \
--header 'x-api-key: <your GWAPI key>' \
--header 'x-workspace-id: <your x-workspace-id>' \
--data-raw '{
"instances":
[
 {
   "records":
  {
      "Id" : ["0"],
      "Open Date" : ["07/17/1999"],
      "City" : ["Д°stanbul"],
      "City Group" : ["Big Cities"],
      "Type" : ["IL"],
      "P1" : [4],
      "P2" : [5.0],
      "P3" : [4.0],
      "P4" : [4.0],
      "P5" :[2],
      "P6" :[2],
      "P7" :[5],
      "P8" :[4],
      "P9" :[5],
      "P10" :[5],
      "P11" :[5],
      "P12" :[5],
      "P13" :[5.0],
      "P14" :[1],
      "P15" :[2],
      "P16" :[2],
      "P17" :[1],
      "P18" :[4],
      "P19" :[5],
      "P20" :[4],
      "P21" :[1],
      "P22" :[3],
      "P23" :[3],
      "P24" :[1],
      "P25" :[1],
      "P26" :[1.0],
      "P27" :[4.0],
      "P28" :[2.0],
      "P29" :[3.0],
      "P30" :[5],
      "P31" :[3],
      "P32" :[4],
      "P33" :[5],
      "P34" :[5],
      "P35" :[4],
      "P36" :[3],
      "P37" :[4]
      }
     }
    ]
   }'

Пример HTTP-ответа

Дождитесь, когда придет ответ (время ожидания занимает 3-5 минут).

Ответ будет следующим:

{
 "predictions": [
     [
         4.573672294616699
     ]
 ]
}