Ma machine est équipée d'un GPU Geforce 940mx GDDR5.
J'ai installé toutes les exigences pour exécuter dlib accéléré par GPU (avec prise en charge GPU):
Boîte à outils CUDA 9.0 avec les 3 mises à jour de correctifs de https://developer.nvidia.com/cuda-90-download-archive?target_os=Windows&target_Arch=x86_64&target_version=10&target_type=exelocal
cuDNN 7.1.4
Ensuite, j'ai exécuté toutes ces commandes ci-dessous après avoir cloné le référentiel dlib/davisKing sur Github pour compléter dlib avec le support GPU:
$ git clone https://github.com/davisking/dlib.git
$ cd dlib
$ mkdir build
$ cd build
$ cmake .. -DDLIB_USE_CUDA=1 -DUSE_AVX_INSTRUCTIONS=1
$ cmake --build .
$ cd ..
$ python setup.py install --yes USE_AVX_INSTRUCTIONS --yes DLIB_USE_CUDA
Maintenant, comment pourrais-je éventuellement vérifier/confirmer si dlib (ou d'autres bibliothèques dépendent de dlib comme face_recognition d'Adam Geitgey) utilise le GPU à l'intérieur python Shell/Anaconda (jupyter Notebook)?
En plus de la réponse précédente utilisant la commande,
dlib.DLIB_USE_CUDA
Il existe d'autres moyens de s'assurer que dlib utilise réellement votre GPU.
Le moyen le plus simple de le vérifier est de vérifier si dlib reconnaît votre GPU.
import dlib.cuda as cuda
print(cuda.get_num_devices())
Si le nombre d'appareils est> = 1, alors dlib peut utiliser votre appareil.
Une autre astuce utile consiste à exécuter votre code dlib et à exécuter en même temps
$ nvidia-smi
Cela devrait vous donner des informations complètes sur l'utilisation du GPU où vous pouvez voir l'utilisation totale ainsi que l'utilisation de la mémoire de chaque processus séparément.
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 410.48 Driver Version: 410.48 |
|-------------------------------+----------------------+----------------------+
| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |
|===============================+======================+======================|
| 0 GeForce GTX 1070 Off | 00000000:01:00.0 On | N/A |
| 0% 52C P2 36W / 151W | 763MiB / 8117MiB | 5% Default |
+-------------------------------+----------------------+----------------------+
+-----------------------------------------------------------------------------+
| Processes: GPU Memory |
| GPU PID Type Process name Usage |
|=============================================================================|
| 0 1042 G /usr/lib/xorg/Xorg 18MiB |
| 0 1073 G /usr/bin/gnome-Shell 51MiB |
| 0 1428 G /usr/lib/xorg/Xorg 167MiB |
| 0 1558 G /usr/bin/gnome-Shell 102MiB |
| 0 2113 G ...-token=24AA922604256065B682BE6D9A74C3E1 33MiB |
| 0 3878 C python 385MiB |
+-----------------------------------------------------------------------------+
Dans certains cas, la zone Processus peut indiquer quelque chose comme "les processus ne sont pas pris en charge", cela ne signifie pas que votre GPU ne peut pas exécuter de code, mais il ne prend pas simplement en charge ce type de journalisation.
Si dlib.DLIB_USE_CUDA est vrai, alors il utilise cuda, s'il est faux, il ne l'est pas.
En passant, ces étapes ne font rien et ne sont pas nécessaires pour utiliser python:
$ mkdir build
$ cd build
$ cmake .. -DDLIB_USE_CUDA=1 -DUSE_AVX_INSTRUCTIONS=1
$ cmake --build .
Il vous suffit de lancer setup.py.
Les extraits suivants ont été simplifiés pour utiliser ou vérifier si dlib utilise ou non le GPU.
Tout d'abord, vérifiez si dlib identifie votre GPU ou non.import dlib.cuda as cuda; print(cuda.get_num_devices());
Deuxièmement, dlib.DLIB_USE_CUDA
si c'est faux, permettez-lui simplement d'utiliser le support GPU endlib.DLIB_USE_CUDA = True
.