我正在探索 kubeflow 管道和 Vertex AI 管道。据我了解,Vertex AI 管道是 kubeflow 管道的托管版本,因此不需要部署完整的 kubeflow 实例。在这方面,抛开定价不谈,Vertex AI 管道是更好的选择。但是,在 kubeflow 中,可以创建实验,这是我在 Vertex AI 管道中没有找到的等价物。我能够在文档中发现 Vertex AI 不支持的唯一 kubeflow 功能是“缓存过期”和“递归”,但它们没有提及任何关于实验的内容。让我想知道在两者之间做出决定时是否还有其他值得考虑的差异。
2 回答
在过去的几个月里,我所在的团队一直在研究 Vertex AI 并与 KubeFlow 进行比较。正如您所指出的,Vertex AI 实验与 KubeFlow 的不同。Vertex 的实验只是Tensorboard 实例和Vizier 超参数调优的接口。
在 Vertex AI 中似乎没有对流水线进行分组以进行实验的等价物。然而,正如KubeFlow for Machine Learning的作者所指出的那样,KubeFlow 自己的实验跟踪功能非常有限,这就是为什么他们更喜欢将 KubeFlow 与 MLflow 一起使用。
我注意到的其他一些差异:
- 低级访问:作为托管服务的 Vertex 不会公开运行管道步骤的实例,而在 KubeFlow 中它们是 Kubernetes 内部的普通 Pod,因此理论上您应该拥有更多的低级控制。
- 管道注册表/管道版本:在 KubeFlow 中,您可以在工具本身内存储管道并跟踪已编译管道的版本,以及更改的描述。在 Vertex 中,没有等价物,您必须将管道对象存储在 GCS 中(但我认为您最好还是在版本控制系统中跟踪管道代码)。
- Vertex 尚不支持计划/重复的管道运行。
除了这些以及您已经提到的之外,Vertex 似乎在管道执行功能方面与 KubeFlow 具有同等的功能,并且具有不必管理 Kubernetes 集群的巨大优势。
实际上,Vertex AI 是一个无服务器平台,用于执行内置的管道:
Kubeflow Pipelines SDK v1.8.9 或更高版本,或 TensorFlow Extended v0.30.0 或更高版本。
事实上,几乎所有你用来创建的 Kubeflow 管道都可以在 Vertex AI 中运行得很好,你只需要考虑你在文档中已经提到的方面(io、dsl 和 storge)(哪种常识,因为你不能从磁盘,必须使用外部文件源)。
所以,基本上就是你运行它的地方。import kfp
如果您使用 kubeflow(即),开发实际上不会改变。
更新:几乎所有功能也支持实验。只需在此处查看:Experiments – Vertex AI – Google Cloud Platform
一些参考资料: