Upload
others
View
1
Download
0
Embed Size (px)
Citation preview
1
在阿里云容器服务中使用GPU加速数据科学
谢峰阿里云高级技术专家
NVIDIA RAPIDS on Kubernetes Cloud Native Architecture Practice
车漾阿里云高级技术专家
Contents02
目录
RAPIDS加速数据科学
03 Kubernetes简介
04 数据科学的云原生实践
01 数据科学的挑战The Challenge of Data Science
RAPIDS accelerate Data Science
Introduction of Kubernetes
Best practice of RAPIDS on cloud native
05 演示Demo
数据科学的挑战
01
The Challenge of Data Science
• 性能优化• 线性扩展• 调参
版本更新/弹性伸缩
调试
准备数据
模型开发
模型训练
推理服务
数据科学实验都在做什么?
✓ 端到端生命周期- Data in, executable out
✓ 运行时间长- 小时、天、周✓ 迭代优化 - Cross Validate , tuning
✓ 数据量大、更新频繁、计算规模大、复杂
规模化数据科学的挑战
1. 数据准备效率低下− 串行运算,数据访问延时
2. 异构资源的管理− CPU, GPU, (X)PU, FPGA, RDMA
3. 实验环境的搭建− Python , GCC, Bazel, TensorFlow, Pytorch, Rapids
4. 端到端的流程支持− Prepare data -> build/train/evaluate model -> release model, and repeat !!!
5. 规模化和持续迭代的模型训练和预测− 如何能用更少的成本达成更高的效率
RAPIDS加速数据科学
02
RAPIDS accelerate Data Science
1. GPU端到端加速数据科学,节约时间和成本
− ETL加速
− 机器学习训练和图分析加速
− 机器学习预测加速
2. GPU打通大数据、机器学习和深度学习
− 所有的数据计算都可以交给GPU处理
为什么要用RAPIDS加速数据计算?
RAPIDS
CUML
KNN
12 2 32 … 121 222
图片集 卷积神经网络 特征向量
搜索图片
Query 请求
相似搜索结果
134 220 212 … 44 125
23 55 212 … 189 123
29 20 12 … 34 212
121 111 0 … 23 66
图像搜索(Keras+Tensorflow+RAPIDS)
600倍的图像检索提速
卷积神经网络 特征向量
CUML KNN(GPU) vs Scikit-learn KNN(CPU)
在阿里云GN6V(Tesla V100)云
服务器上测试
如何用RAPIDS做分布式数据计算?
1. RAPIDS+SPARK
2. RAPIDS+DASK
Online Data(SLS/HybridDB
for MySQL/Blink)
Offline Data(MaxComputer)
Client
Dask Worker(Predict)
Dask Worker(Data
Prepare)
Web Server DaskScheduler
Dask Worker(Train)
Message Queue
Model Repository
(OSS)
Redis
RAPIDS+DASK
如何用RAPIDS做分布式数据计算?
Kubernetes简介
03
Introduction of Kubernetes
Docker – 让软件交付更简单
Container Runtime
环境隔离资源隔离
Container Image
软件打包软件分发
Kubernetes –让容器交付更简单
基础设施抽象
容器调度,编排
什么是Kubernetes?
• Kubernetes是一个开源容器编排引擎,用于自动化容器化应用程序的部署,扩展和管理。
− 资源管理
− 容器编排
− 应用管理
− 运维自动化
−云原生应用平台
ACK–Alibaba cloud Container service for Kubernetes
ComputingECS, EBM, GPU, FPGA, ECI
NetworkVPC, ENI, RDMA, SLB, DNS
StorageEBS, NAS, CPFS, OSS
Kubernetes (ACK) Serverless Kubernetes (ASK)
Registry Service
Service Integration
Security, ConformanceObservability,
ElasticitySandboxed Container Istio/Knative Auto Pilot
DevOps Micro Service/Service Mesh Enterprise Applications Innovation
Gitlab Jenkins GitOps EDAS Istio .net JEE AI Blockchain IoTC++Spring Cloud
Public Cloud Edge Computing Private Cloud
Serverless Application
Gene Encoding
Multi-Clouds
数据科学的云原生实践
04
Best practice of RAPIDS on cloud native
1. 容器技术
− 实验环境标准化,通过容器镜像分发
− 一次构建到处运行
− 秒级启动,适于扩展
2. 容器编排技术
− 自动化容器编排,扩容和管理
− 声明式API
− CPU和GPU的统一管理
为什么要用容器加速数据计算?
3. 容器编排与公共云云基础架构相结合
− 与计算,存储,网络的标准化衔接:GPU,NPU,CPFS,NAS, OSS, SLB, RDMA
的调度无需通过OpenAPI
− 弹性伸缩,异构资源从0到无穷的扩展
为什么要用容器加速数据计算?
但是容器技术也带来了技术栈的复杂度
• 数据科学家需要的不仅是分布式训练
用户预期
Kubernetes
TensorFlow能管理 统一流程管理
TensorFlow
• 可观测性
• 可诊断性
• 可追踪性
• 掌握Kubernetes对于数据科学家充满挑战
让Kubernetes对用户透明
Kubernetes
TensorFlow快速上手
用户预期 概念太多一个月也没搞定
统一概念模型
Arena – 阿里云Kubernetes机器学习解决方案
➢ 用一个工具屏蔽所有底层资源、环境管理、任务调度和GPU分配的复杂性• 提供数据科学家最熟悉的使用体验• 兼容多种机器学习框架 – RAPIDS, Tensorflow, Caffe, MPI, Hovorod, Pytorch
➢ 端到端工作流
• 机器学习生产流水线 – 集成训练数据管理,实验任务管理,模型开发,持续训练、评估,上线预测等全流程
➢ 轻量级、弹性、高效• 基于Docker容器和Kubernetes;轻量级,最小3个节点• 可弹性支持大规模CPU,GPU集群(>500节点)• 一分钟内启动机器学习任务;15分钟内创建异构计算集群
➢ 支持实时训练运维• 支持CPU,GPU等资源监控• 可查看GPU资源、任务分配情况• 可查看实时训练日志
Kubernetes / Docker
Kubeflow
arena cli
Other backends CRD
Arena
RAPIDS, Tensorflow, Caffe, PyTorch, Hovorod
CPU/GPU/FPGA
Ethernet/RDMA
Hadoop/OSS/CPFS
Flink, Spark
1. arena submit job2. Auto translates to RAPIDS tasks
RAPIDS training job topology
/job:master/task:0
/job:master/task:0
/job:worker/task:1
/job:worker/task:0(chief)
/job:worker/task:2
git
init containers
training containers
trainer Visualization
events, log
task:0
Code
cache
Training
data
Model
checkpoints
git
init containers
training containers
trainer Visualization
events, log
task:0
Code cache
git
init containers
training containers
trainer Visualization
events, log
task:0
Code cache
git
init containers
training containers
trainer Visualization
events, log
task:0
Code cache
git
init containers
training containers
trainer Visualization
events, log
task:0
Code cache
Kubernetes cluster
3. Auto schedules RAPIDS tasks to K8S
1 line command:arena submit xxxjob \
--name=job1 \--gpus=1 \--syncMode=git \--syncSource=https://github.com/x/xxx.git \--data=xxxdata:/data_dir--env=xxx\--image=xxx:xxx\“train.py”
数据科学家:
只需要关心数据任务本身 • Auto scaling
• logging
• HA
• monitoring
• Failure recovery
Arena隐藏任务编排管理的复杂度
ECS ECS ECS
POD POD
POD POD
POD POD
POD POD
POD POD
POD POD
Container Scheduling and Orchestration
• 按照集群资源付费• 需要维护集群节点• 需要容量规划
Container Scheduling and Orchestration
ECI
POD POD
POD POD
POD POD
POD POD
POD POD
POD POD
POD POD
POD POD
系统托管
用户管理经典Kubernetes集群 VS Serverless Kubernetes
• 按应用消费资源付费• 无需维护集群节点• 按需弹性伸缩
Serverless Kubernetes
Virtual Kubelet: 统一管理云上资源
Virtual
Kubelet
ECIK8s Connector
Elastic Container Instance
• 连接kubernetes和ECI,实现pod和eci的转换
• 解耦编排层和资源池,彻底释放资源弹性
• https://github.com/virtual-kubelet/alibabacloud-eci
EGS
Elastic GPU Service
Kubernetes
推送容器镜像 根据CRD定义生成镜像快照
用户
容器镜像服务 - ACR
镜像快照
Kubernetes 服务 – ACK/ASK
ECI 实例 ECI 实例
通过快照创建容器
创建 ECI 实例
ECI 实例
分层存储
容器启动加速 – “零秒”镜像启动
演示
05
Demo
问题:
• GPU虚拟机的价格昂贵
• GPU容器镜像启动缓慢,10分钟启动
• 配置复杂
Serverless GPU弹性伸缩
• 按需弹出,随用随启
• GPU容器秒级启动
arena submit mpijob
--name=myhvd \
--workers=6 \
--gpus=2 \
--sshPort=33 \
--syncMode=git \
--syncSource=https://github.com/xxx/tensorflow-sample-code.git \
--data=tfdata:/data_dir
--env=num_batch=100 \
--env=batch_size=80 \
--image=registry.cn-hangzhou.aliyuncs.com/tensorflow-samples/ali-perseus:gpu-tf-1.6.0 \
"/root/hvd-distribute.sh 12 2”
worker0
worker1
worker2
worker3
worker4
worker5
Arena demo – 提交分布式训练
Arena demo – 查看任务状态
# check job list
arena list
NAME STATUS TRAINER AGE NODE
caffe-1080ti-1 RUNNING MPIJOB 3d 192.168.1.118
tf-dist-data SUCCEEDED TFJOB 3d N/A
# check job deatils
arena get tf-dist-data
NAME STATUS TRAINER AGE INSTANCE NODE
tf-dist-data RUNNING tfjob 3d tf-dist-data-tfjob-ps-0 192.168.1.120
tf-dist-data SUCCEEDED tfjob 3d tf-dist-data-tfjob-worker-0 N/A
tf-dist-data SUCCEEDED tfjob 3d tf-dist-data-tfjob-worker-1 N/A
Your tensorboard will be available on:
192.168.1.117:32594
Arena demo – 查看任务日志
# check real time log
arena logs tf-dist-data
2018-07-30T03:47:49.881380632Z 2018-07-30 03:47:49.881141: I
tensorflow/core/platform/cpu_feature_guard.cc:137] Your CPU supports instructions that this TensorFlow binary was
not compiled to use: SSE4.1 SSE4.2 AVX AVX2 FMA
# check full log
arena logviewer tf-dist-data
Your LogViewer will be available on:
192.168.1.120:8080/tfjobs/ui/#/default/tf-dist-data-tfjob
Arena demo – 更多命令行
Arena RAPIDS Demo
Kubelet
RAPIDS Operator
BlazingSql Dask Client Dask Scheduler Dask Worker
gpu0 gpu0
Worker Nodegpu0 gpu1 gpu2 gpu3
NVIDIA Container Runtime
RAPIDS Operator完成实际的调度管理
RAPIDS Operator Demo
云原生AI咨询
欢迎交流
GPU云服务器
THANKS !