Aller au contenu principal

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 :

GPUArchitectureMemoireCas d'usage
L40SAda Lovelace48 GB GDDR6Inference, developpement, prototypage
A100 (PCIe / SXM4)Ampere80 GB HBM2eEntrainement ML, fine-tuning
RTX PRO 6000 BlackwellBlackwell96 GB GDDR7LLM, calcul intensif, entrainement distribue
Quel GPU choisir ?

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 :

GPUValeur gpus[].name
L40Snvidia.com/AD102GL_L40S
A100 PCIe 80 Gonvidia.com/GA100_A100_PCIE_80GB
A100 SXM4 80 Gonvidia.com/GA100_A100_SXM4_80GB
RTX PRO 6000 Blackwellnvidia.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 :

gpu-vm.yaml
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
Ratio CPU/GPU recommande

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
remarque

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 :

multi-gpu-vm.yaml
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
attention

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 :

  1. Verifiez l'etat de la VM :
kubectl get vminstance gpu-workstation
  1. Verifiez le GPU dans la VM :
virtctl ssh -i ~/.ssh/id_ed25519 ubuntu@gpu-workstation -- nvidia-smi
  1. 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

Pour aller plus loin