Как обслуживать модель Prophet для моего приложения Django?

Я создал модель с пророком Facebook. Теперь мне интересно, каков «лучший» способ доступа к этим прогнозам из онлайн-веб-приложения (Django).

Требования заключаются в том, что я должен еженедельно обучать/обновлять свою модель с данными из моего приложения Django (PostgreSQL). Прогнозы будут сохранены, и я хочу иметь возможность вызывать/получать доступ к этим данным из моего приложения Django.

После того, как я изучил Google Cloud и AWS, я не смог найти ни одного решения, которое размещало бы мою модель таким образом, чтобы я мог просто получить доступ к прогнозам через API.

Моя лучшая идея/подход к решению этой проблемы прямо сейчас:

1) Создайте приложение Flask, который еженедельно тренирует мои модели. Прогнозы сохраняются в PostgreSQL. Данные будут еженедельно экспортироваться в CSV из моего веб-приложения Django.

2) Создайте API в моем приложении Flask, который может получить доступ к прогнозам из базы данных.

3) Из моего приложения Django я могу вызывать API и получать доступ к данным, когда это необходимо.

Я почти уверен, что мой подход звучит неровно и, вероятно, не так, как это делается. Есть ли у вас какие-либо отзывы или идеи о том, как решить эту проблему лучше? Вкратце:

1) Прогнозировать данные из базы данных PostgresSQL.

2) Подавать прогнозы в веб-приложении Django.

Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
1
0
379
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Самый простой способ предоставить предварительно рассчитанные значения прогноза от Prophet — это предоставить файлы CSV с S3 или других файловых серверов. Вы можете обновлять свои модели каждые несколько дней и записывать выходные данные прогноза в S3.

import boto3
from io import StringIO

DESTINATION = bucket_name

def write_dataframe_to_csv_on_s3(dataframe, filename):
    """ Write a dataframe to a CSV on S3 """
    print("Writing {} records to {}".format(len(dataframe), filename))
    # Create buffer
    csv_buffer = StringIO()
    # Write dataframe to buffer
    dataframe.to_csv(csv_buffer, sep = ",", index=False)
    # Create S3 object
    s3_resource = boto3.resource("s3")
    # Write buffer to S3 object
    s3_resource.Object(DESTINATION, filename).put(Body=csv_buffer.getvalue())

results = forecast[['ds', 'yhat', 'yhat_lower', 'yhat_upper']].copy()

write_dataframe_to_csv_on_s3(results, output+file_name+".csv")

Отличная идея, не подумал об этом. Спасибо!

Joey Coder 14.07.2019 15:07

Одна из причин, по которой я посетил этот вопрос, заключалась в том, что я не был уверен, куда идти. Ответ кажется отличной альтернативой. Тем не менее, у меня не было много ограничений для моего приложения Django, и я искал более простой способ для кого-то с такими же вариантами использования, как у меня.

Мое решение:

  • У меня есть Джанго проект, Приложение Джанго для моего веб-сайта и Приложение Джанго для модели Prophet.
  • Модель Prophet будет переобучаться каждый день ровно однажды (после некоторого условия).
  • Каждый день модель обучается, она делает прогнозы для новых данных и сохраняет прогнозы в файле CSV (который можно хранить в базе данных). Он также сохраняет обученную модель, используя соленый огурец.
  • Теперь у меня есть доступ к обученная модель и некоторым предопределенные прогнозы по импорт приложения Django везде, где мне это нужно.

Иерархия проекта:

project/
    project/
    django-app-for-website/
    django-app-for-prophet/
    manage.py
    requirements.txt

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

Если вы ищете самый простой способ служить модели Пророка, это то, что я мог бы предложить. Еще одно решение возможно.

Другие вопросы по теме