上云无忧 > 文档中心 > 腾讯云容器服务 云原生AI组件 - 运行弹性训练任务
容器服务 TKE
腾讯云容器服务 云原生AI组件 - 运行弹性训练任务

文档简介:
概述: 传统分布式深度学习任务(例如 Tensorflow Job)在提交训练任务后,无法再动态调整 Worker 数量。但在某些场景下,需要弹性训练能力,例如,集群中存在一批算力需求波动大的高优任务(例如周期性波动的在线任务),集群的整体平均资源利用率较低,因为波谷期的资源未得到充分利用。这种场景下,可以在集群中运行弹性训练任务,充分利用集群闲置资源。
*此产品及展示信息均由腾讯云官方提供。免费试用 咨询热线:400-826-7010,为您提供专业的售前咨询,让您快速了解云产品,助您轻松上云! 微信咨询
  免费试用、价格特惠

概述

传统分布式深度学习任务(例如 Tensorflow Job)在提交训练任务后,无法再动态调整 Worker 数量。但在某些场景下,需要弹性训练能力,例如,集群中存在一批算力需求波动大的高优任务(例如周期性波动的在线任务),集群的整体平均资源利用率较低,因为波谷期的资源未得到充分利用。这种场景下,可以在集群中运行弹性训练任务,充分利用集群闲置资源。
MPI Operator 通过对接 Horovod 的 Elastic 模式,可以让 MPI Job 具备动态调整训练 Workers 数量的能力。您可以结合云原生的低成本算力能力(竞价实例)以及多维度弹性能力(例如 HPA、VPA、CA)充分利用空闲的算力资源,以大幅降低训练成本。本文介绍如何运行 MPI 任务。

前提条件

AI 环境中已安装 MPI Operator
AI 环境中有 GPU 资源。

操作步骤

MPI-Operator 官方提供了多个训练案例,本文将以 Horovod Elastic 训练为例。

准备训练代码

本示例中使用 Horovod 官方提供的示例代码 tensorflow2_mnist_elastic.py

制作训练镜像

Horovod 官方提供的 horovod/horovod:0.20.0-tf2.3.0-torch1.6.0-mxnet1.5.0-py3.7-cpu 镜像中已经包含了该训练代码。
注意:
如果采用其他 Horovod 镜像作为基础镜像来制作训练镜像,请将训练代码复制至到镜像内。
由于训练代码是基于 TensorFlow 2.3.0 构建,如果采用不同的 TensorFlow 版本,请注意 API 兼容性。

腾讯云自研优化镜像

说明
镜像仓库 ccr.ccs.tencentyun.com/ti_containers/ti-tensorflow 中内置了由腾讯优图实验室和机智团队合作开发的 Ti-horovod,针对腾讯云网络环境特点进行了定制优化
标签(tag)列表
1.15.2-gpu-cu100-py3
2.0.0-gpu-cu100-py3
2.1.0-gpu-cu101-py3
2.4.0-gpu-cu112-py3
2.4.0-gpu-cu113-py3

任务提交

1. 准备一个 MPIJob 的 YAML 文件,定义一个 Horovod Elastic 任务,至少需要1个 Worker,至多接受3个 Worker,最初创建2个 Worker。
		
apiVersion: kubeflow.org/v1
kind: MPIJob
metadata:
name: tensorflow-mnist-elastic
spec:
slotsPerWorker: 1
cleanPodPolicy: Running
mpiReplicaSpecs:
Launcher:
replicas: 1
template:
spec:
containers:
- image: horovod/horovod:0.20.0-tf2.3.0-torch1.6.0-mxnet1.5.0-py3.7-cpu
name: mpi-launcher
command:
- horovodrun
args:
- -np
- "2"
- --min-np
- "1"
- --max-np
- "3"
- --host-discovery-script
- /etc/mpi/discover_hosts.sh
- python
- /examples/elastic/tensorflow2_mnist_elastic.py
resources:
limits:
cpu: 1
memory: 2Gi
Worker:
replicas: 2
template:
spec:
containers:
- image: horovod/horovod:0.20.0-tf2.3.0-torch1.6.0-mxnet1.5.0-py3.7-cpu
name: mpi-worker
resources:
limits:
cpu: 2
memory: 4Gi
2. 执行以下命令,通过 kubectl 提交该 MPIJob:
		
kubectl create -f ./tensorflow-mnist-elastic.yaml
3. 如需修改 Worker 数量,可以通过 kubectl editkubectl patch 来修改该 MPIJob 的 spec.mpiReplicaSpecs[Worker].replicas
相似文档
  • 当您使用腾讯云容器服务 TKE 组建 Kubernetes 集群时,会面对多种配置选项,难以进行选择。本文介绍以下功能选型,进行对比并给出选型建议。您可参考本文,选择更适用于您业务的配置选型。
  • 概述: 容器服务 TKE 包含托管集群及独立部署集群。若使用托管集群,则无需关注容灾,托管集群的 Master 由容器服务 TKE 内部维护。若使用独立集群,则 Master 节点由用户自行管理维护。独立集群如需实现容灾,则首先应根据需求规划容灾方案,在创建集群时进行相应配置即可。本文介绍如何实现 TKE 独立集群 Master 的容灾,您可参考本文进行操作。
  • 操作场景: 当前集群开启内网访问后,容器服务 TKE 默认通过域名访问集群,您需要在访问机上配置 Host 来进行内网域名解析。如未配置对应的域名解析规则(Host),在访问机上访问对应集群(运行 kubectl get nodes)时将会报错 “no such host”,如下图所示:
  • 操作场景: 开源工具 Velero(旧版本名称为 Heptio Ark)可以安全地备份和还原、执行灾难恢复以及迁移 Kubernetes 集群资源和持久卷。在容器服务 TKE 集群或自建 Kubernetes 集群中部署 Velero 可以实现以下功能: 备份集群资源并在丢失的情况下进行还原。 将集群资源迁移到其他集群。 将生产集群资源复制到开发和测试集群。
  • 操作场景: 开源工具 Velero(旧版本名称为 Heptio Ark)可以安全地备份和还原、执行灾难恢复以及迁移 Kubernetes 集群资源和持久卷。容器服务 TKE 支持使用 Velero 备份、还原和迁移集群资源,详情请参见 使用对象存储 COS 作为 Velero 存储实现集群资源备份和还原 和 在 TKE 中使用 Velero 迁移复制集群资源。
官方微信
联系客服
400-826-7010
7x24小时客服热线
分享
  • QQ好友
  • QQ空间
  • 微信
  • 微博
返回顶部