【问题标题】:How to serve a Prophet model for my Django application?如何为我的 Django 应用程序提供 Prophet 模型?
【发布时间】:2019-07-08 09:10:40
【问题描述】:

created a model 与 Facebook Prophet。我现在想知道从在线 Web 应用程序 (Django) 访问这些预测的“最佳”方式是什么。

要求我必须每周使用来自我的 Django 应用程序 (PostgreSQL) 的数据来训练/更新我的模型。预测将被保存,我希望能够从我的 Django 应用程序调用/访问这些数据。

在查看 Google Cloud 和 AWS 后,我找不到任何解决方案来托管我的模型,而我只能通过 API 访问预测。

我现在解决这个问题的最佳想法/方法:

1) Build a Flask application 每周训练我的模型。预测保存在 PostgreSQL 中。数据将是从我的 Django Web 应用程序每周导出的 CSV。

2) 在我的 Flask 应用程序中创建一个 API,它可以访问数据库中的预测。

3) 在我的 Django 应用程序中,我可以在需要时调用 API 并访问数据。

我很确定我的方法听起来很颠簸,可能不是它的完成方式。您对如何更好地解决它有任何反馈或想法吗?简而言之:

1) 预测来自 PostgresSQL 数据库的数据。

2) 在 Django Web 应用程序中提供预测。

【问题讨论】:

    标签: python django amazon-web-services google-cloud-platform facebook-prophet


    【解决方案1】:

    从 Prophet 提供预先计算的预测值的最简单方法是从 S3 或其他文件服务器提供 CSV 文件。您可以每隔几天刷新一次模型并将预测输出写入 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")
    

    【讨论】:

    • 好主意,没想到。谢谢!
    【解决方案2】:

    我访问这个问题的原因之一是我不确定该走哪条路。答案似乎是一个很好的选择。 但是,我的 Django 应用程序没有太多限制,我正在为与我的用例相似的人找到一种更简单的方法。

    我的解决方案:

    • 我有一个 Django 项目、一个服务于我的网站的 Django 应用程序,以及一个用于 Prophet 模型的 Django 应用程序
    • Prophet 模型将每天准确地重新训练一次(在某些条件下)。
    • 模型训练的每一天,它都会预测新数据并将预测结果保存到 CSV 文件(可以存储在数据库中)。它还使用 pickle 存储经过训练的模型。
    • 现在,我可以通过在任何需要的地方导入 Django 应用来访问训练的模型和一些预定义的预测

    项目层次结构:

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

    尽管我的项目的性能没有受到太大影响,但这不是我现在的首要任务,但它可以是你的,在这种情况下,我不会推荐这个解决方案。

    如果您正在寻找为 Prophet 模型提供服务的最简单方法,这就是我能想到的。只是另一个可能的解决方案。

    【讨论】:

      猜你喜欢
      • 2017-07-03
      • 1970-01-01
      • 2020-08-18
      • 1970-01-01
      • 2013-02-01
      • 2017-09-25
      • 2022-08-14
      • 2019-08-14
      • 1970-01-01
      相关资源
      最近更新 更多