Potion Bottle Icon

Manuel d'alchimie du code

Potion Bottle Icon

Installation de CUDA et SpaCY sur Manjaro

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:

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

Articles qui pourraient aussi t'intéresser

Étiquettes

post bash langage-naturel linux manjaro python spacy traitement-du-langage-naturel