DataBricks+Kedro Vs GCP+Kubeflow Vs服务器+Kedro+气流



我们正在10多家公司之间部署一个数据联盟。Wi将为所有公司部署几个机器学习模型(通常是高级分析模型),我们将管理所有模型。我们正在寻找一种管理多个服务器、集群和数据科学管道的解决方案。我喜欢kedro,但不确定在使用kedro的同时管理它的最佳选择是什么。

总之,我们正在寻找最好的解决方案来管理不同服务器中的几个模型、任务和管道,可能还有Spark集群。我们目前的选择是:

  • AWS作为我们的数据仓库和Databricks,用于管理服务器、集群和任务。我觉得数据砖的笔记本电脑不是构建管道和协作的好解决方案,所以我想将kedro连接到数据砖(这好吗?使用数据砖调度kedro管道的运行容易吗?)

  • 使用GCP进行数据仓库,使用kubeflow(iin GCP)进行模型部署、管道管理和时间表以及所需资源

  • 从ASW或GCP设置服务器,安装kedro并用气流安排管道(我看到管理20台服务器和40条管道时遇到了大问题)

我想知道是否有人知道这些替代方案之间的最佳选择,它们的缺点和优点,或者是否还有更多的可能性。

我会尝试总结我所知道的,但要注意,我不是KubeFlow项目的一部分。

Databricks上的Kedro

我们的方法是用CI构建我们的项目,然后在笔记本上执行管道。我们没有使用kedro推荐的使用databricks连接的方法,因为Jobs和Interactive Clusters(DB连接所需)之间的价格差异很大。如果您正在处理几个TB的数据,这很快就会变得相关。

作为DS,这种方法可能感觉很自然,作为SWE,尽管它不是。在笔记本电脑上运行管道让人感觉很不舒服。它有效,但感觉没有工业化。Databricks在自动上下旋转集群方面表现良好;为您管理运行时。因此,他们的增值是将IaaS从您身上抽象出来(稍后会详细介绍)。

GCP"Cloud Native">

Pro:GCP的主要卖点是BigQuery。这是一个非常强大的平台,因为从第0天起你就可以提高工作效率。我见过人们在上面构建整个网络API。KubeFlow不与GCP绑定,所以你可以稍后将其移植到其他地方。Kubernetes还允许你在集群上运行任何其他你想要的东西,API的,流媒体,web服务,网站,等等。

Con:Kubernetes很复杂。如果你有10多名工程师来长期运行这个项目,你应该没事。但不要低估Kubernetes的复杂性。它对云的意义就如同Linux对操作系统世界的意义一样。想想日志管理、嘈杂的邻居(一个集群用于web API+批处理火花作业)、多集群管理(每个部门/项目一个集群)、安全性、资源访问等。

IaaS服务器方法

您的最后一种选择是手动安装服务器,只有当您有一个庞大的团队,拥有极其庞大的数据,并且正在构建一个长期的产品,其收入能够承受巨大的维护成本时,我才会建议您这样做。

背后的人

你们地区的人才市场情况如何?如果你能雇佣有GCP知识的经验丰富的工程师,我会选择第二种解决方案。GCP是一个成熟的;"本地";平台,因为它为客户抽象了很多东西。如果你的市场主要有AWS工程师,那可能是一条更好的道路。如果你有一些kedro工程师,这也有相关性。注意,kedro是不可知论者,可以在任何地方运行。它实际上只是python代码。

主观建议

我主要从事AWS项目和一些GCP项目,我会选择GCP。我会使用平台的组件(BigQuery、Cloud Run、PubSub、Functions、K8S)作为工具箱,从中进行选择,并围绕它建立一个组织。Kedro可以在任何这些上下文中运行,作为调度器触发的作业,作为Kubernetes上的容器,或者作为将数据导入(或导出)BigQuery的ETL管道。

而Databricks是";较少的管理";相比原始的AWS,它仍然需要考虑服务器和VPC网络费用。BigQuery只是GB查询。函数只是调用计数。这些高级组件将使您能够快速向客户展示价值,并且您只需要在扩展时更深入(RaaS->PaaS->IaaS)。

AWS在IaaS上也有这些更高级别的抽象,但总的来说,谷歌的产品似乎是最成熟的。主要是因为他们发布了内部使用了近十年的工具,而AWS则为市场构建了新的工具。AWS是IaaS之王。

最后,两位前同事在今年秋天早些时候讨论了ML工业化框架

最新更新