4paradigm / 4paradigm/k8s-vgpu-scheduler

无法实现多个pod在同一张显卡上执行深度学习任务

Ouverte
#44 0 commentaires 0 réactions 0 personnes assignées Voir sur GitHub
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

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.