云原生学习
机器学习已完全改变了计算领域,为技术提供了全新的场景来解决,并使现有场景更加高效。 但是,为了拥有高效的机器学习解决方案,企业必须确保它包含以下三个概念:可组合性,可移植性和可伸缩性。
机器学习中的3个挑战
可组合性
当大多数人听说过机器学习时,他们通常会首先跳到建立模型。 有许多非常流行的框架使此过程变得更容易,例如TensorFlow,PyTorch,Scikit Learn,XGBoost和Caffe。 这些平台中的每一个旨在使数据科学家在探索问题空间时的工作更加轻松。
![建立生产级解决方案的步骤 Steps of building a production-grade solution](https://opensource.com/sites/default/files/uploads/kubeflow_compostability.png)
但是,在构建实际的生产级解决方案的现实中,存在许多更复杂的步骤 。 其中包括导入,转换和可视化数据; 建立和验证模型; 大规模训练模型; 并将模型部署到生产中。 仅专注于模型训练会丢失数据科学家的日常工作。
可移植性
乔·贝达 ( Joe Beda) :“开发人员/阶段/产品之间的每个差异最终都将导致中断。”机器学习的不同步骤通常属于完全不同的系统。 为了使事情变得更加复杂,还需要考虑底层组件,例如硬件,加速器和操作系统,这增加了变化。 如果没有自动化的系统和工具,这些更改将很快变得不堪重负且难以管理。 这些变化也使得很难从重复的实验中获得一致的结果。
![实验要素 Elements of experimentation](https://opensource.com/sites/default/files/uploads/kubeflow_portability.png)
可扩展性
机器学习(深度学习)最近最大的突破之一是云中更大规模和更大容量的结果。 这包括各种机器类型和特定于硬件的加速器(例如,图形处理单元/张量器处理单元),以及用于提高性能的数据局部性。 此外,可扩展性不仅与硬件和软件有关。 能够通过协作扩大规模并简化大量实验的运行也很重要。
Kubernetes和机器学习
Kubernetes已Swift成为在任何地方部署复杂工作负载的解决方案。 从简单的无状态服务开始,客户就开始利用Kubernetes提供的丰富API,可靠性和性能将复杂的工作负载转移到平台上。 机器学习社区开始利用这些核心优势。 不幸的是,创建这些部署仍然很复杂,需要混合使用供应商的解决方案和手动解决方案。 即使对于中等复杂的设置,也要连接和管理这些服务,这为正寻求探索模型的数据科学家带来了巨大的复杂性障碍。
介绍Kubeflow
为了应对这些挑战,Kubeflow项目于2017年底创建。Kubeflow的使命是使所有人都能轻松地在各地的Kubernetes上开发,部署和管理可组合,便携式和可扩展的机器学习。
Kubeflow驻留在一个开源GitHub存储库中,该存储库致力于使Kubernetes上的机器学习堆栈变得轻松,快速和可扩展。 该存储库包含:
- JupyterHub用于协作和互动式培训
- TensorFlow培训定制资源
- TensorFlow服务部署
- 工作流程的Argo
- SeldonCore用于复杂的推理和非TensorFlow Python模型
- 反向代理(大使)
- 布线使其可在任何地方的任何Kubernetes上运行
由于此解决方案依赖Kubernetes,因此无论Kubernetes运行在哪里,它都可以运行。 只需旋转集群即可开始!
假设您正在通过OpenShift运行Kubernetes,这是如何开始使用Kubeflow的方法。 (您也可以查看Kubeflow用户指南 。)
# Get ksonnet from https://ksonnet.io/#get-started
# Get oc from https://www.openshift.org/download.html
# Create a namespace for kubeflow deployment
oc new-project mykubeflow
# Initialize a ksonnet app, set environment default namespace
# For different kubernetes api versions see 'oc version'
ks init my-kubeflow --api-spec=version:v1.9.0
cd my-kubeflow
ks env set default --namespace mykubeflow
# Install Kubeflow components, for a list of version see https://github.com/kubeflow/kubeflow/releases
ks registry add kubeflow github.com/kubeflow/kubeflow/tree/v0.1.0/kubeflow
ks pkg install kubeflow/core@v0.1.0
ks pkg install kubeflow/tf-serving@v0.1.0
ks pkg install kubeflow/tf-job@v0.1.0
# Create templates for core components
ks generate kubeflow-core kubeflow-core
# Relax OpenShift security
oc login -u system:admin
oc adm policy add-scc-to-user anyuid -z ambassador -nmykubeflow
oc adm policy add-scc-to-user anyuid -z jupyter-hub -nmykubeflow
oc adm policy add-role-to-user cluster-admin -z tf-job-operator -nmykubeflow
# Deploy Kubeflow
ks apply default -c kubeflow-core
要在本地连接到JupyterHub,只需转发到本地端口并连接到http://127.0.0.1:8000
。
要创建TensorFlow培训工作:
# Create a component
ks generate tf-job myjob --name=myjob
# Parameters can be set using ks param e.g. to set the Docker image used
ks param set myjob image http://gcr.io/tf-on-k8s-dogfood/tf_sample:d4ef871-dirty-991dde4
# To run your job
ks apply default -c myjob
要服务TensorFlow模型:
# Create a component for your model
ks generate tf-serving serveInception--name=serveInception
ks param setserveInception modelPath gs://kubeflow-models/inception
# Deploy the model component
ks apply default -c serveInception
下一步是什么?
Kubeflow正在努力进行社区努力,并希望您的帮助! 我们已经与许多团队合作,包括CaiCloud , Red Hat&OpenShift , Canonical , Weaveworks , Container Solutions , Cisco , Intel ,Alibaba,Uber等。 红帽高级总监Reza Shafii解释了他的公司如何实现Kubeflow的承诺:
“ Kubeflow项目是一项必要的进步,它使得在Kubernetes上轻松建立和生产机器学习工作负载变得非常容易,我们预计它将大大扩展更多企业使用该平台的机会。我们期待与Kubeflow合作。项目成员。”
如果您现在想在浏览器中试用Kubeflow ,我们已经与Katacoda合作使它变得超级简单。
您还可以从此视频中了解有关Kubeflow的更多信息。
我们才刚刚开始! 我们很乐意为您提供帮助。
- 加入松弛频道
- 加入kubeflow-讨论电子邮件列表
- 订阅Kubeflow Twitter帐户
- 下载并运行Kubeflow,并提交错误
云原生学习