【问题标题】:How can I create a Machine Learning API with Python Flask using a Large dataset approx 50GB [closed]如何使用大约 50GB 的大型数据集使用 Python Flask 创建机器学习 API [关闭]
【发布时间】:2019-12-18 10:12:00
【问题描述】:

我想创建一个 API,用户可以在其中输入一些输入,该 API(flask 应用程序)将通过机器学习(lin 回归,k 集群)给我一个预测结果。

在它可以预测结果之前,我需要先训练数据。我的数据集非常大(大约 50GB)。所以这意味着应用程序必须在每次用户输入输入时训练数据?这需要很长时间吧?

如何使用 Flask for ML 处理大型数据集?所以预测很快? 解决这个问题的最佳方法是什么?将 ML 用于 Web 应用程序? 我是新来的,所以任何帮助将不胜感激。

谢谢!

【问题讨论】:

  • 为什么每次输入都需要重新训练?
  • 我应该重新训练它吗?我不知道...我对此很陌生,但是步骤是什么?所以我训练我的数据,而 Python 保存训练后的数据?我应该如何通过 cronjob 训练我的数据?你能解释一下步骤吗?谢谢!
  • 不,这个问题太宽泛了。但几乎可以肯定,每次获得新数据点时,您都​​不应该再次训练。
  • 另一个建议是在Data Science Stack Exchange 中寻找可能的答案,因为当前的答案更侧重于您应该提出的特定编程问题,并提供代码示例作为问题的上下文。

标签: python python-3.x machine-learning flask


【解决方案1】:

除了您要问的主要问题之外,还有几个问题,所以我也会尽力帮助解决这些问题。在我尝试回答您的主要问题之前,让我们先看看几个建议。

只是为了确保您没有重新发明轮子:

如果您仍然对自己的 ML 逻辑感到非常强大,并希望按照自己的方式从部署到生产,那么还有其他考虑因素。我是根据自己的经验写的,我确实尝试过类似的东西,但没有使用这么大的数据集。

您如何存储数据集,将其保存在哪里?这可能很简单,但事实并非如此。如果您运行某种读取数据集的 VM,则它需要关闭。将数据集与 ML 代码放在同一个 VM 中似乎不是解决问题的好方法(紧密耦合,难以快速启动/克隆此类 VM),但将其放在另一个容器中,例如 S3 存储桶或某个单独的 VM相同的网络听起来很合理 - 低延迟、简单的拓扑结构、易于向公众隐藏。

接下来是执行长时间运行任务(训练)的 ML,无论如何它都不适合在实时服务器上,因为没有人会等到它完成 50GB 的处理。会争辩说它也在单独的 VM 上,可以按需扩展,即每个训练请求只需生成 1 个 VM。

好的,那么现在的问题是如何编排这一切?如果没有一些异步消息传递功能,这将非常困难(除了调度之外)。我的意思是,API 服务器通过 Redis pub/sub 或 AWS SNS 之类的方式发送请求会更容易,而您的 ML VM 在后台一一处理这些请求会更容易。

Flask API 或任何其他 API 服务器将位于其中,并会暴露触发器以进行 ML 学习和/或 ML 执行。

我认为您的问题没有简单的答案,但是您可以查看我通过 Node.js(类似于 Flask)公开简单 Tensorflow 脚本的方法,训练然后执行,它可能会在某种程度上对您有所帮助或其他:

【讨论】:

    猜你喜欢
    • 2017-04-02
    • 2015-04-11
    • 1970-01-01
    • 1970-01-01
    • 2011-03-13
    • 1970-01-01
    • 2015-06-07
    • 1970-01-01
    • 2021-11-08
    相关资源
    最近更新 更多