Деплой модели с Google Cloud Functions

В заметке я расскажу как до определенного уровня использования бесплатно задеплоить модель и на заморачиваться с написанием микросервиса. Отмечу, что такое решение легко интегрируется, например, в веб-сервис. Всё, что вам нужно это использовать Google Cloud Functions.

Google Cloud Functions это serverless подход, т.е. серверные услуги предоставляются без аренды или покупки оборудования. При таком подходе управлением ресурсами инфраструктуры, её настройкой и обслуживанием занимается провайдер.

Основной плюс Google Cloud Functions это автоматическая масштабируемость, высокая доступность и отказоустойчивость.

Цены

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

Таблица с ценами:

Вызовов в месяцЦена/млн.
Первые 2 миллионаБесплатно
Более 2 миллионов0,40 доллара США
Цены на обращение к Google Cloud Functions

Время вычислений

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

Более подробно можно почитать в официальной документации

Пример использования

Для одного проекта у меня была задача определять по тексту вакансии её категорию. Например: BACKEND, FRONTEND, MOBILE DEV, DESIGN, PRODUCT, DA/DS и другие. В качестве модели обучен CatBoostClassifier. Средний ROC AUC модели 0.979

Confusion Matrix на валидации:

model confusion matrix
model confusion matrix

Вот именно эту модель мы и будем деплоить с использованием Google Cloud Functions.

Настройка Google Cloud Functions

Переходим в google cloud console и нажимаем create function.

  1. Environment выбираем 2nd gen.
  2. Даём имя нашей функции, например: model1.
  3. В Authentication, выбираем Allow unauthenticated invocations.
  4. Кликаем по Next.
Настройка Google Cloud Functions
Настройка Google Cloud Functions

Затем для использования библиотек Python нам надо прописать 8080 PORT во вкладке Runtime, build, connections and security settings → BUILD

Runtime, build, connections and security settings
Runtime, build, connections and security settings

Дальше у вас есть два варианта написать код для вашей Google Cloud Function:

  1. Во вкладке Код можно выбрать Inline editor. И там написать код вашей функции и указать её как Entry Point.
  2. Можно загрузить весь код в формате zip архива. И указать так же Entry Point.

Я предпочитаю второй вариант, он гораздо проще и быстрее.

В коде стоит обратить внимание на 3 вещи:

  1. Использовать библиотеку functions_framework
  2. Использовать декоратор @functions_framework.http для вашей Entry Point функции
  3. Лучше не указывать версии библиотек в requirements.txt

Пример кода

@functions_framework.http
def main(request):
    text = request.args.get('vactext')
    corpus = remove_links_and_quotes(text)
    corpus = ' '.join(re.split('\W+', corpus.lower()))
    corpus = tokenize_me(corpus)

После чего кликните Deploy.

Если всё в порядке ваш сервис будет поднят. Обратить к нему нужно по URL.

Deploy Google Cloud Function
Deploy Google Cloud Function

В моём случае в функции используется vactext с описанием вакансии, а возвращается категория вакансии.

Вызов Google Cloud Function
Вызов Google Cloud Function

Заключение

Google Cloud Function — это сервис, упрощающий процесс развертывания простых функций. Весь процесс развертывания функции можно выполнить менее чем за 1 час, что делает его хорошим инструментом для работы с MVP или для функцией, где не требуется много обращений.

Дополнительный материал

https://cloud.google.com/functions

Share it

Если вам понравилась заметка - подписывайтесь на мой канал в телеграме https://t.me/renat_alimbekov или вы можете поддержать меня Become a Patron!


Интересные записи в этой рубрике: