这个工具包赞了,让Kubernetes上的机器学习如此简单!
Kubeflow项目致力于使Kubernetes上的机器学习变得轻松,便携和可扩展。该项目的目标不是重新创建其他服务,而是为了提供最佳的OSS解决方案的直接方式。包含在此存储库中的清单用于创建以下内容:
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服务部署来设置模型服务。