@Venda_98

Как лучше построить архитектуру ML-сервиса?

Работаю ML-инженером. Так как нет опыта в проектировании REST API, то хотел бы посоветоваться насчёт архитектуры.
Задача:
Разработать сервис, который предоставлял бы возможность отправлять запросы (преимущественно GET) для получения вычислений по определённой модели.
Предполагается наличие доступа к различным ML-моделям через данный сервис (языковые, работа с временными рядами и т.п.).
Важно учитывать, что одну и ту же модель могут вызывать разные пользователи, соответственно, необходимо чтоб при таких запросах вычисления происходили параллельно в рамках доступных ресурсов.

Прошу совета по организаций и, по возможности, вектора: о чём почитать, что потестировать, как подход использовать?

Заранее большое спасибо!
  • Вопрос задан
  • 139 просмотров
Решения вопроса 1
@Everything_is_bad
Ну так стандартно, fastapi кладет запрос в какую либо очередь сообщений и ждет ответа, ML-модель, обычно запущенная отдельный сервисом, читает из этой очереди, обрабатывает и подобным образом передает обратно в fastapi. Это базовое, дальше уже начинаются работы по развитию, относительно возникающих требований, настройка таймутов и отмены работ, усложнение REST API, от простого запрос - ответ, к например, запрос - создание фоновой задачи - периодической проверки ее выполнения, масштабирование через создание нескольких сервисов с моделью и т.п, и т.д.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
Maksim_64
@Maksim_64
Data Analyst
Мало информации, конечно. Я обычно использую dash. Он позволяет создать полноценное веб приложение. Для взаимодействия с пользователем. Есть большое коммунити например я использую компоненты для создания красивого интерфейса и взаимодействия. Насчет одновременного доступа не проблема, каждая сессия пользователя изолирована. В доках есть раздел галерея там большие и крутые проекты выложены на github, то есть можно много чего подсмотреть. Есть и платные компоненты. Все что по ссылкам это бесплатно и для продакшен уровня достаточно.

Возможно если требуется высоконагрузочное приложение то не подойдет. Сами модели то серриализованны и не требуют много ресурсов, я имею ввиду много пользователей большие объемы данных и т.д.

А так в небольшие сроки можно крутое приложение, как по дизайну (фронт) так и по функционалу сделать. И все в рамках одного языка даже фронт.
Ответ написан
Комментировать
@Vitsliputsli
Если подразумевается высокая нагрузка:
Т.к. параллелизм, то сервис лучше писать на Go, Python тут плохой вариант.
А вместо rest лучше grpc, если для модели нужно много данных.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы