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

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

Новые функции DigitalOcean работают аналогично функциям AWS lambda и azure. У них очень низкие вычислительные мощности, хранилище и оперативная память, но они дешевы, быстры и легко масштабируются.

Я свел это к 10 простым шагам и поместил все это в блокнот jupyter в Google Colab, специально для вас по этой ссылке.

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

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

  1. Установить документ
  2. Авторизоваться в DigitalOcean с помощью doctl
  3. Установите serverless в docl, чтобы мы могли создавать функции
  4. Подключитесь к песочнице DigitalOcean
  5. Создайте функцию Python DigitalOcean из шаблона
  6. Создайте файл требований
  7. Соответствуйте модели регрессии на некоторых данных
  8. Создать скрипт сборки
  9. Создайте конвейер вывода
  10. Создайте, разверните и протестируйте свою функцию 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]