10 простых шагов для развертывания модели машинного обучения с функциями
Вчера DigitalOcean выпустила свои новые бессерверные функции для общего пользования вместе с некоторыми примерами из закрытой бета-версии. Я пишу эту статью, чтобы помочь вам начать работу, когда вы опробуете проекты машинного обучения на основе этого нового вычислительного подхода.
Новые функции DigitalOcean работают аналогично функциям AWS lambda и azure. У них очень низкие вычислительные мощности, хранилище и оперативная память, но они дешевы, быстры и легко масштабируются.
Я свел это к 10 простым шагам и поместил все это в блокнот jupyter в Google Colab, специально для вас по этой ссылке.
Пример, который я подготовил для этой статьи, представляет собой пример регрессии. В частности, модель машинного обучения обучается прогнозировать уравнение, которое предсказывает значение целевой переменной на основе многомерного набора данных. Детали этого регрессионного подхода более подробно описаны в этой прошлой статье.
Все десять шагов для запуска вашей модели машинного обучения выполняются из командной строки:
- Установить документ
- Авторизоваться в DigitalOcean с помощью doctl
- Установите serverless в docl, чтобы мы могли создавать функции
- Подключитесь к песочнице DigitalOcean
- Создайте функцию Python DigitalOcean из шаблона
- Создайте файл требований
- Соответствуйте модели регрессии на некоторых данных
- Создать скрипт сборки
- Создайте конвейер вывода
- Создайте, разверните и протестируйте свою функцию DigitalOcean
В итоге вы получите хороший API, который можно вызывать из командной строки следующим образом:
Вы также можете вызвать модель из Postman или другой записной книжки, как обычно:
К сожалению, большинство моделей машинного обучения не подходят для бессерверного развертывания с функциями. Это связано с тем, что библиотеки машинного обучения любят использовать графический процессор (который недоступен в этом типе экземпляра), занимают много оперативной памяти (которая ограничена для функций) и требуют много времени для установки библиотек (что не разрешено для функций). Мне удалось заставить numpy и joblib работать внутри функций, но TensorFlow, PyTorch, onnx, xgboost и другие не смогли загрузиться в функции как зависимости. Это по дизайну. Функции должны быть временными и быстро появляться и исчезать. Модели Big ML масштабируются совсем по-другому. По этим причинам маленькие/крошечные модели хорошо подходят для функций, но даже модели машинного обучения среднего размера не подходят для бессерверных функций в DigitalOcean.
Нехватка памяти или времени компиляции приводит к большому количеству ошибок, таких как следующие жемчужины.
Пожалуйста, просмотрите код и попробуйте его в своей учетной записи. Не стесняйтесь возиться, например, переименовывая проект в свое собственное имя проекта и добавляя свою собственную модель регрессии. В коде есть удобная возможность открывать прямо в Google Colab.
Особая благодарность команде DigitalOcean за приглашение на закрытое бета-тестирование, их слабый канал digitalocean-beta и за быстрые ответы на мои вопросы.
Если вам понравилась эта статья, то взгляните на некоторые из моих самых читаемых прошлых статей, таких как Как оценить проект ИИ и Как нанять консультанта по ИИ. И эй, присоединяйтесь к новостной рассылке!
До скорого!
Даниэль Шапиро, PhD
технический директор, Lemay.ai
linkedin.com/in/dcshapiro
[email protected]