Installer et utiliser Tensorflow + Cuda sur Debian et sur NixOS

Voir aussi : vidéo peertube - 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

import tensorflow as tf
mnist = tf.keras.datasets.mnist

(x_train, y_train),(x_test, y_test) = mnist.load_data()
x_train, x_test = x_train / 255.0, x_test / 255.0

model = tf.keras.models.Sequential([
  tf.keras.layers.Flatten(),
  tf.keras.layers.Dense(512, activation=tf.nn.relu),
  tf.keras.layers.Dropout(0.2),
  tf.keras.layers.Dense(10, activation=tf.nn.softmax)
])
model.compile(optimizer='adam',
              loss='sparse_categorical_crossentropy',
              metrics=['accuracy'])

model.fit(x_train, y_train, epochs=5)
model.evaluate(x_test, y_test)

Tensorflow + Cuda sur Debian

Installation

systemctl stop lightdm    # ou gdm, sddm, etc selon le gestionnaire de connexion utilisé
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
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/
export PATH="/usr/local/cuda/bin/:$PATH"
export LD_LIBRARY_PATH="/usr/local/cuda/lib64:$LD_LIBRARY_PATH"

Utilisation

python3 -m venv cpuenv
source cpuenv/bin/activate
pip install keras tensorflow
python mnist.py
...
deactivate
python3 -m venv gpuenv
source gpuenv/bin/activate
pip install keras tensorflow-gpu
python mnist.py
...
deactivate

Tensorflow + Cuda sur NixOS

Installation

nixpkgs.config.allowUnfree = true;
services.xserver.videoDrivers = [ "nvidia" ];
nixos-rebuild switch

Utilisation

allowUnfree = true;
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
    ];
  };
}
nix-shell -A cpu --run "python mnist.py"
nix-shell -A gpu --run "python mnist.py"