Installer et utiliser Tensorflow + Cuda sur Debian et sur NixOS
Voir aussi : vidéo youtube - dépôt git
Récemment, l’intelligence artificielle a fait d’énorme progrès et aborde de nombreux domaines d’application : analyse d’image ou de la voix, jeux de réflexion (Go, Échecs…), aide au diagnostique médical… Ceci est permis grâce à l’évolution du deep learning (apprentissage automatique de réseaux de neurones profonds) mais également de matériel et de logiciel adaptés.
Ce tutoriel explique comment installer et utiliser des outils de deep learning classiques (Tensorflow + Keras sur GPU Nvidia via Cuda et CuDNN) sur les distributions Linux Debian et NixOS.
Matériel et logiciel adaptés au Deep Learning
Matériel de calcul : GPU Nvidia ou CPU.
Logiciels d’accès au GPU (Nvidia) : drivers graphiques + Cuda (bibliothèque de programmation GPU) + CuDNN (bibliothèque de deep learning GPU).
Logiciels de deep learning : tensorflow+keras, pytorch, mxnet, cntk, caffe2…
Exemple de code tensorflow+keras pour le problème MNIST (reconnaissance de chiffres manuscrits) :
import tensorflow as tf
= tf.keras.datasets.mnist
mnist
= mnist.load_data()
(x_train, y_train),(x_test, y_test) = x_train / 255.0, x_test / 255.0
x_train, x_test
= tf.keras.models.Sequential([
model
tf.keras.layers.Flatten(),512, activation=tf.nn.relu),
tf.keras.layers.Dense(0.2),
tf.keras.layers.Dropout(10, activation=tf.nn.softmax)
tf.keras.layers.Dense(
])compile(optimizer='adam',
model.='sparse_categorical_crossentropy',
loss=['accuracy'])
metrics
=5)
model.fit(x_train, y_train, epochs model.evaluate(x_test, y_test)
Tensorflow + Cuda sur Debian
Installation
Vérifier la version de Cuda compatible avec Tensorflow sur la doc de Tensorflow
Passer sur un terminal console (par exemple, Ctrl+Alt+F1 pour TTY1) et stopper le serveur X (en root).
systemctl stop lightdm # ou gdm, sddm, etc selon le gestionnaire de connexion utilisé
- Installer Cuda et les drivers graphiques Nvidia (en root) :
chmod +x cuda*run
./cuda_9.0.176_384.81_linux-run
./cuda_9.0.176.1_linux-run
./cuda_9.0.176.2_linux-run
./cuda_9.0.176.3_linux-run
./cuda_9.0.176.4_linux-run
- Installer la bibliothèque de deep learning CuDNN (en root) :
tar zxf cudnn-9.0-linux-x64-v7.3.1.20.tgz
chmod -R a+r cuda
cp cuda/include/* /usr/local/cuda/include/
cp cuda/lib64/* /usr/local/cuda/lib64/
- Configurer les chemins d’accès de l’utilisateur (par exemple dans
~/.profile
) :
export PATH="/usr/local/cuda/bin/:$PATH"
export LD_LIBRARY_PATH="/usr/local/cuda/lib64:$LD_LIBRARY_PATH"
- Rebooter.
Utilisation
- Sur CPU :
python3 -m venv cpuenv
source cpuenv/bin/activate
pip install keras tensorflow
python mnist.py
...
deactivate
- Sur GPU :
python3 -m venv gpuenv
source gpuenv/bin/activate
pip install keras tensorflow-gpu
python mnist.py
...
deactivate
Tensorflow + Cuda sur NixOS
Installation
- Ajouter les drivers Nvidia dans
/etc/nixos/configuration.nix
(en root) :
nixpkgs.config.allowUnfree = true;
services.xserver.videoDrivers = [ "nvidia" ];
- Mettre à jour le système (en root) :
nixos-rebuild switch
- Rebooter.
Utilisation
- Autoriser les paquets non-libres dans la configuration de utilisateur (
~/.config/nixpkgs/config.nix
) :
allowUnfree = true;
- Écrire un fichier
shell.nix
, par exemple :
with import (fetchTarball "https://github.com/NixOS/nixpkgs/archive/18.09.tar.gz") {};
{
cpu = python3Packages.buildPythonPackage {
name = "dnncmp-tensorflow-cpu";
src = ./.;
propagatedBuildInputs = [
python3Packages.tensorflow
];
};
gpu = python3Packages.buildPythonPackage {
name = "dnncmp-tensorflow-gpu";
src = ./.;
propagatedBuildInputs = [
cudnn
python3Packages.tensorflowWithCuda
];
};
}
- Utilisation sur CPU :
nix-shell -A cpu --run "python mnist.py"
- Utilisation sur GPU :
nix-shell -A gpu --run "python mnist.py"