【k8s 使用 vocano.sh 支持binpack】家资是何物,积帙列梁梠。这篇文章主要讲述k8s 使用 vocano.sh 支持binpack相关的知识,希望能为你提供帮助。
1.背景
由于AI分布式训练平台特殊性以及k8s默认的调度器,当节点为多GPU卡时,会存在毛刺
问题。比如3台8卡的GPU,前面的提交3个1卡的任务,默认的调度机制,每个节点上一个
1卡的任务,当有一个8卡的任务提交时,就会处于pending,导致资源利用率不高
2.binpack
优先调度到资源被分配的节点,逻辑实现是打分机制,默认的打分机制是0-100,根据
资源使用情况,使用越高,分数越低,binpack刚好相反,资源使用越低,分数越低
3.安装volcano
wget https://raw.githubusercontent.com/volcano-sh/volcano/release-1.4/installer/volcano-development.yaml
vim volcano-development.yaml
kubectl apply -f volcano-development.yaml
kubectl get all -n volcano-system # 查看部署的资源
修改内容如下:
4.验证需要指定 schedulerName: volcano
apiVersion: kubeflow.org/v1
kind: TFJob
metadata:
labels:
app: test-1
name: test-1
namespace: dlp
spec:
#schedulerName: volcano
cleanPodPolicy: Running
tfReplicaSpecs:
Worker:
replicas: 1
restartPolicy: Never
template:
metadata:
creationTimestamp: null
labels:
app: test-1
spec:
schedulerName: volcano
containers:
- args:
- sleep 360d
command:
- sh
- -c
image: registry.cn-beijing.aliyuncs.com/ai-samples/tensorflow:1.5.0-devel-gpu
imagePullPolicy: Always
name: tensorflow
resources:
limits:
nvidia.com/gpu: "1"
requests:
cpu: "1"
memory: 1Gi
nvidia.com/gpu: "1"
volumeMounts:
- mountPath: /dev/shm
name: dshm
- mountPath: /mnt
name: mnt
volumes:
- hostPath:
path: /mnt
name: mnt
- emptyDir:
medium: Memory
name: dshm
提交k8s,更换任务名称之后,继续提交,查看两个job是否调度到同一个node节点上
?
推荐阅读
- 使用 Python Poetry 进行依赖管理
- 代码之外(人生最大的幸运就是努力没有白费#2021年底大盘点#)
- Shell 编程规范与变量
- Apache DolphinScheduler 2.0.1 来了,备受期待的一键升级插件化终于实现!
- shell函数算法
- 面试时,我是这么谈工资的
- 这也太直白了,就不能委婉一点吗()
- 如此“苦难之地”,不宜久留
- 只要工资不少加不加薪都不重要