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

Ваша команда усердно работала над созданием модели глубокого обучения для конкретной задачи (скажем: обнаружение купленных продуктов в магазине с помощью компьютерного зрения). Хорошо.

Затем вы разработали и развернули API, который интегрирует эту модель (давайте сохраним наш пример: машины самообслуживания будут вызывать этот API). Большой!

Новый продукт работает хорошо, и вы чувствуете, что вся работа сделана.

Но поскольку менеджер решил установить больше машин самообслуживания (мне очень нравится этот пример), пользователи начали жаловаться на огромную задержку, возникающую при каждом сканировании продукта.

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

Как вы увидите в этой статье, существуют более дешевые и простые решения.

Базовый API с большой фиктивной моделью

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

При тестировании модели на моем графическом процессоре GeForce RTX 2080 я измерил время логического вывода, равное 303 мс. Это то, что мы можем назвать большая модель.

Теперь нам нужен очень простой API для обслуживания нашей модели с только одним маршрутом для запроса прогноза. Очень стандартный фреймворк API в Python - это Flask. Это тот, который я выбрал вместе с HTTP-сервером WSGI под названием Gunicorn. Наш уникальный маршрут анализирует входные данные запроса, вызывает на нем созданную модель и отправляет выходные данные обратно пользователю.

Мы можем запустить наш API глубокого обучения с помощью команды:

gunicorn wsgi:app

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

Давайте протестируем наш API

Полный текст статьи читайте в блоге Sicara’s.