4paradigm / 4paradigm/k8s-vgpu-scheduler
无法实现多个pod在同一张显卡上执行深度学习任务
- Langage dominant
- Go
- Étoiles
- 595
- Forks
- 100
- Métriques de merge des PR
- Aucune PR mergée en 30 j
Description
创建了两个pod,各设置45%的GPU核使用率和45%的显存使用率限制。同时在两个pod上执行深度学习训练任务,报NCCL错误,排查后确定为资源分配不足导致。只使用一个pod执行相同任务时,使用nvidia-smi发现GPU使用率到达100%,GPU核使用率限制失效。
附创建pod时使用的yaml:
apiVersion: v1
kind: Pod
metadata:
name: my-gpu-pod1
spec:
containers:
- name: my-gpu-container
image: nvcr.io/nvidia/pytorch:23.08-py3
command: ["/bin/bash","-c","sleep 86400"]
env:
- name: OUT_DIR
value: "./"
- name: NCCL_DEBUG
value: "INFO"
resources:
limits:
memory: "20Gi" # 设置内存限制为 20GB
cpu: 15 # 设置 CPU 限制为 20 个核心
nvidia.com/gpu: 4 # 请求 2 张 GPU
nvidia.com/gpumem-percentage: 45 # Each vGPU contains 3000m device memory (Optional,Integer)
nvidia.com/gpucores: 45 # Each vGPU uses 30% of the entire GPU (Optional,Integer)
volumeMounts:
- mountPath: /datadrive
name: datadrive-volume
volumes:
- name: datadrive-volume
hostPath: # 使用 hostPath 进行绑定挂载
path: / # 挂载宿主机的根目录
hostIPC: true # 使用主机的 IPC namespace
hostNetwork: true # 使用主机的网络 namespace
hostPID: true # 如果需要,可以启用主机的 PID namespace
---
apiVersion: v1
kind: Pod
metadata:
name: my-gpu-pod2
spec:
containers:
- name: my-gpu-container
image: nvcr.io/nvidia/pytorch:23.08-py3
command: ["/bin/bash","-c","sleep 86400"]
env:
- name: OUT_DIR
value: "./"
- name: NCCL_DEBUG
value: "INFO"
resources:
limits:
memory: "20Gi" # 设置内存限制为 20GB
cpu: 15 # 设置 CPU 限制为 20 个核心
nvidia.com/gpu: 4 # 请求 2 张 GPU
nvidia.com/gpumem-percentage: 45 # Each vGPU contains 3000m device memory (Optional,Integer)
nvidia.com/gpucores: 45 # Each vGPU uses 30% of the entire GPU (Optional,Integer)
volumeMounts:
- mountPath: /datadrive
name: datadrive-volume
volumes:
- name: datadrive-volume
hostPath: # 使用 hostPath 进行绑定挂载
path: / # 挂载宿主机的根目录
hostIPC: true # 使用主机的 IPC namespace
hostNetwork: true # 使用主机的网络 namespace
hostPID: true # 如果需要,可以启用主机的 PID namespace
Guide de contribution
Aucun guide de contribution indexé pour ce dépôt
Piste de recherche
L'issue concerne le plugin de périphérique k8s-vgpu-scheduler et sa gestion des limites en pourcentage des cœurs et de la mémoire GPU. Examinez la logique d'allocation des ressources du plugin, en particulier pour nvidia.com/gpucores et nvidia.com/gpumem-percentage. Vérifiez les logs du scheduler et le code du plugin de périphérique pour voir comment ces limites sont appliquées. Le test consiste à créer deux pods avec le YAML fourni et à observer l'utilisation du GPU via nvidia-smi afin de diagnostiquer le dépassement de limite et les erreurs NCCL.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Évaluation
- Stack technique
- docker, kubernetes, pytorch
- Domaine
- cloud, devops, infrastructure
- Type d'issue
- Bug
- Difficulté
- 4/5
- Temps estimé
- 3-5 jours
- Activité
- À l'abandon
- Clarté
- Plutôt claire
- Accessibilité débutants
- 35/100