如何在Kubernetes上构建机器学习系统

72次阅读
没有评论

共计 3486 个字符,预计需要花费 9 分钟才能阅读完成。

这篇文章主要介绍“如何在 Kubernetes 上构建机器学习系统”的相关知识,丸趣 TV 小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“如何在 Kubernetes 上构建机器学习系统”文章能帮助大家解决问题。

什么是 Kubeflow Pipelines

Kubeflow Pipelines 平台包括:

能够运行和追踪实验的管理控制台

能够执行多个机器学习步骤的工作流引擎(Argo)

用来自定义工作流的 SDK,目前只支持 Python

而 Kubeflow Pipelines 的目标在于:

端到端的任务编排: 支持编排和组织复杂的机器学习工作流,该工作流可以被直接触发,定时触发,也可以由事件触发,甚至可以实现由数据的变化触发;

简单的实验管理: 帮助数据科学家尝试众多的想法和框架,以及管理各种试验。并实现从实验到生产的轻松过渡;

通过组件化方便重用: 通过重用 Pipelines 和组件快速创建端到端解决方案,无需每次从 0 开始的重新构建。

在阿里云上运行 Kubeflow Pipelines

看到 Kubeflow Piplines 的能力,大家是不是都摩拳擦掌,想一睹为快?但是目前国内想使用 Kubeflow Pipeline 有两个挑战:

Pipelines 需要通过 Kubeflow 部署;而 Kubeflow 默认组件过多,同时通过 Ksonnet 部署 Kubeflow 也是很复杂的事情;

Pipelines 本身和谷歌云平台有深度耦合,无法运行在其他云平台上或者裸金属服务器的环境。

为了方便国内的用户安装 Kubeflow Pipelines,阿里云容器服务团队提供了基于 Kustomize 的 Kubeflow Pipelines 部署方案。和普通的 Kubeflow 基础服务不同,Kubeflow Pipelines 需要依赖于 mysql 和 minio 这些有状态服务,也就需要考虑如何持久化和备份数据。在本例子中,我们借助阿里云 SSD 云盘作为数据持久化的方案,分别自动的为 mysql 和 minio 创建 SSD 云盘。br / 您可以在阿里云上尝试一下单独部署最新版本 Kubeflow Pipelines。

前提条件

您需要安装  kustomize

在 Linux 和 Mac OS 环境,可以执行

opsys=linux # or darwin, or windows
curl -s https://api.github.com/repos/kubernetes-sigs/kustomize/releases/latest |\
 grep browser_download |\
 grep $opsys |\
 cut -d   -f 4 |\
 xargs curl -O -L
mv kustomize_*_${opsys}_amd64 /usr/bin/kustomize
chmod u+x /usr/bin/kustomize

在 Windows 环境,可以下载  kustomize_2.0.3_windows_amd64.exe

在阿里云容器服务创建 Kubernetes 集群, 可以参考   文档

部署过程

通过 ssh 访问 Kubernetes 集群,具体方式可以参考文档

下载源代码

yum install -y git
git clone --recursive https://github.com/aliyunContainerService/kubeflow-aliyun

安全配置

3.1 配置 TLS 证书。如果没有 TLS 证书,可以通过下列命令生成

yum install -y openssl
domain= pipelines.kubeflow.org 
openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout kubeflow-aliyun/overlays/ack-auto-clouddisk/tls.key -out kubeflow-aliyun/overlays/ack-auto-clouddisk/tls.crt -subj  /CN=$domain/O=$domain

如果您有 TLS 证书,请分别将私钥和证书保存到 kubeflow-aliyun/overlays/ack-auto-clouddisk/tls.key 和 kubeflow-aliyun/overlays/ack-auto-clouddisk/tls.crt 下

3.2 配置 admin 的登录密码

yum install -y httpd-tools
htpasswd -c kubeflow-aliyun/overlays/ack-auto-clouddisk/auth admin
New password:
Re-type new password:
Adding password for user admin

首先利用 kustomize 生成部署 yaml

cd kubeflow-aliyun/
kustomize build overlays/ack-auto-clouddisk   /tmp/ack-auto-clouddisk.yaml

查看所在的 Kubernetes 集群节点所在的地域和可用区, 并且根据其所在节点替换可用区,假设您的集群所在可用区为  cn-hangzhou-g, 可以执行下列命令

sed -i.bak  s/regionid: cn-beijing/regionid: cn-hangzhou/g  \
 /tmp/ack-auto-clouddisk.yaml
sed -i.bak  s/zoneid: cn-beijing-e/zoneid: cn-hangzhou-g/g  \
 /tmp/ack-auto-clouddisk.yaml

建议您检查一下 /tmp/ack-auto-clouddisk.yaml 修改是否已经设置

将容器镜像地址由  gcr.io  替换为  registry.aliyuncs.com

sed -i.bak  s/gcr.io/registry.aliyuncs.com/g  \
 /tmp/ack-auto-clouddisk.yaml

建议您检查一下 /tmp/ack-auto-clouddisk.yaml 修改是否已经设置

调整使用磁盘空间大小, 比如需要调整磁盘空间为 200G

sed -i.bak  s/storage: 100Gi/storage: 200Gi/g  \
 /tmp/ack-auto-clouddisk.yaml

验证 pipelines 的 yaml 文件

kubectl create --validate=true --dry-run=true -f /tmp/ack-auto-clouddisk.yaml

利用 kubectl 部署 pipelines

kubectl create -f /tmp/ack-auto-clouddisk.yaml

查看访问 pipelines 的方式,我们通过 ingress 暴露 pipelines 服务,在本例子中,访问 IP 是 112.124.193.271。而 Pipelines 管理控制台的链接是: https://112.124.193.271/pipeline/

kubectl get ing -n kubeflow
NAME HOSTS ADDRESS PORTS AGE
ml-pipeline-ui * 112.124.193.271 80, 443 11m

访问 pipelines 管理控制台

如果使用自签发证书,会提示此链接非私人链接,请点击显示详细信息,并点击访问此网站。请输入步骤 2.2 中的用户名 admin 和设定的密码。 

这时就可以使用 pipelines 管理和运行训练任务了。

Q A

为什么这里要使用阿里云的 SSD 云盘?

这是由于阿里云的 SSD 云盘可以设置定期的自动备份,保证 pipelines 中的元数据不会丢失。

如何进行云盘备份?

如果您想备份云盘的内容,可以为云盘   手动创建快照   或者   为硬盘设置自动快照策略   按时自动创建快照。

如何清理 Kubeflow Piplines 部署?

这里的清理工作分为两个部分:

删除 Kubeflow Pipelines 的组件

kubectl delete -f /tmp/ack-auto-clouddisk.yaml

通过释放云盘分别释放 mysql 和 minio 存储对应的两个云盘

关于“如何在 Kubernetes 上构建机器学习系统”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注丸趣 TV 行业资讯频道,丸趣 TV 小编每天都会为大家更新不同的知识点。

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-08-04发表,共计3486字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)