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

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

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

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

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

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

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

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

Для кого эта статья?

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

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

Давайте начнем! 🚀

Вариант развертывания модели машинного обучения №1: Алгоритмия

Алгоритмия - это инструмент MLOps (операции машинного обучения), созданный Диего Оппенгеймером и Кенни Дэниелом, который обеспечивает простой и быстрый способ развертывания вашей модели машинного обучения в производственной среде.

Algorithmia специализируется на «алгоритмах как услуге». Он позволяет пользователям создавать фрагменты кода, которые запускают модель машинного обучения, а затем размещать их в Algorithmia. Затем вы можете вызвать свой код как API.

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

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

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

Вариант развертывания модели машинного обучения № 2: PythonAnywhere

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

Вы можете использовать любую веб-платформу Python, например Flask, для развертывания модели машинного обучения и запуска ее на платформе pythonAnywhere всего за несколько минут.

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

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

Вариант развертывания модели машинного обучения № 3: Heroku

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

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

Он предлагает широкий спектр услуг и инструментов для ускорения разработки и помогает не начинать все с нуля. Он также поддерживает несколько широко используемых языков программирования, таких как Python, Java, PHP, Node, Go, Ruby, Scala и Clojure.

Преимущество Heroku в том, что с его помощью легко создавать, развертывать и управлять вашим приложением. Вы можете сделать это прямо из командной строки, используя Heroku CLI (доступен для пользователей Windows, Linux и Mac).

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

Вот ресурсы, которые помогут вам узнать, как развернуть вашу модель на платформе Heroku.

Как сообщает« VentureBeat , около 90 процентов моделей машинного обучения никогда не попадают в производство. Другими словами, только каждый десятый рабочий день специалиста по данным действительно приносит что-то полезное для компании ». - Рея Мутафис

Вариант развертывания модели машинного обучения №4: Google Cloud Platform

Google Cloud Platform (GCP) - это платформа, предлагаемая Google, которая предоставляет ряд сервисов облачных вычислений, таких как вычисления, хранилище и базы данных, искусственный интеллект (AI) / машинное обучение (ML), сети, большие данные, а также идентификация и безопасность.

Google Cloud Platform предоставляет инфраструктуру как услугу, платформу как услугу и бессерверные вычислительные среды.

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

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

Платформа Google AI

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

С платформой Google AI вы получите доступ ко всем ее активам под одной крышей. Он включает в себя подготовку данных, обучение модели, настройку параметров, развертывание модели и обмен моделями машинного обучения с другими разработчиками.

Чтобы узнать больше о платформе Google AI, вы можете посетить веб-сайт платформы здесь.

Google App Engine

Google App Engine - это платформа как услуга (PaaS), предоставляемая Google, которая поддерживает разработку и размещение различных масштабируемых веб-приложений.

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

Он поддерживает популярные языки программирования, включая Python, PHP, Node.js, Java, Ruby, C # и Go.

Поэтому вы можете развернуть свою модель в Google App Engine, используя фреймворк Flask или любой другой известный фреймворк.

Чтобы узнать об этом подробнее, посетите платформу здесь.

Облачные функции Google

Google Cloud Function - это платформа для бессерверных вычислений, которая предлагает функции как услугу (FaaS) для запуска вашего кода без управления сервером.

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

Все функции, созданные и размещенные в Google Cloud Functions, при необходимости будут выполняться в облаке. Вы можете вызывать облачные функции в свое приложение с помощью различных триггеров. Самый распространенный способ - использовать HTTP-вызовы.

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

Вот несколько ресурсов, которые помогут вам узнать, как развернуть свою модель на платформе Google Cloud Platform.

Вариант развертывания модели машинного обучения №6: Функции Microsoft Azure

Функции Azure - это бессерверная облачная служба, предоставляемая Microsoft Azure как служба «Функции как услуга» (FaaS). Функции Azure помогают разработчикам разгрузить задачи управления инфраструктурой и сосредоточиться на запуске своих приложений.

Вы сосредотачиваетесь на наиболее важных для вас частях кода, а функции Azure берут на себя все остальное. Страница функций Azure.

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

Функции Azure поддерживают различные функции, разработанные на C #, F #, Node.js, Python, PHP, JavaScript, Java 8, Powershell Core и TypeScript.

Если у вас есть большая модель машинного обучения, функции Azure - правильный выбор. Он поддерживает развертывание больших пакетов машинного обучения, таких как фреймворки глубокого обучения (Tensorflow и Pytorch).

Вот ресурсы, которые помогут вам узнать, как развернуть свою модель в Функциях Azure.

Вариант развертывания модели машинного обучения № 7: AWS Lambda

AWS Lambda - это сервис бессерверных вычислений, предоставляемый Amazon как часть Amazon Web Services. AWS lambda помогает запускать код без управления базовой инфраструктурой.

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

AWS Lambda позволяет связать ваш код с другими ресурсами AWS, такими как таблица Amazon DyanamoDB, корзина Amazon S3, уведомление Amazon SNS и поток Amazon Kinesis.

Таким образом, вы можете легко развернуть свою модель машинного обучения на AWS Lambda и получить к ней доступ через API с помощью Amazon API Gateway.

Вы можете писать лямбда-функции на следующих поддерживаемых языках программирования: Python, Java, Go, PowerShell, Node.js, Ruby и код C #.

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

Если вы хотите отслеживать созданные вами лямбда-функции, AWS Lambda сделает это от вашего имени.

AWS Lambda будет отслеживать метрики в реальном времени, включая частоту ошибок, общее количество запросов, использование параллелизма на уровне функций, задержку и регулируемые запросы через Amazon CloudWatch.

Затем вы можете просмотреть статистику для каждой лямбда-функции с помощью консоли AWS Lambda или консоли Amazon CloudWatch.

Вот несколько ресурсов, которые помогут вам узнать, как развернуть свою модель в Функциях Azure.

И дополнительный вариант развертывания модели машинного обучения: библиотека mc2gen

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

Да, вы можете преобразовать свою модель с помощью библиотеки Python m2cgen, разработанной Bayes’ Witness . m2cgen (генератор кода модели 2) - это простая библиотека Python, которая преобразует обученную модель машинного обучения в разные языки программирования.

В настоящее время он поддерживает 14 различных языков программирования, включая Go, C #, Python, PHP и JavaScript. Библиотека m2cgen поддерживает модели регрессии и классификации из фреймворков scikit-learn и Gradient Boost, таких как XGBoost и LightGBM (Light Gradient Boosting Machine).

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

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

Заключение

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

Поздравляем 👏👏 , вы дочитали эту статью до конца !. Надеюсь, вы узнали что-то новое, что поможет вам в карьере.

Если вы узнали что-то новое или вам понравилось читать эту статью, поделитесь ею, чтобы другие могли ее увидеть. А пока до встречи в следующем посте! Вы также можете найти меня в Twitter @Davis_McDavid.

Эта статья впервые была опубликована на freecodecamp.