Installation de machine avec RT Kernel et accélération graphique
Que ce soit pour LeRobot, pour AICA, ou en général pour utiliser des modèles d'IA, l'installation de Linux avec les bons drivers graphiques n'est pas toujours aisé.
On veut accéder dans Docker aux capacités Compute d'un GPU, essentiellement fournie par NVidia Cuda. On différentiera l'installation d'un serveur qui n'a pas besoin de l'accélération graphique liée à l'affichage, ni de capacités temps-réel, contrairement à un PC de commande de robot.
Vérification de la compatibilité
On a une carte graphique donnée :
- Vérification du Compute Capability https://developer.nvidia.com/cuda/gpus
- Si on est dans cette liste, donc Compute Capability >= 7.5 c'est une bonne base
- Si on n'y est pas, c'est qu'on a une carte Legacy, voir plus bas
Grâce à la compatibilité des versions mineures de Nvidia CUDA, une application d'IA compilée avec CUDA 11.8 peut être exécutée avec n'importe laquelle des version CUDA 11.x. Idem pour CUDA 12.x .
Par contre une application compilée avec cuDNN 8.x n'est pas compatible avec cuDNN 9.x .
PyTorch 2.3 et inférieur utilisent cuDNN 8.x
PyTorch 2.4 et supérieur utilisent cuDNN 9.x
Il faut donc choisir la version de Pytorch en fonction des versions de CUDA et cuDNN qui sont compatibles avec l'environnement d'exécution (carte graphique et driver)
https://docs.nvidia.com/deeplearning/cudnn/backend/latest/reference/support-matrix.html
cuDNN>=v9.12.0 supporte :
- CUDA 12.x (nvidia-driver>=525.60.13)
- CUDA 13.x (nvidia-driver>=580.65.06)
- CUDA CC>=7.5
cuDNN<=v9.11.1
- CUDA 12.x (nvidia-driver>=525.60.13)
- CUDA CC>=5.0-9.0 (10.0-12.0 avec CUDA>=12.8 et nvidia-driver>=570.26)
cuDNN<=v9.10.2 :
- CUDA 12.x (nvidia-driver>=525.60.13) (12.8-9 pour >=570.26 et CC 10-12)
- CUDA 11.x (nvidia-driver>=450.80.02)
- CUDA CC>=5.0-9.0 (10.0-12.0 avec CUDA>=12.8 et nvidia-driver>=570.26)
On a une application d'IA donnée
Par exemple YOLO :
- utilise onnxruntime https://onnxruntime.ai/docs/execution-providers/CUDA-ExecutionProvider.html
- >=1.18.1 : CUDA 12.x ; cuDNN 9.x ; PyTorch >= 2.4.0
- < 1.18.0 : CUDA 12.x ; cuDNN 8.x ; PyTorch < 2.4.0
- 1.18-1.20 : CUDA 11.8 ; cuDNN 8.x ; PyTorch <= 2.3.1
GPU NVidia anciens / Legacy
On a une carte graphique donnée | par exemple Quadro M620 (GM107GLM) :
- Vérification du Compute Capability https://developer.nvidia.com/cuda/gpus/legacy | CC5.2
- On conseille de laisser tomber l'IA avec des Compute Capability de 5.0 ou inférieur |
- Si on a une Compute Capability entre 5.2 et 7.2 , on peut envisager des choses mais c'est compliqué
- On vérifie la version de CUDA Max supportée : https://stackoverflow.com/questions/28932864/which-compute-capability-is-supported-by-which-cuda-versions | pour CC5.2 : CUDA 12.x
- On va donc pouvoir chercher une compatibilité d'exécution avec CUDA 12.x et CUDA 11.x , mais pas CUDA 13.x
- Les
nvidia-driverdispos sont 535-580 mais lescuda-driversdispos sont 550-580 - 535 est testé/recommandé
- 580 est dispo
- Avec CUDA 12.0-1 et le driver 535 on peut avoir v8.9.2<=cuDNN<=v9.11.1
- Avec CUDA 12.2 v8.9.7<=cuDNN<=v9.11.1
- Avec CUDA >=12.3 v9<=cuDNN<=v9.11.1
- Donc il faudrait CUDA 12.0-2
- mais
sudo apt list cuda-toolkit*seuls CUDA 12.5-13.1 sont dispos
Option 1 : Driver Version: 535.288.01 CUDA Version: 12.2
- On a v8.9.7<=cuDNN<=v9.11.1
- Mais on n'a pas
cuda-drivers
Option 2 : Driver Version: 580 CUDA Version:
- On n'a pas cuDNN v8
- on a
cuda-drivers-580
https://pytorch.org/get-started/previous-versions/
- Avec pytorch 2.1.1 et 2.2.0 , c'est cuddn 8.9.2 qui est installé par défaut
pytorch <2.2.0 n'est plus supporté dans pip
https://docs.nvidia.com/deeplearning/cudnn/archives/cudnn-892/support-matrix/index.html
cuDNN=v8.9.2 :
- CUDA 12.0-1 (nvidia-driver>=525.60.13)
- CUDA 11.x (nvidia-driver>=450.80.02)
- CUDA CC>=5.0 <=8.6 (8.9-9.0 avec CUDA>=11.8)
- Avec pytorch ... c'est cuddn 8.9.7 qui est installé par défaut
https://docs.nvidia.com/deeplearning/cudnn/archives/cudnn-897/support-matrix/index.html
cuDNN=v8.9.7 :
- CUDA 12.0-2 (nvidia-driver>=525.60.13)
- CUDA 11.x (nvidia-driver>=450.80.02)
- CUDA CC>=5.0 <=8.6 (8.9-9.0 avec CUDA>=11.8)
Voir aussi https://docs.nvidia.com/deeplearning/cudnn/archives/index.html