Ce blog concerne principalement le résumé des erreurs courantes de code CUDA et des solutions ~
1. Erreur d'exécution RuntimeError
1.1.RuntimeError : Erreur CUDA : mémoire insuffisante
Les erreurs du noyau CUDA peuvent être signalées de manière asynchrone lors d'un autre appel d'API, de sorte que le stacktrace ci-dessous peut être incorrect.
Pour le débogage, pensez à passer CUDA_LAUNCH_BLOCKING=1.
![](https://img-blog.csdnimg.cn/img_convert/636bcbf54b9be001e72d3c3ebdc7d135.png)
Erreur lors de l'analyse :
Le programme fonctionnait bien, le code fonctionnait bien, la mémoire vidéo était toujours inutile et la mémoire vidéo était suffisante, le GPU était peut-être occupé,
Cela peut être dû au problème de cache de la formation précédente, car il s'exécute dans le conteneur Docker, arrêtez donc d'abord le conteneur Docker, puis démarrez le conteneur ~
1.2.RuntimeError : erreur cuDNN : CUDNN_STATUS_INTERNAL_ERROR
![](https://img-blog.csdnimg.cn/img_convert/b71345d40da222ad4e62429f8a41505b.png)
erreurs possibles
La version de pytorch et cuda est fausse
Mémoire vidéo insuffisante
Reportez-vous à un autre code de test de blog
# True:每次返回的卷积算法将是确定的,即默认算法。
torch.backends.cudnn.deterministic = True
# 程序在开始时花额外时间,为整个网络的每个卷积层搜索最适合它的卷积实现算法
# 实现网络的加速。
torch.backends.cudnn.benchmark = True
solution finale
Définir le travail numérique sur 0
1.3.RuntimeError : CUDA à court de mémoire
①RuntimeError : CUDA à court de mémoire. Tentative d'allocation de 152,00 Mio (GPU 0 ; capacité totale de 23,65 Gio ; 13,81 Gio déjà alloués ; 118,44 Mio libres ; 14,43 Gio réservés au total par PyTorch) Si la mémoire réservée est >> la mémoire allouée, essayez de définir max_split_size_mb pour éviter la fragmentation. Voir la documentation pour la gestion de la mémoire et PYTORCH_CUDA_ALLOC_CONF
![](https://img-blog.csdnimg.cn/img_convert/116fafa134d55cb28e1774fa00b0668a.png)
Dépassant la mémoire occupée par le GPU, les ressources GPU locales devraient être pleinement suffisantes.Cependant, pendant le processus de formation pytorch, en raison des paramètres de rétropropagation et de transmission des paramètres du réseau neuronal tels que la descente de gradient , une grande quantité de mémoire GPU sera occupée. , il doit donc être réduit .
Solution:
Réduire le lot, c'est-à-dire réduire la taille de l'échantillon de formation de mots
Libérer la mémoire vidéo : torch.cuda.empty_cache()
②torch.cuda.OutOfMemoryError : CUDA à court de mémoire. Tentative d'allocation de 128,00 Mio (GPU 0 ; capacité totale de 23,65 Gio ; 22,73 Gio déjà alloués ; 116,56 Mio libres ; 22,78 Gio réservés au total par PyTorch) Si la mémoire réservée est >> la mémoire allouée, essayez de définir max_split_size_mb pour éviter la fragmentation. Voir la documentation pour la gestion de la mémoire et PYTORCH_CUDA_ALLOC_CONF
torch.cuda.OutOfMemoryError : CUDA n'a pas de mémoire. Tentative d'allocation de 128,00 Mio (GPU 0 ; 23,65 Gio au total ; 22,73 Gio alloués ; 116,56 Mio libres ; 22,78 Gio au total réservés par PyTorch) Si la mémoire réservée >> la mémoire allouée, essayez de définir max_split_size_mb pour éviter la fragmentation. Voir la documentation pour la gestion de la mémoire et PYTORCH_CUDA_ALLOC_CONF.
Analyse de la cause de l'erreur :
Lors de la formation du modèle d'apprentissage en profondeur, le code ne libère pas la mémoire vidéo à chaque fois qu'il est formé
solution:
Afficher nvidia-smi
![](https://img-blog.csdnimg.cn/img_convert/84e5ed9f5b415739a2692c6645068cf5.png)
À ce moment , le GPU fonctionne sans programme et la mémoire vidéo est toujours occupée, comme le montre la figure
Utiliser la requête de fusion
fuser -v /dev/nvidia*
(Facultatif) Si vous entrez la commande ci-dessus et qu'elle vous indique qu'il n'y a pas de fuser, installez
apt-get install psmisc
Si Impossible de localiser le package XXX apparaît, alors
apt-get update
![](https://img-blog.csdnimg.cn/img_convert/5d1ca494d3cfd2ba723f1299e74170e9.png)
Force (-9) pour tuer le processus, entrez la commande suivante
kill -9 PID
Exemple de diagramme
![](https://img-blog.csdnimg.cn/img_convert/2092f33697ffe007d4154d89fc211555.png)
Libérez simplement la mémoire vidéo ~