首页 > 解决方案 > 协调工作流程的更便宜的替代方案

问题描述

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

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

在单独的阶段模型将用于:

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

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

因此,我不得不考虑以下选项:

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

一种选择可能是通过将所有内容打包到 AI 平台培训任务中来分解培训工作流程。

使用 Cloud Functions 启动/停止 Composer

我在想一些事情:

  1. 使用 Cloud Function 启动 Composer 实例
  2. 找到从另一个云功能启动 Airflow 工作流程的方法
  3. 工作流结束后发送发布/订阅消息
  4. 使用前面提到的 pub/sub 消息来触发另一个云函数,它将停止 Composer 实例。

在小型 VM 中自托管 Airflow

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

将所有内容 Dockerize 并使用 CloudRun 进行培训

这可能看起来像:

  1. 在 Docker 容器中打包训练作业(具有不同的训练/服务任务入口点)
  2. 使用 Cloud Scheduler(或 Cloud Function,我仍然需要考虑这个)触发 Cloudrun 并执行所有需要的任务。

AFAIK Cloudrun 在运行时仍然有 15 分钟的硬上限,所以这个选项毕竟可能不可行......


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

标签: google-cloud-platformgcp-ai-platform-traininggoogle-ai-platform

解决方案


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


推荐阅读