#python #design-patterns #scikit-learn #pytorch #data-science
Вопрос:
У меня есть простой web app
, который использует преобразованные вектора sklearn (tfidf / счетчик / нормализатор) и другие pytorch (модели трансформаторов). Я обычно сбрасываю эти модели через joblib
. Это приложение вызывает эти модели через API на основе fastapi. До сих пор все было хорошо.
- Но перечисленные выше векторы и модели обновляются ежедневно, во время выполнения. Той частью того же приложения, которая его использует. Поэтому всякий раз, когда новые файлы готовы, мы начинаем их использовать.
- Всякий раз, когда мы получаем вызов от api, мы ищем сегодняшнюю модель и выполняем:
joblib.load
затем отвечаем на вызовы api. В этом процессе всякий раз, когда мы получаем слишком много звонков, мы делаем это много разjoblib.load
, и, наконец, мы начинаем получатьToo many files open OSError.
- Если бы мы не обновляли эти модели ежедневно, я мог бы выполнить загрузку один раз в глобальных переменных. Но сейчас у меня нет четкой и лучшей идеи, чтобы спроектировать его таким образом, чтобы мы могли обновлять модели ежедневно и всякий раз, когда модели доступны на сегодняшний день, затем начинать их использовать.
- Кроме того, еще одно ограничение: пока модели на сегодняшний день недоступны, мы используем вчерашнюю модель для обслуживания запросов.
Ответ №1:
Похоже, что вы хотите загрузить модель один раз, использовать ее в памяти, а затем время от времени проверять, доступна ли новая модель на диске, и перезагружать ее, если доступна обновленная версия.
Комментарии:
1. да, это то, что я хочу сделать. Спасибо за разъяснение.