У меня есть кластер серверов, каждый сервер получает события аутентификации в реальном времени в виде запросов и возвращает оценку риска для входящего события на основе моделей искусственного интеллекта, которые находятся в S3.
Этот кластер обслуживает нескольких клиентов . У каждого покупателя в S3 своя модель ИИ. Каждый файл модели AI в размере S3 имеет размер ~ 50 МБ.
Проблема:
Допустим, этот кластер состоит из 10 серверов и обслуживает 20 клиентов. Соответственно, в S3 есть 20 моделей AI.
В наивном решении каждый сервер в кластере может в конечном итоге загрузить все 20 моделей из S3 в память сервера. 20 (серверов в кластере) * 50 МБ (размер модели в S3) = 1 ГБ. Загрузка модели и загрузка ее в память занимает много времени, а объем памяти ограничен объемом памяти сервера. И, конечно же, с масштабом эти проблемы усугубляются.
Итак, какие у меня варианты? Я знаю, что есть готовые продукты для управления жизненным циклом модели, такие как MlFlow, KubeFlow, ... Есть ли в этих продуктах решение проблемы, которую я поднял?
Может быть, использовать Redis в качестве кеша слой?
Может быть, использовать Redis в качестве слоя кеша в сочетании с MlFlow и KubeFlow?
Любое другое решение?
Ограничение: Я не могу имеет липкий сеанс между серверами в этом кластере, поэтому я не могу гарантировать, что все запросы одного и того же клиента попадут на один и тот же сервер.