Вы когда-нибудь пробовали развернуть модель машинного обучения в производственной среде?

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

‘Tensorflow Extended (TFX)’ - одна из таких служб, которая помогает создавать производственный конвейер и управлять им. Его можно объединить со службой Kubeflow для развертывания конвейера машинного обучения на платформе AI для онлайн-прогнозов.

В этой статье рассказывается, как настроить сквозной конвейер с использованием служб, упомянутых в Чикагском такси Dataset.

Набор данных

Этот набор данных содержит данные о поездках на такси в Чикаго с 2013 года по настоящее время. Он содержит 23 функции, включая уникальный ключ, идентификатор такси, стоимость проезда, чаевые и т. Д. В этой статье мы прогнозируем, будет ли клиент платить чаевые больше 20%.

Обзор Tensorflow Extended (TFX)

TFX - это комплексная платформа для развертывания производственных конвейеров машинного обучения. Он предоставляет структуру конфигурации и общие библиотеки для интеграции общих компонентов, необходимых для определения, запуска и мониторинга системы машинного обучения.

Подробнее о библиотеках TFX здесь

Почему стоит выбрать TFX?

TFX - это платформа, специально разработанная для создания сквозного конвейера машинного обучения. Используемые в нем компоненты предназначены для масштабируемых высокопроизводительных задач машинного обучения.

Становится легко предварительно обрабатывать данные, используя функциональные возможности компонентов TFX и библиотек TFX. Например, Библиотека

'Проверка данных Tensorflow (TFDV)' автоматически определяет аномалии, такие как отсутствующие функции, значения вне диапазона или неправильные типы функций, поэтому нет необходимости вручную найдите аномалии и внесите изменения, которые сделают задачу эффективной по времени.

Анализ моделей Tensorflow (TFMA) позволяет пользователям оценивать свои модели на больших объемах данных распределенным образом.

Кроме того, как только конвейер будет готов, модель легко развернуть на любой обслуживающей архитектуре с помощью компонента «Pusher».

Вся задача от предварительной обработки данных до развертывания модели может быть выполнена из одного и того же сценария с использованием конвейеров TFX.

Из-за этих богатых функциональных возможностей, которые предоставляет TFX, TFX широко используется для конвейеров машинного обучения, особенно для такого случая использования.

Реализация конвейера TFX

Для этого конвейера TFX используется код конвейера - TFX Example.ipynb из Репозитория Github.

Перед запуском файла конвейера выполните следующие действия в консоли GCP.

  1. Создайте проект GCP и убедитесь, что у вас включен биллинг.
  2. В облачном хранилище создайте две корзины с соответствующими именами. Здесь создаются две корзины с именами «model_input» и «model_output».
  3. В папке ‘model_input’ загрузите файл с названием ‘ taxi_utils.py
  4. Создайте папку в сегменте хранилища «model_input» с именем «data_input».
  5. Загрузите набор данных в формате «.csv» в папку «data_input».
  6. Включите «Dataflow API», если он не включен.

Следующий шаг: настройте среду.

Настройка среды

Виртуальная среда Conda используется здесь для установки необходимых зависимостей.

Для запуска конвейера TFX требуется «python версии 3.6» или новее.

Все остальные необходимые зависимости перечислены ниже:

Чтобы удовлетворить вышеупомянутые требования, выполните указанные шаги:

  • Создайте виртуальную среду conda с помощью Python 3.6 и активируйте среду.
  • Установите библиотеки в эту виртуальную среду.

Следующий шаг: внесите следующие изменения в файл «TFX Example.ipynb».

Каталог и расположение данных

Укажите пути для сегментов ввода и вывода в соответствии с сегментами, которые вы создали в облачном хранилище Google. Также укажите свой идентификатор проекта.

Пример настройки конвейера TFX

Загрузите файл конвейера в записную книжку jupyter, используя следующий код.

%load https://raw.githubusercontent.com/tensorflow/tfx/master/tfx/examples/chicago_taxi_pipeline/taxi_pipeline_kubeflow_gcp.py

В открывшемся файле внесите следующие изменения.

Импортировать зависимости

Поскольку данные считываются из файла «.csv», мы должны импортировать метод CsvExampleGen и некоторые другие зависимости, как показано ниже:

1. импортировать CscExampleGen

from tfx.components.example_gen.csv_example_gen.component import  CsvExampleGen

2. импортировать external_input

from tfx.utils.dsl_utils import external_input

Значения параметров

Введите свои данные для имени конвейера, входного сегмента, выходного сегмента, файла модуля и идентификатора проекта в определенных переменных.

Изменения в функции ‘_create_pipeline’

Вам необходимо обновить путь в функции CsvExampleGen в соответствии с вашим путем к файлу источника данных.

example_gen = CsvExampleGen(input=external_input("<path_to_data.csv_file>"))

Изменения в функциях «Тренер» и «Толкатель»

В этом блоге развертывание модели будет на платформе AI. Итак, предоставьте следующие аргументы в компонентах конвейера Trainer и Pusher:

В функции Trainer измените

‘ai_platform_trainer_executor.TRAINING_ARGS_KEY’ to ‘ai_platform_training_args’.

Аналогичным образом в функции pusher измените

‘ai_platform_pusher_executor.SERVING_ARGS_KEY’ to ‘ai_platform_serving_args’.

Мы внесли необходимые изменения в наш конвейер, которые позволят нам развернуть нашу модель на платформе AI и выполнять онлайн-прогнозы.

При успешном запуске этого файла будет сгенерирован и сохранен файл с именем ‹имя конвейера› .tar.gz. в вашем каталоге. Кроме того, в «сегменте вывода» будет создана папка, содержащая файлы, созданные в результате успешного запуска файла конвейера.

Загрузите этот файл на свой компьютер.

Теперь следующий шаг - развернуть конвейер на платформе AI с помощью kubeflow.

Что такое Kubeflow?

Kubeflow - это платформа Kubernetes с открытым исходным кодом для разработки, оркестровки, развертывания и запуска масштабируемых и переносимых рабочих нагрузок машинного обучения.

Нет необходимости воссоздавать другие сервисы, но он обеспечивает простой способ развертывания лучших в своем классе систем с открытым исходным кодом для машинного обучения в различных инфраструктурах.

Кроме того, везде, где мы можем запустить Kubernetes, мы можем запустить kubeflow.

После создания кластера Kubernetes на GCP, теперь мы можем развернуть Kubeflow в кластере.

Выполните следующие действия, чтобы развернуть kubeflow в кластере Kubernetes.

  1. Используйте ссылку пользовательский интерфейс kubeflow, чтобы получить доступ к kubeflow для развертывания на GCP. Он перенаправит вас на страницу, где вам будет предложено ввести некоторые данные.
  2. Укажите свой идентификатор проекта, название развертывания и другие необходимые данные. Выберите зону us-central-1-a, kubeflow версии «v0.7.1» и нажмите «Создать развертывание».

На выполнение этой задачи уйдет около 30 минут.

После завершения в журналах будет сгенерирована ссылка, которая перенаправит вас на страницу пользовательского интерфейса kubeflow.

Если вы можете получить доступ к этой странице, это означает, что kubeflow успешно развернут поверх кластера Kubernetes.

Следующий шаг: загрузите файл конвейера (.tar.gz), который был загружен после запуска файла «TFX Example.ipynb».

Вам необходимо загрузить файл конвейера в конвейеры с помощью пользовательского интерфейса Kubeflow.

Выполните следующие действия, чтобы загрузить конвейер на kubeflow.

  1. В раскрывающемся меню выберите свое пространство имен в пользовательском интерфейсе kubeflow.
  2. Перейдите в Pipelines в пользовательском интерфейсе kubeflow и нажмите «upload pipeline», или вы можете напрямую использовать ярлык, как показано на снимке ниже.

3. Выберите файл конвейера (‹your_pipeline_name› .tar.gz).

4. После загрузки конвейера your_pipeline_name будет отображаться в разделе конвейеров. Страница, содержащая конвейерный график, будет загружена после того, как вы нажмете на нее.

5. Чтобы запустить этот конвейер, нажмите кнопку «Создать запуск». Вам будет предложено ввести несколько деталей.

Создать прогон

6. Для запуска конвейера используйте эксперимент по умолчанию или создайте новый.

7. Запустите прогон после заполнения необходимых данных.

Поскольку он будет проходить через каждый компонент, определенный в файле «TFX Example.ipynb», это может занять несколько часов.

После успешного завершения прогона будет создан график, как показано ниже.

Успешный запуск конвейера означает, что модель была развернута на платформе Google Cloud AI Platform. Вы можете просмотреть подробную информацию о версии модели на платформе AI.

Наша следующая задача - делать онлайн-прогнозы на основе модели, развернутой на платформе AI с помощью Kubeflow.

Прогноз

Платформа GCP AI предоставляет два типа прогнозов: онлайн-прогнозирование и пакетное прогнозирование. Мы использовали онлайн-прогнозирование для развертывания этой модели.

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

API создается с использованием облачных функций GCP, где мы разместили код прогнозирования для развернутой модели платформы AI. Основной фрагмент кода функции выглядит следующим образом:

URL-адрес доступен во всем мире, вам просто нужно нажать на URL-адрес с тестовыми данными, которые необходимо предсказать, и вы получите прогнозы взамен.

В ответе прогнозируются оценки для каждого класса, где «0» означает, что пользователь даст чаевые более 20%, а «1» означает, что пользователь даст чаевые менее 20%.

оценка - это значение достоверности для прогнозируемого класса.

Например, на скриншоте выше вероятность того, что чаевые будут больше 20%, составляет 80%.

Другой прогнозный ответ приведен на скриншоте ниже -

Согласно этим тестовым данным, вероятность того, что пользователь заплатит чаевые более 20%, составляет 78%.

Заключение

Если вы зашли так далеко, то вам спасибо! Мы узнали, как настроить конвейер TFX с помощью Kubeflow, развернуть модель на платформе AI и делать онлайн-прогнозы с помощью набора данных о поездках в такси Чикаго.

Надеюсь, вам понравилось это читать!

Вы также можете написать нам в комментариях, если у вас возникнут вопросы. Больше интересного в нашем инженерном блоге.

использованная литература