Dans cet article, je vais te montrer comment installer CUDA et CuDNN sur Manjaro pour les utiliser avec SpaCY.
SpaCY une librairie de traitement du langage naturel pour Python basée sur les modèles d’apprentissage profond.
Installation des dépendances pour Manjaro
Nous allons d’abord installer quelques dépendances de base pour le système. J’ai un noyau Linux 5.15, alors si tu as un noyau plus récent, tu devrais adapter le nom du paquet linux515-nvidia
.
sudo pacman -Sy base-devel linux515-nvidia rust
Installation de CUDA 11.5
Nous allons installer la version 11.5 de CUDA sur Manjaro en nous inspirant de ce tutoriel
https://forum.manjaro.org/t/howto-installing-nvidia-cuda-and-cudnn-for-machine-learning/97162
On télécharge l’installateur depuis le site de NVIDIA.
wget https://developer.download.nvidia.com/compute/cuda/11.5.1/local_installers/cuda_11.5.1_495.29.05_linux.run chmod +x cuda_11.5.1_495.29.05_linux.run sudo ./cuda_11.5.1_495.29.05_linux.run
On va maintenant ajouter les chemins des bibliothèques CUDA dans le PATH et dans le LD_LIBRARY pour la compilation de packages C.
Comme Manjaro utilise bash et zsh, on va ajouter ces lignes dans les deux fichiers d’initialisation utilisateur:
~/.bashrc
~/.zshrc
export PATH="${PATH}:/usr/local/cuda-11.5/bin" export LD_LIBRARY="${LD_LIBRARY}:/usr/local/cuda-11.5/lib64"
On va maintenant exécuter la mise à jour des chemins de librairies de compilation avec ldconfig
sudo su echo /usr/local/cuda-11.5/lib64 >> /etc/ld.so.conf ldconfig exit
Ce code va nous permettre d’extraire les capacités de notre installation et de les enregistrer dans des fichiers de configuration.
if [ -f ~/$CUDA_EXAMPLES_PATH/1_Utilities/deviceQuery/deviceQuery ]; then ~/$CUDA_EXAMPLES_PATH/1_Utilities/deviceQuery/deviceQuery ~/$CUDA_EXAMPLES_PATH/1_Utilities/deviceQuery/deviceQuery | grep "CUDA Capability Major/Minor version number:" > ~/ComputeCapability.CUDA for i in ` sed s'/=/ /g' ~/ComputeCapability.CUDA | awk '{print $6}' ` do export CUDA_COMPUTE_CAPABILITY=$i echo "CUDA_COMPUTE_CAPABILITY "$CUDA_COMPUTE_CAPABILITY awk -v "a=$CUDA_COMPUTE_CAPABILITY" -v "b=10" 'BEGIN {printf "%.0f\n", a*b}' > ~/ComputeCapability.opencv done fi
Installation de CuDNN
On peut maintenant installer l’extension CuDNN pour les réseaux de neurones. On va créer des liens symboliques vers toutes les combinaisons de fichiers objets requis.
chmod +x cudnn-linux-x86_64-8.3.2.44_cuda11.5-archive.tar.xz tar -xf ~/cudnn-linux-x86_64-8.3.2.44_cuda11.5-archive.tar.xz -C ~/ sudo cp cudnn-linux-x86_64-8.3.2.44_cuda11.5-archive/include/cudnn*.h /usr/local/cuda/include sudo cp cudnn-linux-x86_64-8.3.2.44_cuda11.5-archive/lib/libcudnn* /usr/local/cuda/lib64 sudo chmod a+r /usr/local/cuda/include/cudnn*.h /usr/local/cuda/lib64/libcudnn* cd /usr/local/cuda/lib64 if [ -f libcudnn.so ]; then sudo rm libcudnn.so; fi if [ -f libcudnn.so.8 ]; then sudo rm libcudnn.so.8; fi sudo ln libcudnn.so.8.3.2 libcudnn.so.8 sudo ln libcudnn.so.8 libcudnn.so cd /usr/local/cuda-11.5/targets/x86_64-linux/lib if [ -f libcudnn_adv_infer.so ]; then sudo rm libcudnn_adv_infer.so; fi if [ -f libcudnn_ops_train.so ]; then sudo rm libcudnn_ops_train.so; fi if [ -f libcudnn_cnn_train.so ]; then sudo rm libcudnn_cnn_train.so; fi if [ -f libcudnn_cnn_infer.so ]; then sudo rm libcudnn_cnn_infer.so; fi if [ -f libcudnn_adv_train.so ]; then sudo rm libcudnn_adv_train.so; fi if [ -f libcudnn_ops_infer.so ]; then sudo rm libcudnn_ops_infer.so; fi if [ -f libcudnn_adv_infer.so.8 ]; then sudo rm libcudnn_adv_infer.so.8; fi if [ -f libcudnn_ops_train.so.8 ]; then sudo rm libcudnn_ops_train.so.8; fi if [ -f libcudnn_cnn_train.so.8 ]; then sudo rm libcudnn_cnn_train.so.8; fi if [ -f libcudnn_cnn_infer.so.8 ]; then sudo rm libcudnn_cnn_infer.so.8; fi if [ -f libcudnn_adv_train.so.8 ]; then sudo rm libcudnn_adv_train.so.8; fi if [ -f libcudnn_ops_infer.so.8 ]; then sudo rm libcudnn_ops_infer.so.8; fi sudo ln libcudnn_adv_infer.so.8.3.2 libcudnn_adv_infer.so.8 sudo ln libcudnn_ops_train.so.8.3.2 libcudnn_ops_train.so.8 sudo ln libcudnn_cnn_train.so.8.3.2 libcudnn_cnn_train.so.8 sudo ln libcudnn_cnn_infer.so.8.3.2 libcudnn_cnn_infer.so.8 sudo ln libcudnn_adv_train.so.8.3.2 libcudnn_adv_train.so.8 sudo ln libcudnn_ops_infer.so.8.3.2 libcudnn_ops_infer.so.8 sudo ln libcudnn_adv_infer.so.8 libcudnn_adv_infer.so sudo ln libcudnn_ops_train.so.8 libcudnn_ops_train.so sudo ln libcudnn_cnn_train.so.8 libcudnn_cnn_train.so sudo ln libcudnn_cnn_infer.so.8 libcudnn_cnn_infer.so sudo ln libcudnn_adv_train.so.8 libcudnn_adv_train.so sudo ln libcudnn_ops_infer.so.8 libcudnn_ops_infer.so sudo ldconfig
Création d’un environnement avec Anaconda pour SpaCY
Nous allons créer un environnement de développement pour SpaCY et y installer plusieurs librairies, dont PyTorch et SpaCY
conda create -n spacyvenv conda activate spacyvenv
Installation de PyTorch et SpaCY sur CUDA 11.5
Nous installons PyTorch depuis le dépôt GitHub officiel au lieu d’utiliser Conda. C’est beaucoup moins de trouble comme ça et on s’assure d’avoir la version la plus à jour.
conda install astunparse numpy ninja pyyaml mkl mkl-include setuptools cmake cffi typing_extensions future six requests dataclasses python=3.10 conda install -c pytorch magma-cuda115 git clone --recursive https://github.com/pytorch/pytorch cd pytorch export CMAKE_PREFIX_PATH=${CONDA_PREFIX:-"$(dirname $(which conda))/../"} python setup.py install
Installation de spaCy et des dépendances. CuPy donne parfois du trouble alors il faut le réinstaller.
git clone https://github.com/explosion/spaCy cd spaCy export PYTHONPATH=`pwd` pip install -r requirements.txt python setup.py build_ext --inplace pip install '.[cuda115]' conda update -n base -c defaults conda pip install --upgrade pip pip uninstall cupy-cuda115 pip install cupy-cuda115
Installation des modèles en anglais et en français
Les deux premiers sont des modèles précis entrainés sur des GPU et les deux derniers sont des modèles simples entraînés sur des CPU.
python -m spacy download en_core_web_trf python -m spacy download fr_dep_news_trf python -m spacy download en_core_web_sm python -m spacy download fr_core_news_sm