[K8S] 00 - Why we use KubeFlow?

为什么学习k8s,因为需要用到kubeflow。

不错的教程:【尚硅谷】【k8s】Kubernetes最新最细视频教程 重磅发布

 

前言

历史

Tensorflow 从 0.8 版本开始支持分布式训练,至今为止,无论高阶还是低阶的 API,对分布式训练已经有了完善的支持。同时,Kubernetes 和 Hadoop 等具有完善的资源管理和调度功能,为 Tensorflow 分布式训练奠定资源层面的基础。

Tensorflow On YarnTensorflow On Spark 是较早的解决方案。

而基于 Kubernetes 的 kubeflow 解决了 Yarn 的痛点,展现出旺盛的生命力。

 

人肉启动训练任务时,需要手动查看/评估资源的剩余可用情况,手动指定 PS 和 Worker 的数量,管理配置并进行服务发现。这些都给业务方带来了很大的负担。

Kubeflow 是由 Google 等公司于 2017 年推出的基于 Kubernetes 的开源项目,它支持常见的机器学习框架。

 

Operator

tf-operator 为 Tensorflow 提供了 job 维度的生命周期管理能力,以满足 Tensorflow 分布式训练的资源和拓扑需求,达到了一键式部署 Tensorflow 训练任务的效果。

 

分布式策略

1. MirroredStrategy:适用于单机多卡的训练场景,功能有限,不在本文讨论范围内。

2. ParameterServerStrategy:用于多机多卡场景,主要分为 worker 节点和 PS 节点,其中模型参数全部存储在 PS 节点,worker 在每个 step 计算完梯度后向 PS 更新梯度,蘑菇街当前使用这种方案。

3. CollectiveAllReduceStrategy:用于多机多卡场景,通过 all-reduce 的方式融合梯度,只需要 worker 节点,不需要 PS 节点,从另外一个角度说,该节点既充当 worker 角色,又充当 PS 角色。该方案是带宽优化的,具有性能好,可扩展性强的特点,是 Tensorflow 推荐的未来方向。

 

Mask RCNN

在 Amazon EKS 上使用 Kubeflow 进行分布式 TensorFlow 训练

Kubeflow 是一个开源工具包,可简化在 Kubernetes 上部署机器学习工作流的过程。Amazon Elastic Kubernetes Service (Amazon EKS) 让在 AWS 上使用 Kubernetes 部署、管理和扩展容器化应用程序更加简便。在 Amazon EKS 上使用 Kubeflow,我们可以利用这些开源技术进行高度可扩展的分布式 TensorFlow 训练。

 

要使同步 All-reduce 算法实现高效率,存在三个主要挑战:

    1. 该算法需要随着分布式训练集群中节点和 GPU 数量的增加而扩展。
    2. 该算法需要利用单个节点内的高速 GPU 到 GPU 互连的拓扑。
    3. 该算法需要通过有效地批处理与其他 GPU 的通信,来有效地交错 GPU 上的计算以及与其他 GPU 的通信。

Uber 的开源库 Horovod 旨在解决以下挑战:

    1. Horovod 提供了一种高效的同步 All-reduce 算法,它可随着 GPU 和节点数量的增加而扩展。
    2. Horovod 库利用 Nvidia Collective Communications Library (NCCL) 通信原语,而这些通信原语利用了对 Nvidia GPU 拓扑的了解。
    3. Horovod 包含 Tensor Fusion,它通过批量处理 All-reduce 数据通信,来高效地将通信与计算交错。

 

在本文中,我们将使用 Horovod。

具有八个 Nvidia Tesla V100 GPU、128 – 256 GB GPU 内存、25 – 100 Gbs 网络互连及高速 Nvidia NVLink GPU 到 GPU 互连的 Amazon EC2 p3.16xlarge 和 p3dn.24xlarge 实例非常适合分布式 TensorFlow 训练。

 

Kubeflow 消息传递接口 (MPI) 训练

在多个节点上合理布置训练算法工作进程。

Kubeflow 通过 MPI 作业和 MPI 运算符在 Amazon EKS 上实现分布式 TensorFlow 训练。

TensorFlow 训练作业定义为 Kubeflow MPI 作业。

 

 

我们将首先创建一个 EKS 集群,

然后将代码和框架打包到 Docker 映像中,

将 COCO 2017 数据集暂存在 Amazon Elastic File System (Amazon EFS) 共享文件系统上,

最后,使用 EKS 中的 Kubeflow 开始训练作业。

 

 

 

 

一些资源


一、青铜圣斗士

Ref: Kubeflow

Ref: 再谈 Kubeflow

我们应该先知道 Kubeflow 是什么, 以及可我们为什么需要使用 Kubeflow

Kubeflow 只是个工具集, 本身并不提供任何的功能。 而是通过 Kubeflow 部署的各种工具帮助我们进行机器学习。 所以我们应该着眼于 Kubeflow 中的各种工具。

 

 

二、白银圣斗士

Ref: MLOps20: Building End-to-End Machine Learning Workflows with Kubeflow in AWS

可操作,运行一下。涉及到的代码在这里:

https://github.com/data-science-on-aws/workshop/tree/master/10_pipeline/kubeflow

 

 

 

 

 

 

 

/* implement */

 

/* todo list */

 

posted @   郝壹贰叁  阅读(281)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示