Volcano运行MindSpore训练任务

举报
小豆子呀 发表于 2021/07/15 08:53:33 2021/07/15
【摘要】 2021世界黑客松WAIC已成功落幕,现在为大家介绍MindSpore赛道的赛题一中Volcano的基本介绍和一些基本用法,如有不对敬请指正。Volcano简介Volcano是在Kubernetes上运行高性能工作负载的容器批量计算引擎。 它提供了Kubernetes目前缺少的一套机制,这些机制通常是许多高性能 工作负载所必需的,包括:机器学习/深度学习生物学计算/基因计算大数据应用这些类型...

2021世界黑客松WAIC已成功落幕,现在为大家介绍MindSpore赛道的赛题一中Volcano的基本介绍和一些基本用法,如有不对敬请指正。

Volcano简介

Volcano是在Kubernetes上运行高性能工作负载的容器批量计算引擎。 它提供了Kubernetes目前缺少的一套机制,这些机制通常是许多高性能 工作负载所必需的,包括:

  • 机器学习/深度学习
  • 生物学计算/基因计算
  • 大数据应用

这些类型的应用程序通常运行在像Tensorflow、Spark、PyTorch、 MPI等通用领域框架上,Volcano无缝对接这些框架。

Volcano官方网站:https://volcano.sh/zh/

其github仓库地址为:https://github.com/volcano-sh/volcano,感兴趣的可以去打开看看

目前Volcano仅发布了一个版本,故本文仅针对发布的v1.x版本,后续如有更新,本人将持续关注

Volcano特性

Volcano支持各种调度策略,包括:

Gang-scheduling
Fair-share scheduling
Queue scheduling
Preemption scheduling
Topology-based scheduling
Reclaims
Backfill
Resource Reservation

得益于可扩展性的架构设计,Volcano支持用户自定义plugin和action以支持更多调度算法。

准备部分
安装

上手 Volcano 最容易的方式是从 github 下载release

注意:

一个 Kubernetes 集群,集群版本不低于 V1.13
[可选项] 在您的集群中下载 Helm,您可以根据以下指南安装 Helm:安装 Helm。(仅当您使用 helm 模式进行安装时需要)
下载最新版本 volcano下载链接
解压 release 文件

以上为安装前所必须的准备,否则安装后会无法正常使用;另外本人的K8s集群部署在CentOS环境下,后续别的环境的会尝试有效后更新

#tar -xvf volcano-{Version}-linux-gnu.tar.gz

#cd volcano-{Version}-linux-gnu

#ll
total 60
drwxr-xr-x 4 root1 root1 4096 Jul 23 11:38 ./
drwxr-xr-x 11 root1 root1 12288 Jul 23 11:37 …/
drwxr-xr-x 3 root1 root1 4096 Jul 16 16:15 bin/
-rw-r–r-- 1 root1 root1 153 Jul 16 16:15 default-queue.yaml
drwxr-xr-x 3 root1 root1 4096 Jul 16 16:15 helm/
-rw-r–r-- 1 root1 root1 4169 Jul 16 16:15 README.md
-rw-r–r-- 1 root1 root1 23453 Jul 16 16:15 volcano-{Version}.yaml

安装方式
Volcano配置文件为yaml格式,有两种安装方式:

  1. 通过 Deployment Yaml 文件方式安装
  2. 使用 Helm 进行安装
    方法一:
    使用 release 内的文件volcano-{Version}.yaml创建 deployment
    (Version就是1.x)

kubectl apply -f volcano-{Version}.yaml

验证 Volcano 各组件的运行状态

kubectl get all -n volcano-system

使用 Helm 安装
如果使用 Helm 部署 Volcano,请先确认已经在您的集群中安装了Helm
步骤 1:
创建一个新的命名空间

kubectl create namespace volcano-system

步骤 2:
使用 Helm 进行安装

helm install helm/chart/volcano --namespace volcano-system --name volcano

步骤 3:
验证 Volcano 各组件的运行状态

kubectl get all -n volcano-system

至此,安装部分全部结束。

Volcano运行MindSpore训练任务
1.制作Lenet任务镜像
Dockerfile:
FROM swr.cn-south-1.myhuaweicloud.com/mindspore/mindspore-cpu:1.1.1
RUN pip install requests
WORKDIR /app
ADD lenet /app
CMD [“sh”,"/app/start.sh"]
注意:start.sh需要自己定义好才可正常运行
2.操作运行任务
1)制作Lenet任务镜像

docker build -t mindspore-cpu:1.1.2 .

(有个点不要忘了)

docker images |grep mindspore

docker images |grep mindspore

2)保存导出镜像
docker save mindspore-cpu:1.1.3 |gzip > mindspore-cpu-1.1.3.tar.gz
3)将镜像导入
docker load -i mindspore-cpu-1.1.1.tar.gz
k8s的每台节点都要加载该镜像,除非搭建镜像服务器。
4)启动job的yml
apiVersion: batch.volcano.sh/v1alpha1 kind: Job metadata: name: lenet-job spec: minAvailable: 1 schedulerName: volcano queue: test policies: - event: PodEvicted action: RestartJob tasks: - replicas: 1 name: lenet policies: - event: TaskCompleted action: CompleteJob template: spec: containers: - command: - sleep - 10m image: mindspore-cpu-1.1.1:v1 name: lenet resources: requests: cpu: 1 limits: cpu: 1 restartPolicy: Never
4)k8s运行该任务
kubectl apply -f lenet1.yml
5)查询job启动情况

vcctl job list

6)查询pod运行情况

kubectl get pod |grep lenet

7)进入容器

kubectl exec -it lenet-job-lenet-0 – sh

sh-4.4# cd app/
注意:本队比赛所用模型放在了app目录下,个人根据实际情况修改。
8)查看运行情况

至此,等待返回结果,结束模型训练。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。