Comment provisionner un GPU sur une VM
Hikube permet d'attacher un ou plusieurs GPU NVIDIA directement a une machine virtuelle. Ce guide explique comment choisir le type de GPU adapte a votre workload, creer une VM avec GPU et verifier que l'acceleration materielle est bien disponible.
Prerequis
- kubectl configure avec votre kubeconfig Hikube
- Un acces SSH a la VM (cle publique SSH disponible)
- Familiarite avec les concepts de machines virtuelles sur Hikube
Etapes
1. Choisir le type de GPU
Hikube propose plusieurs GPU NVIDIA adaptes a differents cas d'usage :
| GPU | Architecture | Memoire | Cas d'usage |
|---|---|---|---|
| L40S | Ada Lovelace | 48 GB GDDR6 | Inference, developpement, prototypage |
| A100 (PCIe / SXM4) | Ampere | 80 GB HBM2e | Entrainement ML, fine-tuning |
| RTX PRO 6000 Blackwell | Blackwell | 96 GB GDDR7 | LLM, calcul intensif, entrainement distribue |
Commencez par un L40S pour le developpement et le prototypage. Passez a un A100 pour l'entrainement de modeles ML standard, et reservez le RTX PRO 6000 (Blackwell) pour les workloads les plus exigeants comme l'entrainement de LLM ou le calcul haute performance.
Les identifiants GPU a utiliser dans vos manifestes sont :
| GPU | Valeur gpus[].name |
|---|---|
| L40S | nvidia.com/AD102GL_L40S |
| A100 PCIe 80 Go | nvidia.com/GA100_A100_PCIE_80GB |
| A100 SXM4 80 Go | nvidia.com/GA100_A100_SXM4_80GB |
| RTX PRO 6000 Blackwell | nvidia.com/GB202GL_RTX_PRO_6000_BLACKWELL_SERVER_EDITION |
2. Creer le manifeste de la VM avec GPU
Creez un manifeste qui declare le GPU souhaite dans la section spec.gpus :
apiVersion: apps.cozystack.io/v1alpha1
kind: VMDisk
metadata:
name: gpu-workstation-disk
spec:
source:
image:
name: ubuntu-2404
storage: 100Gi
storageClass: replicated
---
apiVersion: apps.cozystack.io/v1alpha1
kind: VMInstance
metadata:
name: gpu-workstation
spec:
runStrategy: Always
instanceProfile: ubuntu
instanceType: u1.2xlarge
gpus:
- name: "nvidia.com/AD102GL_L40S"
disks:
- name: gpu-workstation-disk
external: true
externalMethod: PortList
externalPorts:
- 22
- 8888
sshKeys:
- ssh-ed25519 AAAA... user@host
Prevoyez 8 a 16 vCPU par GPU. Pour un seul GPU, un u1.2xlarge (8 vCPU, 32 GB RAM) est un bon point de depart. Pour du multi-GPU, montez a u1.4xlarge ou u1.8xlarge.
3. Deployer la VM
Appliquez le manifeste :
kubectl apply -f gpu-vm.yaml
Attendez que la VM soit en etat Running :
kubectl get vminstance gpu-workstation -w
Resultat attendu :
NAME STATUS AGE
gpu-workstation Running 2m
Le provisionnement d'une VM avec GPU peut prendre quelques minutes supplementaires par rapport a une VM standard, le temps que le GPU soit alloue et attache.
4. Verifier le GPU dans la VM
Connectez-vous a la VM via SSH :
virtctl ssh -i ~/.ssh/id_ed25519 ubuntu@gpu-workstation
Verifiez que le GPU est detecte :
nvidia-smi
Resultat attendu :
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 535.xx.xx Driver Version: 535.xx.xx CUDA Version: 12.x |
|-------------------------------+----------------------+----------------------+
| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |
|===============================+======================+======================|
| 0 NVIDIA L40S Off | 00000000:00:06.0 Off | 0 |
| N/A 30C P0 35W / 350W | 0MiB / 46068MiB | 0% Default |
+-------------------------------+----------------------+----------------------+
Pour des informations detaillees :
nvidia-smi --query-gpu=name,memory.total,utilization.gpu --format=csv
5. Configurer une VM multi-GPU
Pour les workloads intensifs (entrainement distribue, inference a grande echelle), vous pouvez attacher plusieurs GPU a une meme VM en repetant les entrees dans spec.gpus :
apiVersion: apps.cozystack.io/v1alpha1
kind: VMDisk
metadata:
name: multi-gpu-disk
spec:
source:
image:
name: ubuntu-2404
storage: 200Gi
storageClass: replicated
---
apiVersion: apps.cozystack.io/v1alpha1
kind: VMInstance
metadata:
name: multi-gpu-workstation
spec:
runStrategy: Always
instanceProfile: ubuntu
instanceType: u1.8xlarge
gpus:
- name: "nvidia.com/GA100_A100_SXM4_80GB"
- name: "nvidia.com/GA100_A100_SXM4_80GB"
- name: "nvidia.com/GA100_A100_SXM4_80GB"
- name: "nvidia.com/GA100_A100_SXM4_80GB"
disks:
- name: multi-gpu-disk
external: true
externalMethod: PortList
externalPorts:
- 22
- 8888
sshKeys:
- ssh-ed25519 AAAA... user@host
Pour du multi-GPU, dimensionnez le type d'instance en consequence. Prevoyez au minimum 8 vCPU et 32 GB de RAM par GPU. Un u1.8xlarge (32 vCPU, 128 GB RAM) est adapte pour 4 GPU.
Verification
Apres le deploiement, confirmez que tout fonctionne :
- Verifiez l'etat de la VM :
kubectl get vminstance gpu-workstation
- Verifiez le GPU dans la VM :
virtctl ssh -i ~/.ssh/id_ed25519 ubuntu@gpu-workstation -- nvidia-smi
- Testez CUDA (si les pilotes sont installes) :
virtctl ssh -i ~/.ssh/id_ed25519 ubuntu@gpu-workstation -- nvidia-smi --query-gpu=name,memory.total,driver_version,cuda_version --format=csv,noheader