Vreau să folosesc aprovizionarea automată a nodurilor GKE pentru a crea un pool de noduri cu GPU la cerere (acesta este atunci când pornesc un Job care are nevoie de resurse GPU).
Mergând cu tutorialul GCP, am configurat un cluster cu activat autoscaling cluster
și aprovizionarea automată a nodului
. NAP a stabilit limite pentru CPU, memorie și GPU:
ResourceLimits:
- maxim: '15'
minim: '1'
resourceType: CPU
- maxim: '150'
minim: '1'
resourceType: memorie
- maxim: „2”
ResourceType: nvidia-tesla-k80
Știu că NAP funcționează pentru că a învârtit deja câteva noduri pentru mine, dar toate erau „normale” (fără GPU).
Acum, pentru a „forța” NAP să creeze un pool de noduri cu mașina GPU. Înainte de aceasta, nu există niciun nod GPU pe cluster.Pentru a face asta, creez un job cu un astfel de fișier de configurare:
apiVersion: lot/v1
fel: Iov
metadate:
denumire: pregătire-loc de muncă
specificație:
ttlSecondsAfterFinished: 100
șablon:
metadate:
denumire: pregătire-loc de muncă
specificație:
nodeSelector:
gpu: "adevărat"
cloud.google.com/gke-spot: „adevărat”
cloud.google.com/gke-accelerator: nvidia-tesla-k80
tolerante:
- cheie: cloud.google.com/gke-spot
operator: Egal
valoare: „adevărat”
efect: NoSchedule
containere:
- nume: gpu-test
imagine: przomys/gpu-test
resurse:
cereri:
CPU: 500 m
limite:
nvidia.com/gpu: 2 # solicită 2 GPU
restartPolicy: Niciodată # Nu reporniți containerele după ce ies
Jobul este creat, dar apoi este marcat ca „Neprogramabil” și CA Log îmi dă o astfel de eroare:
{
„noDecisionStatus”: {
"measureTime": "1650370630",
„noScaleUp”: {
„unhandledPodGroups”: [
{
„rejectedMigs”: [
{
„motiv”: {
"messageId": "no.scale.up.mig.failing.predicate",
"parametri": [
„NodeAffinity”,
„nodul(ele) nu se potriveau cu afinitatea/selectorul nodului Pod”
]
},
"mig": {
"zona": "us-central1-c",
"nodepool": "pool-3",
„nume”: „gke-cluster-activeid-pool-3-af526144-grp”
}
},
{
"mig": {
„nume”: „gke-cluster-activeid-nap-e2-standard--c7a4d4f1-grp”,
"zona": "us-central1-c",
„nodepool”: „nap-e2-standard-2-w52e84k8”
},
„motiv”: {
"parametri": [
„NodeAffinity”,
„nodul(ele) nu se potriveau cu afinitatea/selectorul nodului Pod”
],
„messageId”: „no.scale.up.mig.failing.predicate”
}
}
],
"napFailureReasons": [
{
"parametri": [
„Orice GPU”.
],
„messageId”: „no.scale.up.nap.pod.gpu.no.limit.defined”
}
],
„podGroup”: {
„totalPodCount”: 1,
„samplePod”: {
„controller”: {
"apiVersion": "lot/v1",
"kind": "Job",
"nume": "training-job"
},
"namespace": "implicit",
„nume”: „training-job-7k8zd”
}
}
}
],
„unhandledPodGroupsTotalCount”: 1
}
}
}
Bănuiala mea este că nu.scale.up.nap.pod.gpu.nr.limită.definită este partea cea mai importantă. Tutorial GCP mă indică Aici. Dar am această limită definită, așa că am rămas fără idei...
Poate cineva are idee ce greșesc?