部署和调度深度学习模型的最佳方式

数据挖掘 深度学习 喀拉斯
2022-02-14 02:27:48

我正在寻找部署我的深度学习应用程序的最佳方法,该应用程序执行以下操作:

  1. 从中获取数据BigQuery
  2. 发现anomaly(基于训练的模型)
  3. mysql在数据库中抛出输出。

我希望这个程序像 cronjob 一样每天在特定时间运行。

除了使用 a 之外,我如何实现此部署的任何线索,cronjob因为当它不使用时,没有必要为时间和资源付费。

提前致谢。

3个回答

有两个步骤是必要的,您需要一个经过训练的模型,并且您需要定期将此模型应用于新数据。

第 1 步:训练模型后,您需要以某种方式对其进行序列化。这可以通过您的深度学习框架中的工具,或者通过将参数保存在某处并将代码保存在其他地方,或者通过腌制整个对象来实现。存储此模型工件后,我们可以在步骤 2 中重用此拟合模型。

第 2 步:安排一些加载此模型工件的作业,从 BigQuery 加载数据(以块或最后一个时间段的行的完整范围),通过您的模型运行这些数据并保存结果。时间表只启动了一些脚本,如何正确运行这些预测取决于规模。如果这是一项非常大的工作,您可能不得不通过 Spark 之类的方式分发它。如果它是可管理的,您可以在一台机器上执行此操作,也许通过分块数据。

除了使用 cronjob 之外,因为在不使用时无需支付时间和资源

听起来您想使用云计算。

我建议查看AWS 在其 CloudWatch 工具中提供的事件。您可以设置一个作业,然后安排它在您喜欢的任何时间运行 - 他们甚至有一个 cron-job 界面来指定类似的内容:每个小时

查看有关事件的相关 AWS 文档

您可能可以基于单个 AWS 实例进行设置,检查您是否满足用例的三个要求:

  1. 它有足够的网络带宽在合理的时间内接收您的 BigQuery 结果
  2. 它具有执行模型所需的硬件(例如,是否需要 GPU?)
  3. 它可以保存或链接到您自己的mySQL数据库

甚至可能有很好的 AMI(亚马逊系统映像 - 带有预装软件)可以用于您的用例!

最好的方法是让单独的容器加载数据,然后在Kubernetes中自行部署管道。他们实际上有一个名为 [Kubeflow] 的工具,仅用于机器学习部署。