解锁云原生 AI 技能|在 Kubernetes 上构建机器学习系统

本文涉及的产品
性能测试 PTS,5000VUM额度
可观测监控 Prometheus 版,每月50GB免费额度
注册配置 MSE Nacos/ZooKeeper,118元/月
简介: 本系列将利用阿里云容器服务,帮助您上手 Kubeflow Pipelines.介绍机器学习的工程复杂度,除了来自于常见的软件开发问题外,还和机器学习数据驱动的特点相关。而这就带来了其工作流程链路更长,数据版本失控,实验难以跟踪、结果难以重现,模型迭代成本巨大等一系列问题。

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

介绍

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


谈到机器学习工作流平台,Google 的工程经验非常丰富,它的 TensorFlow Extended 机器学习平台支撑了 Google 的搜索,翻译,视频等核心业务;更重要的是其对机器学习领域工程效率问题的理解深刻,Google 的 Kubeflow 团队于 2018 年底开源了 Kubeflow Pipelines(KFP),  KFP 的设计与 Google 内部机器学习平台 TensorFlow Extended 一脉相承,唯一的区别是 KFP 运行在 Kubernetes 的平台上,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
  1. 安全配置

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
  1. 首先利用 kustomize 生成部署 yaml
cd kubeflow-aliyun/
kustomize build overlays/ack-auto-clouddisk > /tmp/ack-auto-clouddisk.yaml
  1. 查看所在的 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 修改是否已经设置

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

  1. 调整使用磁盘空间大小, 比如需要调整磁盘空间为 200G
sed -i.bak 's/storage: 100Gi/storage: 200Gi/g' \
    /tmp/ack-auto-clouddisk.yaml
  1. 验证 pipelines 的 yaml 文件
kubectl create --validate=true --dry-run=true -f /tmp/ack-auto-clouddisk.yaml
  1. 利用 kubectl 部署 pipelines
kubectl create -f /tmp/ack-auto-clouddisk.yaml
  1. 查看访问 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
  1. 访问 pipelines 管理控制台

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


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


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

Q&A

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

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

  1. 如何进行云盘备份?

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

  1. 如何清理 Kubeflow Piplines 部署?

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

  • 删除 Kubeflow Pipelines 的组件
kubectl delete -f /tmp/ack-auto-clouddisk.yaml
  • 通过释放云盘分别释放 mysql 和 minio 存储对应的两个云盘
  1. 如何使用现有云盘作为数据库存储,而避免自动创建云盘?

请参考文档

总结

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

相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
相关文章
|
3天前
|
人工智能 开发框架 算法
Qwen-Agent:阿里通义开源 AI Agent 应用开发框架,支持构建多智能体,具备自动记忆上下文等能力
Qwen-Agent 是阿里通义开源的一个基于 Qwen 模型的 Agent 应用开发框架,支持指令遵循、工具使用、规划和记忆能力,适用于构建复杂的智能代理应用。
56 10
Qwen-Agent:阿里通义开源 AI Agent 应用开发框架,支持构建多智能体,具备自动记忆上下文等能力
|
3天前
|
机器学习/深度学习 人工智能 自然语言处理
PeterCat:一键创建开源项目 AI 问答机器人,自动抓取 GitHub 仓库信息、文档和 issue 等构建知识库
PeterCat 是一款开源的智能答疑机器人,能够自动抓取 GitHub 上的文档和 issue 构建知识库,提供对话式答疑服务,帮助开发者和社区维护者高效解决技术问题。
40 7
PeterCat:一键创建开源项目 AI 问答机器人,自动抓取 GitHub 仓库信息、文档和 issue 等构建知识库
|
9天前
|
人工智能 Serverless API
aliyun解决方案评测|主动式智能导购AI助手构建
《主动式智能导购AI助手构建》方案结合百炼大模型与函数计算,提供高效智能导购服务。然而,实际体验中发现官方教程的说明顺序有待优化,特别是关于百炼大模型服务开通及API-key的使用指引不够清晰,导致初次使用者需查阅额外资料。此外,架构设计和实践原理在部署过程中逐步展现,有助于理解,但针对生产环境的具体指导还需进一步完善以满足实际需求。为优化用户体验,建议调整文档中的步骤顺序,确保新手能更顺畅地完成部署和测试。
105 27
|
3天前
|
人工智能 分布式计算 数据处理
MaxCompute Data + AI:构建 Data + AI 的一体化数智融合
本次分享将分为四个部分讲解:第一部分探讨AI时代数据开发范式的演变,特别是MaxCompute自研大数据平台在客户工作负载和任务类型变化下的影响。第二部分介绍MaxCompute在资源大数据平台上构建的Data + AI核心能力,提供一站式开发体验和流程。第三部分展示MaxCompute Data + AI的一站式开发体验,涵盖多模态数据管理、交互式开发环境及模型训练与部署。第四部分分享成功落地的客户案例及其收益,包括互联网公司和大模型训练客户的实践,展示了MaxFrame带来的显著性能提升和开发效率改进。
|
13天前
|
人工智能 自然语言处理 监控
解决方案评测:主动式智能导购AI助手构建
作为一名数据工程师,我体验了主动式智能导购AI助手构建解决方案,并进行了详细评测。该方案通过百炼大模型和函数计算实现智能推荐与高并发处理,部署文档详尽但部分细节如模型调优需改进。架构设计清晰,前端支持自然语言处理与语音识别,中间件确保实时数据同步。生产环境部署顺畅,但在系统监控方面可进一步优化。总体而言,该方案在零售行业具有显著应用潜力,值得尝试。
52 17
|
11天前
|
数据采集 机器学习/深度学习 人工智能
基于AI的网络流量分析:构建智能化运维体系
基于AI的网络流量分析:构建智能化运维体系
73 13
|
13天前
|
人工智能 Serverless API
尽享红利,Serverless构建企业AI应用方案与实践
本次课程由阿里云云原生架构师计缘分享,主题为“尽享红利,Serverless构建企业AI应用方案与实践”。课程分为四个部分:1) Serverless技术价值,介绍其发展趋势及优势;2) Serverless函数计算与AI的结合,探讨两者融合的应用场景;3) Serverless函数计算AIGC应用方案,展示具体的技术实现和客户案例;4) 业务初期如何降低使用门槛,提供新用户权益和免费资源。通过这些内容,帮助企业和开发者快速构建高效、低成本的AI应用。
58 12
|
11天前
|
人工智能 容灾 关系型数据库
【AI应用启航workshop】构建高可用数据库、拥抱AI智能问数
12月25日(周三)14:00-16:30参与线上闭门会,阿里云诚邀您一同开启AI应用实践之旅!
|
14天前
|
人工智能 自然语言处理 搜索推荐
主动式智能导购AI助手构建测评
主动式智能导购AI助手构建解决方案测评
31 4
|
14天前
|
人工智能 搜索推荐 数据库
主动式智能导购AI助手构建方案评测
阿里云推出的主动式智能导购AI助手方案,基于百炼大模型和Multi-Agent架构,通过多轮对话收集用户需求,实现精准商品推荐。其优势包括主动交互、灵活可扩展的架构、低代码开发及快速部署。商家可在10分钟内完成部署,并享受低成本试用。尽管技术细节尚需完善,该方案为电商提供了高效的客户服务工具,未来有望在个性化推荐和多模态交互方面取得突破。

相关产品

  • 容器服务Kubernetes版