这个工具包赞了,让Kubernetes上的机器学习如此简单!

Kubeflow项目致力于使Kubernetes上的机器学习变得轻松,便携和可扩展。该项目的目标不是重新创建其他服务,而是为了提供最佳的OSS解决方案的直接方式。包含在此存储库中的清单用于创建以下内容:

这个工具包赞了,让Kubernetes上的机器学习如此简单!

  • 1.一个JupyterHub创建和管理互动Jupyter笔记本电脑

  • 2.Tensorflow培训控制器可配置为使用CPU或GPU,并通过单一设置调整到群集大小

  • 3.TF服务容器

本文档详细介绍了在任何运行Kubernetes的环境中运行kubeflow项目所需的步骤。

Kubeflow使命

目标是通过让Kubernetes做到以下几点:帮助人们更轻松地使用机器学习。

  • 简单,可重复,便携式部署在不同的基础设施上(笔记本电脑< - > ML rig < - >培训集群< - >生产集群)

  • 部署和管理松散耦合的微服务

  • 根据需求进行缩放

因为ML从业者使用了很多不同类型的工具,所以你可以根据自己的需求来定制堆栈,这是一个关键的目标,并让系统处理这些“无聊的东西”。虽然我们已经开始使用一些技术,但我们正在与许多不同的项目合作,以增加更多的工具。

最终,项目团队希望有一套简单的清单,可以让你轻松地在任何位置使用ML堆栈。Kubernetes已经运行,并且可以根据所部署的群集进行自我配置。

建立

本文档假定你已经有一个Kubernetes集群。对于特定的Kubernetes安装,可能需要额外的配置。

Minikube

Minikube是一个让本地运行Kubernetes变得简单的工具。 Minikube在笔记本电脑的虚拟机内部运行一个单节点Kubernetes集群,以便用户试用Kubernetes或者日常开发Kubernetes。下面的步骤适用于minikube群集。写这个文档时的最新版本是0.23.0。你还必须配置kubectl才能访问minikube。

Google Kubernetes引擎

Google Kubernetes Engine是用于部署由Google Cloud提供支持的Kubernetes应用程序的托管环境。如果使用Google Kubernetes Engine,则在创建清单之前,必须授予你自己的用户必要的RBAC角色以创建/编辑其他RBAC角色。

kubectl create clusterrolebinding default-admin --clusterrole=cluster-admin [email protected]

快速开始

为了快速设置堆栈的所有组件,请运行:

kubectl apply -f components/ -R

上面的命令设置了JupyterHub,一个使用Tensorflow进行培训的API和一组服务的部署文件。一起使用时,这些配置可以帮助用户在不同环境之间以便携方式轻松使用Tensorflow,从而帮助用户从培训到服务。可以参考下面的每个组件的使用说明。

用法

本节介绍不同的组件和开始所需的步骤。

带上一个笔记本

一旦创建了JupyterHub所需的所有清单,就会创建负载均衡服务。你可以使用kubectl命令行来检查它的存在。

kubectl get svc NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE kubernetes ClusterIP 10.11.240.1 <none> 443/TCP 1h tf-hub-0 ClusterIP None <none> 8000/TCP 1m tf-hub-lb LoadBalancer 10.11.245.94 xx.yy.zz.ww 80:32481/TCP 1m

如果使用minikube,则可以运行以下命令获取笔记本的URL。

minikube service tf-hub-lb --url
http://xx.yy.zz.ww:31942

对于某些云部署,LoadBalancer服务最多可能需要五分钟才能显示外部IP地址。重新执行kubectl get svc将最终显示填充的外部IP字段。

一旦你有一个外部的IP,你可以继续浏览你的浏览器。网关默认配置为采取任何用户名/密码组合。输入用户名和密码后,可以启动单台笔记本服务器,请求任何资源(内存/ CPU / GPU),然后继续执行单节点培训。

还提供标准docker镜像,可以使用Jupyter来训练Tensorflow模型。

  • gcr.io/kubeflow/tensorflow-notebook-cpu

  • gcr.io/kubeflow/tensorflow-notebook-gpu

在生成窗口中,当启动一个新的Jupyter实例时,可以提供上面的镜像之一来开始,这取决于是要运行在CPU还是GPU上。镜像包括所有必需的插件,包括Tensorboard,可用于丰富的可视化和洞察模型。请注意,基于GPU的镜像的大小为几GB,可能需要几分钟才能进行本地化。

另外,在Google Kubernetes Engine上运行时,公共IP地址将暴露在互联网上,默认情况下是不安全的端点。对于使用SSL和身份验证的生产部署,请参阅文档。

训练

TFJob控制器为主,参数服务器和工作人员提供YAML规范以帮助运行distributed tensorflow。快速入门部署一个TFJob控制器并安装一个新的tensorflow.org/v1alpha1 API类型。可以通过向上述API提交规范来创建新的Tensorflow Training部署。

示例规范如下所示:

apiVersion: "tensorflow.org/v1alpha1"
kind: "TfJob"
metadata:
 name: "example-job"
spec:
 replicaSpecs:
 - replicas: 1
 tfReplicaType: MASTER
 template:
 spec:
 containers:
 - image: gcr.io/tf-on-k8s-dogfood/tf_sample:dc944ff
 name: tensorflow
 restartPolicy: OnFailure
 - replicas: 1
 tfReplicaType: WORKER
 template:
 spec:
 containers:
 - image: gcr.io/tf-on-k8s-dogfood/tf_sample:dc944ff
 name: tensorflow
 restartPolicy: OnFailure
 - replicas: 2
 tfReplicaType: PS

对于可运行示例,请查看tf-controller-examples /目录下的内容。有关使用TfJob控制器在Kubernetes上运行TensorFlow作业的更多信息,可以在tensorflow / k8s存储库中找到详细的文档。

服务模型

请参阅components / k8s-model-server中的说明,通过附带的Tensorflow服务部署来设置模型服务。

Github地址库:https://github.com/google/kubeflow

相关推荐