编排工作流程的更便宜的替代方案

Cheaper alternative to orchestrate workflow

我目前正在将 ML 模型投入生产,并且正在研究我应该依靠哪个工具来协调整个过程:

  1. 从BQ抓取数据。
  2. 做一些特征工程和一般数据预处理
  3. 创建 train/test 个拆分。
  4. 以 .csv 格式转储数据(在 gs 存储桶中)
  5. 开始训练作业并保存模型工件

在单独的舞台模型将用于:

  1. 从 BQ table 的输入中检索批量预测。
  2. 在不同的 BQ 中插入上面计算的预测 table。

现在,我完全理解编排这样的工作流将是 Cloud Composer 的最佳选择,但该项目是针对非营利组织的,每月 381 欧元的定价对他们来说并非微不足道。

因此,我只能考虑以下选项:

将所有内容打包到训练任务中

一个选项可能只是不是通过将所有内容打包到 AI 平台训练任务中来分解训练工作流程。

使用 Cloud Functions start/stop Composer

我的想法是:

  1. 使用 Cloud Functions 启动 Composer 实例
  2. 找到一种从另一个 Cloud Function 启动 Airflow 工作流程的方法
  3. 工作流结束后发送 pub/sub 消息
  4. 使用上述 pub/sub 消息来触发另一个将停止 Composer 实例的 Cloud Function。

在小型 VM 中自行托管 Airflow

这显然需要更多的研究才能让它发挥作用。特别是因为我不知道如何在 Nginx 中实现 oauth。

Docker对所有内容进行处理并使用 CloudRun 进行训练

这可能看起来像:

  1. 在 Docker 容器中打包训练作业(train/serve 任务有不同的入口点)
  2. 使用 Cloud Scheduler(或 Cloud Function,我仍然需要思考)启动 Cloudrun 并执行所有需要的任务。

AFAIK Cloudrun 在运行时仍有 15 分钟的硬上限,因此此选项可能根本不可行...


我该如何解决这个问题?我不确定我是否忽略了比上面列出的选项更简单的东西。

有这个最新产品 https://cloud.google.com/workflows,您可以使用它来管理,例如,调用 BQ api 来创建中间表(具有特征 eng 和转换),然后导出数据最后触发模型训练。 工作流编排可能是免费的,因为目前有免费套餐,您只需为 BQ 查询、存储和培训付费。