Как обновлять модели / векторы во время выполнения, на ежедневной основе?

#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. да, это то, что я хочу сделать. Спасибо за разъяснение.