Kubeflow学习指南:生产级机器学习系统实现
上QQ阅读APP看书,第一时间看更新

2.1.3 搭建Kubeflow开发环境

Kubeflow Pipeline系统是基于Python构建的,在本地安装SDK可以让你更快地构建Pipeline。如果不能在本地安装软件,也可以使用Kubeflow的Jupyter环境来构建Pipeline。

1.搭建Pipeline SDK

要开始搭建Pipeline SDK,你需要安装Python(https://oreil.ly/IbfY2)。大家发现为不同的项目创建隔离的虚拟环境非常有帮助,参见例2-4。

例2-4:创建一个虚拟环境

现在你可以使用pip命令来安装Kubeflow Pipeline SDK,参见例2-5。

例2-5:安装Kubeflow Pipeline SDK

如果使用虚拟环境,则每当使用Pipeline SDK时,你都需要激活它。

除了SDK,Kubeflow还提供了一些组件。如例2-6中,使用标准组件的固定版本,我们可以创建更可靠的Pipeline。

例2-6:克隆Kubeflow Pipeline仓库

2.搭建Docker

Docker(https://www.docker.com)是最低要求的重要组成部分,可以让你定制和将库及其他功能添加到自定义容器中。第3章中我们会介绍更多关于Docker的内容。Docker可以从Linux的标准包管理器或macOS的Homebrew中安装。

除了安装Docker,我们还需要一个存储容器镜像的地方,称为容器镜像仓库。Kubeflow集群需要访问容器镜像仓库。Docker公司提供了Docker Hub(https://hub.docker.com),RedHat提供了Quay(https://quay.io),Quay是一个云中立平台。另外,你还可以使用云厂商提供的容器镜像仓库[1]。云厂商提供的容器镜像仓库通常更安全,并且可以用获取镜像所需的权限自动配置Kubernetes集群。在我们的例子中假设你已经通过环境变量$CONTAINER_REGISTRY设置了容器镜像仓库。

如果镜像仓库不在Google云平台上,那么你需要按照Kaniko配置指南(https://oreil.ly/88Ep-)来配置Kubeflow Pipeline容器构建器以访问镜像仓库。

为了确保Docker安装的配置正确,你可以写一行Dc,然后推送到至镜像仓库。对于Dockerfile,我们将使用FROM命令来表示基于Kubeflow TensorFlow notebook容器镜像构建,参见例2-7(详见第9章)。当推送一个容器镜像时,你需要指定tag,其决定镜像的名称、版本以及存储位置,参见例2-8。

例2-7:指定新镜像基于Kubeflow的容器镜像

例2-8:构建新的容器镜像并推送到镜像仓库中使用

上述设置完成后,你可以定制Kubeflow中的容器和组件以满足需求。我们将在第9章中从头开始并深入地研究如何构建容器镜像。

在后续的章节中,我们也会在需要的时候使用该模式添加工具。

3.编辑YAML

虽然在很大程度上Kubeflow已将Kubernetes的细节抽象出来,但有时查看或修改配置还是非常有帮助的。Kubernetes的大部分配置都是用YAML表示的,所以设置工具来方便地查看和编辑YAML也是很有益处的。大多数集成开发环境(IDE)都提供了一些编辑YAML的工具,但有时也可能需要单独安装这些工具。

IntelliJ有一个YAML插件(https://oreil.ly/Awmeq)。对于emacs来说,有很多模式可以用于编辑YAML,包括yaml-mode(https://oreil.ly/lWZE5)(可以从Milkypostman的Emacs Lisp Package Archive(MELPA)(https://melpa.org)安装)。Atom有一个语法高亮YAML包(https://oreil.ly/z47Sa)。如果你使用不同的IDE,在探索可用的插件之前,不要为了更好地编辑YAML而抛弃它。不管采用何种IDE,你都可以使用YAMLlint网站(http://www.yamllint.com)来检查YAML。

[1] 只需搜索“cloudname”并加上容器镜像仓库名称即可获得文档。