上QQ阅读APP看书,第一时间看更新
1.4 为什么需要Kubernetes
Kubernetes是一个用于自动化部署、扩展和管理容器化应用程序的开源系统。它允许Pipeline在不牺牲可移植性的情况下进行扩展,能够避免云厂商锁定[1]。除了能够从单机切换到分布式集群外,机器学习Pipeline的不同阶段可以请求不同数量或类型的资源。比如,数据准备可能需要在多台机器上运行,而模型训练可能适合在GPU或张量处理单元(TPU)之上进行计算。这种灵活性在云环境中特别有用,你可以只在有需要时才使用昂贵的资源,从而降低成本。
当然,你也可以直接在Kubernetes之上构建容器化机器学习Pipeline,而不使用Kubeflow。然而,Kubeflow的目标是将这个过程标准化,并使实施过程变得更加简单和高效[2]。Kubeflow在你可能用于机器学习实现的工具上提供了一个通用接口。它还使你更容易地配置实现以使用TPU等硬件加速器,而无须更改代码。
[1] Kubernetes通过提供容器编排层来实现避免云厂商锁定。关于Kubernetes的更多信息,请查看文档(https://oreil.ly/h2ami)。
[2] Spotify能够将实验的速度提高7倍。参见这篇Spotify Engineering博客(https://oreil.ly/EoxeS)。