我目前正在生产一个ML模型,并正在研究我应该依靠哪个工具来协调整个过程:
- 从BQ获取数据
- 进行一些特征工程和一般数据预处理
- 创建训练/测试拆分
- 以.csv格式转储数据(在gs存储桶中(
- 开始培训工作并保存模型工件
在单独的阶段,模型将用于:
- 从BQ表的输入中检索批次预测
- 在不同的BQ表中插入上面计算的预测
现在,我完全理解编排这样的工作流程将是Cloud Composer的最佳选择,但该项目是为非营利组织设计的,每月381欧元的价格对他们来说并不微不足道。
因此,我只能考虑以下选项:
将所有内容打包到培训任务中
一种选择可以是而不是,通过将所有内容打包到AI平台培训任务中来分解培训工作流程。
使用Cloud函数启动/停止Composer
我在想:
- 使用Cloud函数启动Composer实例
- 找到从另一个云功能启动气流工作流的方法
- 工作流结束后发送发布/订阅消息
- 使用前面提到的pub/sub消息来激发另一个云函数,该函数将停止Composer实例
小型虚拟机中的自主机气流
这显然需要更多的研究才能使其发挥作用。特别是因为我不知道如何在Nginx中实现oauth。
Dockerize一切并使用CloudRun进行培训
这可能看起来像:
- 在Docker容器中打包培训作业(具有不同的训练/服务任务入口点(
- Fire Cloudrun使用Cloud Scheduler(或Cloud Function,仍然需要考虑这一点(并执行所有需要的任务
AFAIK Cloudrun在运行时仍然有15分钟的硬上限,所以这个选项可能根本不可行。。。
我应该如何解决这个问题?我不确定我是否忽略了比上面列出的选项更简单的东西。
有一个最近的产品https://cloud.google.com/workflows,您可以使用它来管理,例如,对BQ api的调用,以创建中间表(具有功能eng和转换(,然后导出数据,最后触发模型训练。工作流编排可能是免费的,因为目前有一个免费层,您只需支付BQ查询、存储和培训的费用。