像Google一样构建机器学习系统 - 在阿里云上搭建Kubeflow Pipelines

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
简介: 谈到机器学习工作流平台,Google的工程经验非常丰富,它的TensorFlow Extended机器学习平台支撑了Google的搜索,翻译,视频等核心业务;更重要的是其对机器学习领域工程效率问题的理解深刻,

本系列将利用阿里云容器服务,帮助您上手Kubeflow Pipelines.

介绍

机器学习的工程复杂度,除了来自于常见的软件开发问题外,还和机器学习数据驱动的特点相关。而这就带来了其工作流程链路更长,数据版本失控,实验难以跟踪、结果难以重现,模型迭代成本巨大等一系列问题。为了解决这些机器学习固有的问题,很多企业构建了内部机器学习平台来管理机器学习生命周期,其中最有名的是Google的Tensorflow Extended,Facebook的FBLearner Flow,Uber的Michelangelo,遗憾的是这些平台都需要绑定在公司内部的基础设施之上,无法彻底开源。而这些机器学习平台的骨架就是机器学习工作流系统,它可以让数据科学家灵活定义自己的机器学习流水线,重用已有的数据处理和模型训练能力,进而更好的管理机器学习生命周期。

1_overview

谈到机器学习工作流平台,Google的工程经验非常丰富,它的TensorFlow Extended机器学习平台支撑了Google的搜索,翻译,视频等核心业务;更重要的是其对机器学习领域工程效率问题的理解深刻,

Google的Kubeflow团队于2018年底开源了Kubeflow Pipelines(KFP), KFP的设计与Google内部机器学习平台TensorFlow Extended一脉相承,唯一的区别是KFP运行在Kubenretes的平台上,TFX是运行在Borg之上的。

什么是Kubeflow Pipelines

Kubeflow Pipelines平台包括:

  • 能够运行和追踪实验的管理控制台
  • 能够执行多个机器学习步骤的工作流引擎(Argo)
  • 用来自定义工作流的SDK,目前只支持Python

而Kubeflow Pipelines的目标在于:

  • 端到端的任务编排: 支持编排和组织复杂的机器学习工作流,该工作流可以被直接触发,定时触发,也可以由事件触发,甚至可以实现由数据的变化触发
  • 简单的实验管理: 帮助数据科学家尝试众多的想法和框架,以及管理各种试验。并实现从实验到生产的轻松过渡。
  • 通过组件化方便重用: 通过重用Pipelines和组件快速创建端到端解决方案,无需每次从0开始的重新构建。

在阿里云上运行Kubeflow Pipelines

看到Kubeflow Piplines的能力,大家是不是都摩拳擦掌,想一睹为快?但是目前国内想使用Kubeflow Pipeline有两个挑战:
1.Pipelines需要通过Kubeflow部署;而Kubeflow默认组件过多,同时通过Ksonnet部署Kubeflow也是很复杂的事情。 2.Pipelines本身和谷歌云平台有深度耦合,无法在运行其他云平台上或者裸金属服务器的环境。

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

您可以在阿里云上尝试一下单独部署最新版本Kubeflow Pipelines。

前提条件

在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集群, 可以参考 文档

部署过程

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

2.下载源代码

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

3.安全配置

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.keykubeflow-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

4.首先利用kustomize生成部署yaml

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

5.查看所在的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修改是否已经设置

6.将容器镜像地址由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修改是否已经设置

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

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

8.验证pipelines的yaml文件

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

9.利用kubectl部署pipelines

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

10.查看访问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

11.访问pipelines管理控制台

如果使用自签发证书,会提示此链接非私人链接,请点击显示详细信息, 并点击访问此网站。

non_tls

请输入步骤2.2中的用户名admin和设定的密码

auth

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

pipelines

Q&A

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

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

2.如何进行云盘备份?

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

3.如何清理Kubeflow Piplines部署?

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

  • 删除Kubeflow Pipelines的组件
kubectl delete -f /tmp/ack-auto-clouddisk.yaml
  • 通过释放云盘分别释放mysql和minio存储对应的两个云盘

4.如何使用现有云盘作为数据库存储,而避免自动创建云盘?

请参考文档

总结

本文为您初步介绍了Kubeflow Pipelines的背景和其所要解决的问题,以及如何在阿里云上通过Kustomize快速构建一套服务于机器学习的Kubeflow Pipelines,后续我们会分享如何利用Kubeflow Pipelines开发一个完整的机器学习流程。

相关实践学习
巧用云服务器ECS制作节日贺卡
本场景带您体验如何在一台CentOS 7操作系统的ECS实例上,通过搭建web服务器,上传源码到web容器,制作节日贺卡网页。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
目录
相关文章
|
2月前
|
机器学习/深度学习 测试技术
阿里云入选Gartner数据科学和机器学习平台挑战者象限
Gartner® 正式发布了《数据科学与机器学习平台魔力象限》报告(Magic Quadrant™ for Data Science and Machine Learning Platforms),阿里云成为唯一一家入选该报告的中国厂商,被评为“挑战者”(Challengers)。
|
5月前
|
机器学习/深度学习 人工智能 专有云
人工智能平台PAI使用问题之怎么将DLC的数据写入到另一个阿里云主账号的OSS中
阿里云人工智能平台PAI是一个功能强大、易于使用的AI开发平台,旨在降低AI开发门槛,加速创新,助力企业和开发者高效构建、部署和管理人工智能应用。其中包含了一系列相互协同的产品与服务,共同构成一个完整的人工智能开发与应用生态系统。以下是对PAI产品使用合集的概述,涵盖数据处理、模型开发、训练加速、模型部署及管理等多个环节。
|
2月前
|
机器学习/深度学习 人工智能 自然语言处理
【MM2024】阿里云 PAI 团队图像编辑算法论文入选 MM2024
阿里云人工智能平台 PAI 团队发表的图像编辑算法论文在 MM2024 上正式亮相发表。ACM MM(ACM国际多媒体会议)是国际多媒体领域的顶级会议,旨在为研究人员、工程师和行业专家提供一个交流平台,以展示在多媒体领域的最新研究成果、技术进展和应用案例。其主题涵盖了图像处理、视频分析、音频处理、社交媒体和多媒体系统等广泛领域。此次入选标志着阿里云人工智能平台 PAI 在图像编辑算法方面的研究获得了学术界的充分认可。
【MM2024】阿里云 PAI 团队图像编辑算法论文入选 MM2024
|
27天前
|
机器学习/深度学习 人工智能 自然语言处理
【EMNLP2024】阿里云人工智能平台 PAI 多篇论文入选 EMNLP2024
阿里云人工智能平台 PAI 的多篇论文在 EMNLP2024 上入选。论文成果是阿里云与华南理工大学金连文教授团队、复旦大学王鹏教授团队共同研发。EMNLP 是人工智能自然语言处理领域的顶级国际会议,聚焦于自然语言处理技术在各个应用场景的学术研究,尤其重视自然语言处理的实证研究。该会议曾推动了预训练语言模型、文本挖掘、对话系统、机器翻译等自然语言处理领域的核心创新,在学术和工业界都有巨大的影响力。此次入选标志着阿里云人工智能平台 PAI 在自然语言处理和多模态算法能力方面研究获得了学术界认可。
|
2月前
|
JSON 测试技术 API
阿里云PAI-Stable Diffusion开源代码浅析之(二)我的png info怎么有乱码
阿里云PAI-Stable Diffusion开源代码浅析之(二)我的png info怎么有乱码
|
3月前
|
SQL 监控 大数据
通过Google Dataflow,我们能够构建一个高效、可扩展且易于维护的实时数据处理系统
【9月更文挑战第7天】随着大数据时代的到来,企业对高效数据处理的需求日益增加,特别是在实时分析和事件驱动应用中。Google Dataflow作为Google Cloud Platform的一项服务,凭借其灵活、可扩展的特点,成为实时大数据处理的首选。本文将介绍Dataflow的基本概念、优势,并通过一个电商日志分析的实际案例和示例代码,展示如何构建高效的数据处理管道。Dataflow不仅支持自动扩展和高可用性,还提供了多种编程语言支持和与GCP其他服务的紧密集成,简化了整个数据处理流程。通过Dataflow,企业可以快速响应业务需求,优化用户体验。
74 3
|
4月前
|
SQL 监控 大数据
"解锁实时大数据处理新境界:Google Dataflow——构建高效、可扩展的实时数据管道实践"
【8月更文挑战第10天】随着大数据时代的发展,企业急需高效处理数据以实现即时响应。Google Dataflow作为Google Cloud Platform的强大服务,提供了一个完全托管的流处理与批处理方案。它采用Apache Beam编程模型,支持自动扩展、高可用性,并能与GCP服务无缝集成。例如,电商平台可通过Dataflow实时分析用户行为日志:首先利用Pub/Sub收集数据;接着构建管道处理并分析这些日志;最后将结果输出至BigQuery。Dataflow因此成为构建实时数据处理系统的理想选择,助力企业快速响应业务需求。
227 6
|
4月前
|
机器学习/深度学习 存储 人工智能
【ACL2024】阿里云人工智能平台PAI多篇论文入选ACL2024
近期,阿里云人工智能平台PAI的多篇论文在ACL2024上入选。论文成果是阿里云与阿里集团安全部、华南理工大学金连文教授团队、华东师范大学何晓丰教授团队共同研发。ACL(国际计算语言学年会)是人工智能自然语言处理领域的顶级国际会议,聚焦于自然语言处理技术在各个应用场景的学术研究。该会议曾推动了预训练语言模型、文本挖掘、对话系统、机器翻译等自然语言处理领域的核心创新,在学术和工业界都有巨大的影响力。此次入选标志着阿里云人工智能平台PAI在自然语言处理和多模态算法、算法框架能力方面研究获得了学术界认可。
|
5月前
|
数据采集 人工智能 自然语言处理
阿里云百炼平台深度体验:智能问答与模型训练的创新之旅
在人工智能的浪潮中,阿里云百炼平台以其强大的大模型开发能力,为企业和个人开发者提供了一站式的解决方案。本文将从知识检索应用搭建、模型训练调优以及流程管理功能三个角度,全面评测阿里云百炼平台的实际使用体验。
313 3
|
5月前
|
JSON Shell API
阿里云PAI-Stable Diffusion开源代码浅析之(一)所有api的入参如何看
阿里云PAI-Stable Diffusion开源代码浅析之所有api的入参如何看

热门文章

最新文章