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