暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

基于K8s的机器学习工作流框架-Kubeflow

火火日记 2019-11-10
2096

说到机器学习工具,尤其是在深度学习领域,大家可能马上会想到Tensorflow、Pytorch、Caffee等工具。但这些工具主要是解决模型训练的问题,而实际机器学习的生命周期中模型训练只是其中的一小部分。


在现实环境中由于机器学习工程的复杂性、较长的工作流链路、数据版本、模型迭代频繁等问题,企业往往需要构建完善的机器学习平台来管理整个机器学习生命周期。如谷歌的Tensorflow Extened、Facebook

的FBLearner Flow、Uber的Michelangelo等...



那么今天我要向大家介绍的是由谷歌公司开源的,端到端的机器学习工作流框架Kubeflow。


什么是Kubeflow?

顾名思义,Kubeflow是Kubernetes+Tensorflow,是谷歌为了支持自家Tensorflow的部署和管理开发的开源平台。此外它也支持Pytorch和基于Python的Sklearn等主流的机器学习引擎。

近两年越来越多的公司在基于K8s的环境中运行各种各样的工作负载。像AI公司也都纷纷尝试在K8s上运行Tensorflow、Faffe、MXNet等分布式学习任务。而Kubeflow与其他产品相比较,它的最大特点就是基于强大的K8s基础上构建。所以它的未来发展和生态系统目前都比较看好。


其核心组件包括

Jupyterhub:多租户的Notebook服务(Server)

Tensorflow/Pytorch/MXnet:主要机器学习引擎

Seldon:提供在K8s上对于机器学习模型的部署

Argo:基于K8s的工作流引擎

Ambassador:API Gateway

Istio:提供微服务的管理,Telemetry收集

Ksonnet:K8s部署工具



如何在Cloud环境中部署Kubeflow?

下面我给大家Step by Step的介绍,如何在Oracle Cloud上快速搭建Kubeflow环境。感兴趣的朋友可以申请免费试用账号试下

(参照上一篇公众号)

https://www.oracle.com/index.html


1. 创建Kubernetes Cluster


1.1 生成Compartment

菜单中选择Identity并选择Compartment


填写Compartment相关信息


1.2 创建Oracle Kubernetes Engine

在Developer Services中选择Container Clusters


输入Cluster Name,K8s版本并选择“Quick Create”,系统会自动帮你创建Virtual Cloud Network、Subnet、Security List等内容。


Cluster创建完毕后可以看到如下内容。


2. 安装Oracle Cloud Infrastructure CLI


2.1 在Linux中安装OCI CLI

按照如下命令安装

bash -c "$(curl -L https://raw.githubusercontent.com/oracle/oci-cli/master/scripts/install/install.sh)"



中间需要重新启动Linux


安装成功后会看到如下界面


2.2 配置OCI Config文件

. ~/.bashrc
oci setup config


之后需要分别输入Cloud用户的OCID、Tenancy、Instance所在的Region、Key等信息。


其中,Cloud用户的OCID可以在Profile的user中找到。


Tenency也可以在Profile中找到。



然后输入Instance所在的Region


最后生成RSA Key后,Config 文件生成完毕


另外还需要把生成的Public Key复制,并粘贴到Cloud Console中


粘贴到Profile——User Setting——API Keys——Public Keys里


3. 安装kubectl


首先可以通过如下命令,确认OCI Instance的情况

oci compute instance list --compartment-id=


生成K8s Config文件

oci ce cluster create-kubeconfig --cluster-id ocid1.cluster.oc1.ap-seoul-1.aaaaaaaaaezdczrwgvqwczjsmi4wcndegq3genrxhaywcobtgctdcojvgm2d --file /home/jett/.kube/config --region ap-seoul-1


不同的Linux系统安装kubectl有差异

【Ubuntu】

sudo apt-get update && sudo apt-get install -y apt-transport-https
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
echo "deb https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee -a /etc/apt/sources.list.d/kubernetes.list
sudo apt-get update
sudo apt-get install -y kubectl


【CentOS,RHEL】

cat <<EOF > /etc/yum.repos.d/kubernetes.repo[kubernetes]name=Kubernetesbaseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64enabled=1gpgcheck=1repo_gpgcheck=1gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpgEOFyum install -y kubectl


安装完毕后可确认如下画面


最后可以通过kubectl命令,确认K8s状态

kubectl get pods --all-namespaces


4. 安装Kubeflow

$ git clone https://github.com/canonical-labs/kubeflow-tools
$ kubeflow-tools/install-kubeflow.sh


安装完成后可以看到如下画面


需要把上图中的端口,添加到Virtual Cloud Network的 Security List中分配权限。


复制IP和端口,在浏览器中即可访问Kubeflow Dashboad


如下可以生成Jupyter notebook Server

(账号密码均为admin)


今天就到这里,谢谢大家!


文章转载自火火日记,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论