Продвинутый сценарий использования сервиса AutoML

Задача многоклассовой классификации (см. подробнее). Позволяет определить к какому классу относятся данные.

Модель обучалась на наборе данных — кратких обезличенных сведениях из электронной торговли, а параметром для предсказания выбран столбец target в качестве которой могут выступать возрастная группа, лояльность, регион и т.д.

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

  • Dataset, загруженный в объектное хранилище S3.

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

  • Docker-образ, запущенный на сервисе Deployments.

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

  • Результаты работы модели, сохраненные в файл submission.csv.

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

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

  2. Тестовый Dataset

  3. Блокнот для Jupiter Notebook

  4. Пример файла submission.csv

Подготовить набор данных для задачи и загрузить его в объектное хранилище S3

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

Создать и запустить задачу AutoML

  1. Перейти на страницу сервиса Задачи AutoML из главного меню.

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

    • Введите Имя модели (например, myautoml).

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

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

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

    • Укажите путь сохранения модели.

    • Выберите задачу обучения типа «Многоклассовая классификация».

    • Выберите целевую метрику «auc».

    • Во вкладке Расширенные настройки укажите Роли и расширенные параметры признаков (id — выберите Drop, feature_0, …, feature_74 — выберите Numeric)

  3. Не меняйте базовые настройки для ресурсов задачи.

  4. Нажмите Начать обучение. При выполнении задачи обучения можно просматривать ее логи. Для просмотра логов кликните по карточке задачи. Логи отображаются в интерактивном режиме и сохраняются в течение непродолжительного времени после завершения обучения. Логи можно копировать в текстовом формате для последующего сохранения в файл.

    В процессе обучения можно также отслеживать прогресс на вкладке Environments → Задачи. Если текущий статус задачи сменился на «Завершена», сериализованная модель сохранилась на s3 по пути, указанному в поле Расположение модели.

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

  1. Собрать Docker-образ с сериализованной моделью на основе базового образа registry.aicloud.sbcp.ru/base/laml-autofit:0.2.10-dev.12.

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

    • Нажмите кнопку Создать деплой. Откроется диалог Создать 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 минут, время сборки образа).

  2. Развернуть образ на сервисе (См. Сборка образов). После развертывания образа можно передавать модели новые данные в виде HTTP-запросов (подробнее см. Отправка HTTP-запросов к сервису).

    • Альтернативный вариант - получение предсказаний с использованием pkl модели через Jupyter Notebook.

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

Запрос на сервис, где развернута модель, выглядит следующим образом:

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"],
      "feature_0" : ["0"],
      "feature_1" : ["0"],
      "feature_2" : ["1"],
      "feature_3" : ["0"],
      "feature_4" : ["0"],
      "feature_5" : ["1"],
      "feature_6" : ["0"],
      "feature_7" : ["0"],
      "feature_8" : ["0"],
      "feature_9" : ["0"],
      "feature_10" : ["0"],
      "feature_11" : ["0"],
      "feature_12" : ["0"],
      "feature_13" : ["2"],
      "feature_14" : ["0"],
      "feature_15" : ["0"],
      "feature_16" : ["1"],
      "feature_17" : ["0"],
      "feature_18" : ["1"],
      "feature_19" : ["8"],
      "feature_20" : ["4"],
      "feature_21" : ["0"],
      "feature_22" : ["0"],
      "feature_23" : ["0"],
      "feature_24" : ["0"],
      "feature_25" : ["2"],
      "feature_26" : ["1"],
      "feature_27" : ["0"],
      "feature_28" : ["0"],
      "feature_29" : ["0"],
      "feature_30" : ["1"],
      "feature_31" : ["0"],
      "feature_32" : ["6"],
      "feature_33" : ["0"],
      "feature_34" : ["2"],
      "feature_35" : ["0"],
      "feature_36" : ["0"],
      "feature_37" : ["0"],
      "feature_38" : ["3"],
      "feature_39" : ["1"],
      "feature_40" : ["0"],
      "feature_41" : ["2"],
      "feature_42" : ["3"],
      "feature_43" : ["9"],
      "feature_44" : ["0"],
      "feature_45" : ["2"],
      "feature_46" : ["1"],
      "feature_47" : ["0"],
      "feature_48" : ["0"],
      "feature_49" : ["0"],
      "feature_50" : ["2"],
      "feature_51" : ["11"],
      "feature_52" : ["0"],
      "feature_53" : ["0"],
      "feature_54" : ["2"],
      "feature_55" : ["0"],
      "feature_56" : ["2"],
      "feature_57" : ["0"],
      "feature_58" : ["1"],
      "feature_59" : ["1"],
      "feature_60" : ["0"],
      "feature_61" : ["1"],
      "feature_62" : ["0"],
      "feature_63" : ["0"],
      "feature_64" : ["1"],
      "feature_65" : ["0"],
      "feature_66" : ["0"],
      "feature_67" : ["0"],
      "feature_68" : ["0"],
      "feature_69" : ["0"],
      "feature_70": ["0"],
      "feature_71": ["0"],
      "feature_72": ["0"],
      "feature_73": ["0"],
      "feature_74": ["0"]
     }
       }
      ]
     }'

Получение предсказаний с использованием pkl модели через Jupyter Notebook

  1. Загрузить файл Kaggle_inference.ipynb в бакет S3.

  2. Выполнить в Jupyter Notebook блоки кода 1-7 (Kaggle_inference.ipynb, в файле к каждому блок кода есть пояснение).

  3. Результаты работы модели сохраняются в файле, который указан в блоке кода в Jupyter Notebook (по умолчанию — submission.csv).

  4. Выполнить блоки 8-11 (в результате которых будут получены данные для авторизации).

  5. Выполнить блок 12. В результате отправки предсказания к модели получаются значения «target».

Значением «target» является вероятность того, к какому столбцу относится запрашиваемый (прогнозируемый) параметр.

Формат ответа:

{"predictions":[[0.11638661473989487,0.34883493185043335,0.1585141122341156,0.1049746721982956,0.07506230473518372,0.10326133668422699,0.05113428831100464,0.02464454621076584,0.017187178134918213]]}​