K8s机器学习包Kubeflow发布1.0,可简化TensorFlow和PyTorch分布式训练工作

历经超过2年的发展,机器学习工具包Kubeflow终于发布了第一个主要版本,Kubeflow是第一个针对Kubernetes,提供可移植与可扩展的机器学习解决方案,让用户利用机器学习工作管线,调度Kubernetes上执行的复杂工作流程。Kubeflow原本称为TensorFlow Extended,是Google内部用来部署TensorFlow模型到Kubernetes的方法。

Kubeflow初始项目的开发者来自Google、思科、IBM、红帽、CoreOS以及CaiCloud,在2017年底在美国Kubecon中对外开源,之后项目便蓬勃发展,现在有来自30个组织上百位的贡献者,参与Kubeflow项目的开发。

官方提到,应用Kubeflow,用户不需要学习新概念或是平台来部署应用程序,也不需要处理Ingress或是网络凭证等问题。Kubeflow的目标是要让机器学习工程师和数据科学家,能够更容易地使用云计算资源,处理机器学习工作负载。

Kubeflow 1.0提供了一组稳定版本的应用程序,提高开发者在Kubernetes上进行开发、构建、训练和部署模型的效率(下图)。这些应用程序包括Kubeflow的用户接口Central Dashboard以及Jupyter笔记本控制器,还有用于分布式训练的Tensorflow和PyTorch运算符,同时也提供管理多重用户的配置文件管理器,和部署升级工具kfctl。

Jupyter笔记本是数据科学家重要工具,而且为了提升实验效率,Jupyter笔记本需要与Kubernetes云计算计算资源集成,以使用GPU训练更大的模型,或是平行执行多个实验。Kubeflow简化了以Kubernetes管理资源的方法,每个数据科学家或团队都可以拥有自己的命名空间,执行各自的工作负载。命名空间提供了安全性与资源隔离,在使用Kubernetes资源配额时,管理员还可以限制个人或是团队使用量。

Kubeflow还让用户能够简单地进行分布式训练,官方提到,当他们启动Kubeflow这个项目时,动机之一便是要利用Kubernetes简化分布式训练。Kubeflow提供了Kubernetes自定义资源,而这些资源会让使用TensorFlow和PyTorch进行分布式训练工作变得简单,只要定义TFJob或是PyTorch资源,自定义控制器便会自动启动并且管理所有独立的程序,并且使这些程序能够互相沟通。

接下来还会有许多任务具在Kubeflow中成熟,像是构建在无服务器管理平台Knative之上的自定义资源KFServing,可帮助用户部署和管理机器学习模型,其模型可解释性功能则正在Alpha测试中,另外,可用来定义复杂机器学习工作流程的工具Pipelines;可关注数据集、工作和模型的Metadata;超参数调校工具Katib,这些工具都正在beta测试中,在未来的发布版本会陆续加入Kubeflow 1.0。