Тренируйтесь на Kaggle; развернуть в Google Cloud

Развертывание модели машинного обучения (ML) в производственной среде начинается с фактического построения модели, что можно сделать несколькими способами и с помощью множества инструментов.

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

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

Первое, что нужно сделать, чтобы гарантировать эту хорошую интеграцию всех системных блоков, - это иметь системную архитектуру (план), которая показывает сквозную интеграцию каждой логической части в системе. Ниже представлена ​​разработанная системная архитектура для этого мини-проекта.

Разработка модели

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

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

Модель, использованная в этом проекте, была построена и сериализована на этом ядре Kaggle с использованием титанического набора данных. Обратите внимание, что я использовал только существующие модули в стандартных пакетах, таких как Pandas, NumPy и sklearn, чтобы не создавать собственные модули. вы можете посмотреть мой предыдущий пост [1] Развертывание модели машинного обучения, раскрытие тайны (часть 2) », чтобы узнать больше о настраиваемом конвейере

Производительность модели можно значительно улучшить с помощью преобразования функций, но большинство преобразователей, которые лучше всего работают с данными, недоступны в sklearn без комбинации Pandas, NumPy и других полезных библиотек, что приведет к созданию дополнительных модулей. во время развертывания. Чтобы все было как можно проще, я воздержусь от слишком глубокого изучения этих тем.

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

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

Развертывание машинного обучения на облачной платформе Google

Google Cloud Platform (GCP) - один из основных вариантов развертывания моделей машинного обучения в облаке, наряду с другими, такими как AWS, Microsoft Azure и т. Д.

В GCP, в зависимости от того, как вы решите развернуть свою модель, есть три основных варианта: [2]:

  • Платформа Google AI: платформа искусственного интеллекта, которая позволяет разработчикам машинного обучения, специалистам по обработке данных и инженерам по обработке данных быстро и без лишних затрат переводить свои проекты машинного обучения от идеи до производства и развертывания. Платформа искусственного интеллекта Google имеет интегрированный набор инструментов, который помогает создавать и запускать ваши собственные приложения для машинного обучения - от инженерии данных до гибкости без привязки. Таким образом, сквозная разработка и развертывание модели машинного обучения возможна на платформе искусственного интеллекта Google без использования внешних инструментов. Преимущество этого состоит в том, что вам не нужно беспокоиться о выборе лучшего инструмента для выполнения каждой работы и о том, насколько хорошо каждое устройство интегрируется с более крупной системой. Альтернативами этому являются Amazon SageMaker, Microsoft Azure и т. Д.

  • Облачная функция Google: Облачная функция - это самый простой способ запустить код. это управляемая событиями, бессерверная вычислительная платформа, посредством которой ваша функция выполняется по мере необходимости, без необходимости выделения сервера при настройке или каких-либо других связанных вычислительных ресурсов [3]. К преимуществам использования облачной функции можно отнести: автоматическое масштабирование в зависимости от нагрузки; возможность упростить разработку сложных приложений на разных языках; нет серверов для предоставления, управления или обновления; интегрированный мониторинг, ведение журнала и распределенная трассировка; встроенная безопасность на уровне ролей и функций, основанная на принципе наименьших привилегий; и ключевые сетевые возможности для гибридных и мультиоблачных сценариев. Альтернативы этому - AWS Lambda, Azure Functions и т. Д.
  • Google App Engine. Google App Engine - это платформа как услуга и платформа облачных вычислений, которая в основном используется для разработки и размещения веб-приложений. Функция автоматического масштабирования App Engine автоматически выделяет больше ресурсов для веб-приложения, чтобы справиться с дополнительным спросом. Это выбор, с которым я экспериментировал в этом проекте.

Почему для этого проекта используется App Engine?

App Engine представляет собой облачную платформу, которая является достаточно комплексной и сочетает в себе инфраструктуру как услугу (IaaS), платформу как услугу (PaaS) и программное обеспечение как услугу (SaaS). Среда выполнения и языки обновлены с отличной документацией. Функции на этапе предварительного просмотра (бета) доступны большому количеству пользователей, что позволяет нам информировать нас о возможных будущих разработках.

Чтобы развернуть эту модель в App Engine с помощью терминала, необходимо выполнить четыре основных действия:

  • Сериализованная модель и артефакты модели: это сохраненная обученная модель и другие стандартные объекты, используемые во время преобразования данных. Все они будут храниться в хранилище Google (корзине) после развертывания, чтобы они были доступны для основного скрипта для подготовки тестовых данных и создания прогнозов.
  • Main script.py: это сценарий, в котором написана функция прогнозирования и куда импортируются все необходимые библиотеки, перечисленные в файле требований, необходимые для сквозной подготовки данных и прогнозирования. Я бы добавил комментарии к каждой строке кода, чтобы ее было легче читать.
  • Requirement.txt: простой текстовый файл, содержащий зависимости модели с точной версией, использованной во время обучения модели. Чтобы избежать проблем, лучше перед разработкой модели проверить доступные версии всех библиотек и пакетов, которые вы будете использовать в облаке.
scikit-learn==0.22
numpy==1.18.0
pandas==0.25.3
flask==1.1.1
  • Файл app.yaml. Это файл, который можно использовать для настройки параметров приложения App Engine в файле app.yaml. Этот файл определяет, как пути URL соответствуют обработчикам запросов и статическим файлам. Файл app.yaml также содержит информацию о коде вашего приложения, такую ​​как среда выполнения и идентификатор последней версии. Любая конфигурация, которую вы опустите в этом файле, будет установлена ​​в состояние по умолчанию. Для этого простого приложения мне нужно только установить время выполнения на python37, чтобы App Engine мог знать образ Docker, который будет запускать приложение.
runtime: python37

Есть еще много всего, что нужно для написания app.yaml файлов, которые можно найти в официальной документации Google [4].

Для упрощения развертывания этого приложения нам необходимо иметь проект на платформе управления версиями разработки программного обеспечения, такой как Bitbucket, GitHub и т. Д. Пожалуйста, найдите репозиторий проекта на GitHub.

Шаги по развертыванию модели в Google App Engine

  • Создайте проект на Google Cloud Platform

  • Выберите проект и создайте приложение с помощью App Engine.

Настройте приложение, указав постоянный регион, в котором вы хотите, чтобы Google управлял вашим приложением. После этого шага выберите язык программирования, на котором написано приложение.

  • Загрузите Cloud SDK для развертывания с локального компьютера или активируйте облачную оболочку из облака. Для этой демонстрации я использую облачную оболочку. после активации оболочки убедитесь, что Cloud Platform project установлен равным предполагаемому идентификатору проекта.

  • Клонируйте репозиторий проекта GitHub на движке, запустив (git clone <link to clone your repository> )

  • Перейдите в каталог проекта, содержащий файл для загрузки в App Engine, запустив (cd ‘ cloned project folder’). Вы можете вызывать каталоги, запустив ls.

  • Инициализируйте gcloud в каталоге проекта, запустив gcloud init. Это вызовет ряд вопросов по настройке Google Cloud SDK, которые довольно просты и на них легко ответить.
  • Последний шаг - развернуть приложение, выполнив команду gcloud app deploy. Чтобы загрузить файлы, установить зависимости приложений и развернуть приложение, потребуется некоторое время.

  • После завершения загрузки вы можете запустить gcloud app browse, чтобы запустить приложение в браузере, или скопировать URL-адрес приложения вручную, если браузер не обнаружен.

Примечание. Если вы используете настраиваемую процедуру прогнозирования, вам необходимо добавить конечную точку API к URL-адресу. Для этого проекта Flask был выбран в качестве веб-фреймворка, а конечная точка была объявлена ​​как /prediction_endpoint.

Протестируйте приложение с Postman

Поскольку мы не создавали веб-интерфейс для проекта, мы можем использовать клиент приложения Google для отправки HTTP-запроса для тестирования приложения, но мы будем использовать Postman для его тестирования, потому что мы прогнозируем в пакетном режиме в зависимости от того, как мы читаем набор данных на бэкэнде. Ниже приведен ответ приложения после отправки HTTP-запроса на получение прогнозов для загруженных тестовых данных.

Подведение итогов

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

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

Свяжитесь со мной в Twitter и LinkedIn

Просмотрите репозиторий Project на GitHub и не забудьте пометить его по ссылке ниже:



Приветствую

Ссылки











Будущая работа

  • Развертывание настраиваемого конвейера машинного обучения на GCP с помощью движка приложений и Docker

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

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

Если вы хотите внести свой вклад, отправляйтесь на наш призыв к участникам. Вы также можете подписаться на наши еженедельные информационные бюллетени (Deep Learning Weekly и Comet Newsletter), присоединиться к нам в » «Slack и подписаться на Comet в Twitter и LinkedIn для получения ресурсов, событий и гораздо больше, что поможет вам быстрее и лучше строить лучшие модели машинного обучения.