Использование облачных функций Google (часть 3)

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

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

Теперь, когда у нас есть базовое ноу-хау облачных функций, давайте перейдем к настройке одного из них для нашего mnist-digit-classifier. Если вы хотите узнать больше об облачных функциях, загляните в официальную документацию для более глубокого понимания облачных функций.

Давайте начнем и создадим нашу первую облачную функцию, перейдите в консоль GCP и на боковой панели выберите облачную функцию. Как только вы окажетесь в представлении, нажмите «Создать функцию».

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

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

Возможно, вам придется включить Cloud Build API, если он еще не включен.

Я буду использовать python в качестве среды выполнения, и мы видим, что для нас уже создано два файла, мы можем указать требования к пакету в файле requirements.txt и написать наш код в файле main.py. Точно так же мы также можем указать точку входа нашей облачной функции, которой в этом шаблоне по умолчанию является функция hello_world.

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

Вы также можете использовать развернутую модель на платформе Tenorflow или AI-Platform и использовать облачную функцию в качестве среднего уровня для предварительной обработки данных, поскольку выполнение таких операций на стороне клиента неидеально и требует времени.

Обновите требования к облачной функции. Я буду использовать два следующих пакета.

tensorflow==2.1.0
google-cloud-storage==1.35.0

Далее нам нужно реализовать нашу облачную функцию, которая будет отвечать за

  • Скачивание модели из корзины облачного хранилища
  • Загрузка модели с помощью тензорного потока
  • Обрабатывайте входящие запросы и отвечайте с прогнозами

Давайте сначала напишем код для загрузки модели

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

Далее нам нужно загрузить загруженную модель.

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

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

Вот и все, что у нас есть запущенная облачная функция, которая автоматически масштабируется в зависимости от нагрузки. Чтобы быстро протестировать его, вы можете сделать запрос HTTP-POST к облачной функции и передать данные, ниже приведен пример фрагмента кода Python, который вы можете использовать для вызова облачной функции.

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

Удачного кодирования.