- 快召唤伙伴们来围观吧
- 微博 QQ QQ空间 贴吧
- 视频嵌入链接 文档嵌入链接
- 复制
- 微信扫一扫分享
- 已成功复制到剪贴板
李雪晴-基于亚马逊云快速构建、灵活扩展Kubeflow机器学习项目
展开查看详情
1 .基于亚马逊云快速构建、灵活扩展 Kubeflow机器学习项目 李雪晴,亚马逊云科技 机器学习产品技术专家
2 .目录 • 机器学习平台需求和场景 • Kubeflow基本原理介绍 • 基于亚马逊云Amazon EKS快速构建Kubeflow • 使用Amazon SageMaker扩展Kubeflow功能和资源、简化任务管理 • 演示
3 .构建机器学习平台已成为越来越多企业的选择 2 3 机器学习 工程团队 1 … … … 4 业务算法团队 数据团队 运营团队
4 .基于亚马逊云服务构建机器学习平台的主要方案 基于EC2服务 基于容器服务 Amazon SageMaker
5 .基于亚马逊云服务构建机器学习平台的主要方案 基于EC2服务 基于容器服务 Amazon SageMaker
6 .基于Amazon EKS实现Kubernetes集群的快速构建 Amazon Elastic Kubernetes Service (Amazon EKS) 高度可用、可扩展且安全的 Kubernetes 服务 Amazon EKS • 无需管理控制平面 • 默认确保安全 • 通过社区构建 • 一致和兼容
7 .Kubeflow基本组成 ML Workloads (Modelling, training, tuning, serving, …) Infrastructure (Cloud/On-Prem)
8 .Kubeflow核心功能/组件 v1.1 序号 Kubeflow组件 功能描述 1 Central Dashboard 控制台界面 2 Jupyter Notebooks Jupyter交互式开发环境 3 Multi-Tenancy 多租户支持 4 Training 模型训练 5 Katib 超参调优和网络结构搜索 6 Serving 模型服务 7 Pipelines 工作流管理 8 Metadata ML元数据仓库 9 Experiment 试验管理 10 Faring Python 开发包 11 Feast 特征存储 12 Nuclio 在线数据事件处理
9 .Kubeflow – Central Dashboard
10 .Kubeflow – 开发环境 Jupyter Notebook Amazon EKS with 云端访问 Jupyter Pod Jupyter Pod Jupyter Pod Jupyter Pod 数据科学家团队 云端创建 Jupyter Pod Jupyter Pod 机器学习 工程团队
11 .Kubeflow – 模型训练和部署 数据科学家团队 创建训练任务 定义模型训练资源与参数 监听CRD参数 创建部署任务 • Chainer CRD • MPI CRD • Chainer Controller • MXNet CRD • MPI Controller • Pytorch CRD • MXNet Controller • Tensorflow CRD • PyTorch Controller • XGBoost CRD • Tensorflow Controller … 机器学习 工程团队 定义模型部署资源与参数
12 .Kubeflow – Faring • 方便打包ML 训练任务 from kubeflow import fairing • 实现从notebook在k8s def lstm_train: 上训练模型 … • 简化模型开发过程 DOCKER_REGISTRY = '{}.dkr.ecr.{}.amazonaws.com.cn'.format(AWS_ACCOUNT_ID AWS_REGION) fairing.config.set_builder('append', base_image='tensorflow/tensorflow:2.2.2-py3', registry=DOCKER_REGISTRY, push=True) fairing.config.set_deployer('job') remote_train = fairing.config.fn(lstm_train) remote_train()
13 .Kubeflow – 超级参数调优Katib Validation- Trial Name Test-accuracy --lr --num-layers --optimizer accuracy Hyperparameter超参数是模型外部用 random-experiment- 0.974920 0.984844 0.013831565266960293 4 sgd 于控制训练的参数 rfwwbnsd random-experiment- 0.113854 0.116646 0.024225789898529138 4 ftrl vxgwlgqq 例如. Learning rate, batch size, epochs random-experiment- 0.979697 0.998437 0.021916171239020756 4 sgd wclrwlcq 调优找到一组优化目标函数的超参数 random-experiment- 0.113854 0.115312 0.024163810384272653 5 ftrl 7lsc4pwb 例如:寻找最优的批量大小和学习率,以最大限度 random-experiment- 86vv9vgv 0.963475 0.971562 0.02943228249244735 3 adam 地提高预测精度 random-experiment- 0.981091 0.999219 0.022372025623908262 2 sgd jh884cxz random-experiment- 0.980693 0.997969 0.016641686851083654 4 sgd sgtwhrgz random-experiment- 0.980792 0.998906 0.0264125850165842 3 sgd c6vvz6dv random-experiment- 0.113854 0.105313 0.026629394628228185 4 ftrl vqs2xmfj random-experiment- 0.980195 0.999375 0.021769570793012488 2 sgd bv8lsh2m random-experiment- 0.113854 0.102188 0.025079750575740783 4 ftrl 7vbnqc7z random-experiment- 0.979498 0.995469 0.014985919312945063 4 sgd kwj9drmg
14 .Kubeflow – 超级参数调优Katib
15 .Kubeflow – 工作流构建Pipelines • 用于管理和跟踪实验、作业和运行的用户界面(UI ) • 用于调度多步骤ML工作流的引擎 • 用于定义和操作管道和组件的SDK
16 .Kubeflow – 工作流构建Pipelines @dsl.pipeline( name='Sample Trainer', description=’’ ) def sample_train_pipeline(... ): create_cluster_op = CreateClusterOp('create-cluster', ...) analyze_op = AnalyzeOp('analyze', ...) transform_op = TransformOp('transform', ...) train_op = TrainerOp('train', ...) predict_op = PredictOp('predict', ...) confusion_matrix_op = ConfusionMatrixOp('confusion-matrix', ...) roc_op = RocOp('roc', ...) kfp.compiler.Compiler().compile(sample_train_pipeline , 'my-pipeline.zip’)
17 .Kubeflow – 工作流构建Pipelines Metadata Metadata Metadata Input/Output Input/Output Input/Output Implementation Implementation Implementation (container) (container) (container) Compiled file
18 .基于亚马逊云Amazon EKS快速构建Kubeflow cluster.yaml apiVersion: eksctl.io/v1alpha5 1. kubectl、eksctl、kfctl预置与安装 kind: ClusterConfig metadata: 2. eksctl create cluster--kubeconfig cluster.yaml name: basic-cluster region: cn-northwest-1 3. kfctl apply -V –f kfctl_aws.yaml nodeGroups: - name: ng-1 instanceType: m5.large desiredCapacity: 10 4. 端口转发 volumeSize: 80 ssh: allow: true # will use ~/.ssh/id_rsa.pub as the default ssh key 5. 登录 - name: ng-2 instanceType: m5.xlarge desiredCapacity: 2 volumeSize: 100 ssh: publicKeyPath: ~/.ssh/ec2_id_rsa.pub Amazon EKS https://eksctl.io/usage/creating-and-managing-clusters/
19 .如果自建机器学习平台 数据科学家角度 – 底层资源带来的挑战 Cluster EC2 instance CLI CLI • 计算资源 (CPUs, GPUs) • 存储资源 • 资源扩展 • 代码控制 • 管理底层基础设施 • 机器学习框架和环境 • 管理Pipeline
20 .如果自建机器学习平台 平台工程师角度 – 管理和运维带来的挑战 • 在没有经验的情况下配置Kubernetes集群很有挑战 • 如何配置适当的计算资源比例 有一条学习曲线 • 为提高成本效率而调整实例的大小是有一定困难的 • Kubeflow需要专业的配置来优化使用GPU或CPU节点 • 库和工具包需要定期更新 • 运营团队的额外管理负担
21 .Amazon SageMaker 功能概览 数据准备 模型构建 训练和调优 部署和管 理 SageMaker Ground Truth Jupyter Notebooks One-click Training One-click Deployment SageMaker Data Wrangler SageMaker StudIo Notebooks Automatic Model Tuning Multi-Model Endpoints SageMaker Processing Job Built-in or BYO-Algorithm SageMaker Experiments Model Monitor SageMaker Feature Store Local Mode SageMaker Debugger SageMaker Pipelines SageMaker Autopilot Managed Spot Training K8S & Kubeflow integration SageMaker Studio
22 .在Kubeflow中灵活扩展SageMaker资源 SageMaker Components for Kubeflow Pipelines 数据处理 模型训练 批量转换 模型部署和更新 数据标记
23 .Kubeflow – 工作流构建Pipelines Metadata Metadata Metadata Input/Output Input/Output Input/Output Implementation Implementation Implementation (container) (container) (container) Compiled file Amazon SageMaker
24 .Demo预览 基于SageMaker实现的任务 基于Kubernetes实现的任务
25 .© 2020, Amazon Web Services, Inc. or its affiliates. All rights reserved.
26 .总结 Amazon SageMaker 基于容器服务 Amazon SageMaker • 便携性 • 全托管的基础设施 • 可组合性 • 数据标记服务 • 可扩展性 • 自动模型调优 • 共享基础设施 • 内置优化的算法 • 可重复管道 • 托管的竞价型实例 • 自动化 • 可扩展的在线推理服务 • CI/CD • 模型监控 • 开源 SageMaker Components for Kubeflow Pipelines
27 .谢谢 李雪晴 亚马逊云科技 机器学习产品技术专家 © 2020, Amazon Web Services, Inc. or its affiliates. All rights reserved.