前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >业界 | 谷歌发布机器学习工具库Kubeflow:可提供最佳OSS解决方案

业界 | 谷歌发布机器学习工具库Kubeflow:可提供最佳OSS解决方案

作者头像
机器之心
发布2018-05-09 14:44:37
1.4K0
发布2018-05-09 14:44:37
举报
文章被收录于专栏:机器之心机器之心

选自GitHub

机器之心编译

Kubeflow 是谷歌发布的一个机器学习工具库,致力于使运行在 Kubernetes 上的机器学习变的更轻松、便捷和可扩展;Kubeflow 的目标不是重建其他服务,而是提供一种简便的方式找到最好的 OSS 解决方案。

Kubeflow 项目旨在使 Kubernetes 上的机器学习变的轻松、便捷、可扩展,其目标不是重建其他服务,而是提供一种简便的方式找到最好的 OSS 解决方案。该库包含包含的清单用于创建:

  • 用于创建和管理交互式 Jupyter notebook 的 JupyterHub
  • 可配置为使用 CPU 或 GPU,并通过单一设置调整至单个集群大小的 TensorFlow 训练控制器(Tensorflow Training Controller)
  • TF 服务容器(TF Serving container)

该文档详述在可运行 Kubernetes 的任何环境中运行 kubeflow 项目的步骤。

Kubeflow 目标

其目标是通过发挥 Kubernetes 的特长,从而更便捷地运用机器学习:

  • 在不同的基础设施上实现简单、可重复的便携式部署(笔记本<-> ML 装备 <-> 训练集群 <-> 生产集群)
  • 部署和管理松散耦合的微服务
  • 根据需求进行扩展

由于机器学习从业者可供使用的工具非常多,所以核心目标是你可以根据需求自定义堆栈,并让系统处理「无赖的东西」。虽然我们已开始使用少许技术,但我们正在与很多不同项目展开合作,以涵盖更多额外的工具。最终,我们希望给出一组简单的清单,只要在 Kubernetes 已运行的地方便能轻松使用 ML 堆栈,并可根据部署的集群实现自我配置。

设置

该文档假设你已经有一个可用的 Kubernetes 集群。对于具体的 Kubernetes 安装,可能需要额外的配置。

Minikube

Minikube 是一个让我们在本地运行 Kubernetes 更方便的工具。Minikube 会在笔记本的虚拟环境中运行一个单结点 Kubernetes 集群,从而令用户可以在该环境中试验它或执行日常的开发工作。下面的步骤适用于 Minikube 集群,本文档当前使用的是最新版 0.23.0,我们必须配置 Kubectl 才能访问 Minikube。

谷歌 Kubernetes 引擎

谷歌 Kubernetes 引擎是一个可用于部署容器化应用的托管环境。它融合了提高开发生产力、有效利用资源、自动化运维和开源灵活性方面的最新创新技术,能够加快模型进入市场以及迭代的时间。

谷歌在容器中运行生产工作负载的经验已超过 15 年,他们将在此期间学到的经验知识融入到了 Kubernetes 中。因此,Kubernetes 是行业领先的开源容器协调系统,为 Kubernetes Engine 提供技术支持。

如果读者正在使用谷歌 Kubernetes 引擎,在创建清单前,我们应该先授予自己所要求的 RBAC 角色,因而才能创建或编辑其它 RBAC 角色。

代码语言:javascript
复制
kubectl create clusterrolebinding default-admin --clusterrole=cluster-admin --user=user@gmail.com

快速开始

运行以下命令以快速设置堆栈的所有组件:

代码语言:javascript
复制
kubectl apply -f components/ -R

以上命令建立了 JupyterHub(使用 TensorFlow 训练的 API)和一系列的用于服务的部署文件。这些服务作为配置可以帮助用户在 TensorFlow 中以最低能耗的和便携的方式在不同的环境之间从训练转向服务。可以参考关于这些组件的使用说明。

使用

这部分描述了不同的组件和启动的必要步骤。

建立一个Notebook

一旦创建了 JupyterHub 所需的所有清单,同时也就创建了一个负载平衡器服务。可以使用 kubectl 命令行查看创建信息。

代码语言:javascript
复制
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,可以运行以下命令获取 notebook 的 URL。

代码语言:javascript
复制
minikube service tf-hub-lb --url

http://xx.yy.zz.ww:31942

对于一些云部署,LoadBalancer 服务可能需要花费 5 分钟的时间,这是一个外部 IP 问题。通过再次重复执行 kubectl get svc 命令最终会显示填充的外部 IP 字段。

一旦有了一个外部 IP,就可以在浏览器中访问它。该 hub 默认设置成接受任意的用户名/密码组合。输入了用户名和密码之后,就可以启动一个 single-notebook 服务器、配置计算资源(内存/CPU/GPU),然后继续进行单节点训练。

我们还提供标准的 docker 图像,可用于在 Jupyter 上训练 TensorFlow 模型。

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

在 spawn 窗口,开始新的 Jupyter 实例时,你可以提供上述图像中的一个,这取决于你想在 CPU 还是 GPU 上运行。图像包括所有必备插件(包含用于模型可视化的 Tensorboard)。注意:基于 GPU 的图像大小可达数个 gigabytes,可能需要数分钟才能下载到本地。

此外,在谷歌 Kubernetes 引擎上运行时,公网地址将会暴露,默认是不安全的端点。关于使用 SSL 和身份验证进行生产部署,参见文档:https://github.com/google/kubeflow/blob/master/components/jupyterhub。

训练

TFJob 控制器(TFJob controller)使用 YAML 作为主控参数服务器,使用 worker 帮助运行分布式 TensorFlow。快速启动部署 TFJob 控制器,安装新型 tensorflow.org/v1alpha1 API。你可以向前面提到的 API 提交一份技术参数来进行新的 TensorFlow 训练部署。

技术参数示例如下:

代码语言:javascript
复制
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/ 目录,详细文档参见 tensorflow/k8s 项目,可查看更多使用 TFJob 控制器在 Kubernetes 上运行 TensorFlow jobs 的信息。

服务模型

详细指南参见 https://github.com/google/kubeflow/tree/master/components/k8s-model-server,使用内置 TensorFlow 服务部署设置模型服务。

原文链接:https://github.com//google/kubeflow

本文为机器之心编译,转载请联系本公众号获得授权。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2017-12-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 机器之心 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档