Skip to main content
Overview

Dividere la VRAM della GPU su Kubernetes

April 8, 2022
1 min read

Panoramica

La VRAM inutilizzata può essere allocata solo a livello di GPU in Kubernetes? Ho cercato di capire come assegnare le risorse in eccesso ad altri carichi di lavoro.

Esempi

  • Spec GPU: 32GB
  • Spec workstation: 2 GPU
  • Spec inference persistente: 1 GPU, 12GB VRAM
  • Questo lascia GPU con 32GB e 20GB di VRAM disponibile. Volevo allocare questo surplus ad altri task per sfruttare al massimo le GPU.

HOWTO

Replica

Se si può limitare il numero di pod e calcolare in anticipo le risorse necessarie, le repliche permettono di limitare l’allocazione complessiva. Ad esempio: min CPU 1, RAM 2GB; max CPU 2, RAM 4GB; massimo 5 pod.

Però funziona solo per CPU e RAM, non per la GPU.

Extended Resources

ref: Apply Extended Resources Le Extended Resources di Kubernetes permettono di controllare quanta VRAM viene assegnata a ciascun pod, regolando le risorse per pod di training e serving.

Il problema è che se un container consuma tutta la VRAM a runtime, non c’è modo di accorgersene. Si potrebbe creare un container di monitoraggio, ma questo aggiunge occupazione di risorse non necessaria.

GPU Virtualization

La virtualizzazione GPU si realizza tradizionalmente con VMware, che permette l’allocazione granulare delle risorse su una singola GPU. Però il supporto è limitato alle GPU di classe data center, e VMware è a pagamento.

Conclusione

Kubernetes non supporta nativamente lo splitting della VRAM. Le Extended Resources possono allocare VRAM al momento della creazione del pod, ma questo non limita effettivamente l’uso di VRAM a runtime.

Loading comments...