<p>Detectron ops lib introuvable</p>

Créé le 7 févr. 2018  ·  27Commentaires  ·  Source: facebookresearch/Detectron

Après avoir installé caffe2 à partir des sources sur Ubuntu 16.04 et essayé de tester avec : python2 detectron/tests/test_spatial_narrow_as_op.py j'obtiens ce qui suit :

No handlers could be found for logger "caffe2.python.net_drawer"
net_drawer will not run correctly. Please install the correct dependencies.
E0207 16:36:41.320443  4125 init_intrinsics_check.cc:59] CPU feature avx is present on your machine, but the Caffe2 binary is not compiled with it. It means you may not get the full speed of your CPU.
Traceback (most recent call last):
  File "detectron/tests/test_spatial_narrow_as_op.py", line 88, in <module>
    utils.c2.import_detectron_ops()
  File "/home/gene/detectron/lib/utils/c2.py", line 41, in import_detectron_ops
    detectron_ops_lib = envu.get_detectron_ops_lib()
  File "/home/gene/detectron/lib/utils/env.py", line 73, in get_detectron_ops_lib
    'version includes Detectron module').format(detectron_ops_lib)
AssertionError: Detectron ops lib not found at '/usr/local/lib/python2.7/dist-packages/lib/libcaffe2_detectron_ops_gpu.so'; make sure that your Caffe2 version includes Detectron module

Mais le module detectron est présent dans le dossier modules . Dois-je modifier CMakeLists d'une manière ou d'une autre avant d'installer caffe2 pour m'assurer qu'il est correctement inclus ?

Informations système

  • Système d'exploitation : Ubuntu 16.04
  • Version du compilateur : gcc version 5.4.0 20160609 (Ubuntu 5.4.0-6ubuntu1~16.04.5)
  • Version CUDA : 8.0
  • version cuDNN : 6.0.21
  • Version du pilote NVIDIA :
  • Modèles de GPU (pour tous les appareils s'ils ne sont pas tous identiques) : 4x Tesla k80
  • Variable d'environnement PYTHONPATH : /usr/local:/home/ubuntu/caffe2/build
  • python --version sortie : 2.7.12

Commentaire le plus utile

J'ai écrit toutes les commandes lors de mon installation, alors j'ai pensé que cela pourrait vous aider dans votre recherche de bogues. J'ai vu que tu l'avais résolu. Mais peut-être que cela peut aider les autres comme ligne directrice. Bonne chance à tous!

Informations système

  • Instance Amazon AWS g3.4xlarge (NVIDIA Tesla M60)
  • Ubuntu 16.04

Installation

J'ai utilisé la documentation Caffe2 et la documentation Detectron comme ligne directrice

Mettre à jour le pilote NVIDIA

Télécharger le pilote

sudo dpkg -i nvidia-diag-driver-local-repo-ubuntu1604_375.66-1_amd64.deb
sudo apt-get update && sudo apt-get install wget -y --no-install-recommends

Installation des dépendances

sudo apt-get update
sudo apt-get install -y --no-install-recommends build-essential cmake git libgoogle-glog-dev libgtest-dev libiomp-dev libleveldb-dev liblmdb-dev libopencv-dev libopenmpi-dev libsnappy-dev libprotobuf-dev openmpi-bin openmpi-doc protobuf-compiler python-dev python-pip
sudo pip install setuptools future numpy protobuf enum networkx
sudo apt-get install -y --no-install-recommends libgflags-dev

Installer CUDA

Lien : http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1604/x86_64/
Recherchez la version la plus récente. Utilisez si possible cuda 8. J'ai utilisé : cuda-repo-ubuntu1604_8.0.61-1_amd64.deb

wget "http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1604/x86_64/..." //add selected file name
sudo dpkg -i cuda-repo-ubuntu1604_8.0.61-1_amd64.deb
sudo apt-get update
sudo apt-get install cuda-8-0

Installer cuDNN

Recherchez la version la plus récente : https://developer.nvidia.com/cudnn

wget http://developer.download.nvidia.com/compute/redist/cudnn/v5.1/cudnn-8.0-linux-x64-v5.1.tgz
sudo tar -xzf cudnn-8.0-linux-x64-v5.1.tgz -C /usr/local
rm cudnn-8.0-linux-x64-v5.1.tgz && sudo ldconfig

Installer Caffe2

En raison du développement rapide de Caffe2, vous devrez peut-être réinitialiser le référentiel à la dernière version de passage de build. Vous pouvez le vérifier sur le référentiel Caffe2 GitHub . Cliquez sur l'icône de réussite/échec de la construction en haut du fichier README.md. Sur la gauche, vous pouvez vérifier la dernière version et sélectionner la dernière version en cours. Cliquez sur le build et copiez le numéro de commit.

Go to your selected installation directory: cd directory
git clone --recursive https://github.com/caffe2/caffe2.git && cd caffe2
git reset --hard $COMMIT_NUMBER //unnecessary when builds passing
sudo make -j16 //exchange 16 by your number of cores
cd build && sudo make install

Définir les variables d'environnement

ajoutez ces lignes à .bashrc :

export PYTHONPATH=/usr/local
export PYTHONPATH=$PYTHONPATH:/home/ubuntu/caffe2/build
export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH

Testez Caffe2 et GPU

Testez votre installation Caffe2 :

python2 -c 'from caffe2.python import core' 2>/dev/null && echo "Success" || echo "Failure"

Testez l'installation du GPU. La valeur de retour doit être supérieure à 0 :

python2 -c 'from caffe2.python import workspace; print(workspace.NumCudaDevices())'

Installer les dépendances Detectron

sudo pip install numpy>=1.13 pyyaml>=3.12 matplotlib opencv-python>=3.2 setuptools Cython mock scipy
sudo git clone https://github.com/cocodataset/cocoapi.git $WANTED-DIRECTORY/cocoapi
cd $WANTED-DIRECTORY/cocoapi/PythonApi
sudo -H make install
sudo python setup.py install

ajouter une ligne à .bashrc :

export COCOAPI=$WANTED-DIRECTORY/cocoapi

N'oubliez pas de télécharger les données du site coco dans ce répertoire. Structure telle que décrite dans les données README.md

Installer Detectron

git clone https://github.com/facebookresearch/detectron detectron
cd detectron/lib && sudo make -j16

vérifier l'installation

python2 detectron/tests/test_spatial_narrow_as_op.py

J'espère pouvoir aider certaines personnes :)

Tous les 27 commentaires

J'ai résolu le problème. Il n'y avait pas de problème, j'avais simplement et bêtement une faute de frappe dans mon PYTHONPATH. J'ai corrigé cela et cela fonctionne maintenant correctement. Merci pour cette excellente ressource !

J'ai écrit toutes les commandes lors de mon installation, alors j'ai pensé que cela pourrait vous aider dans votre recherche de bogues. J'ai vu que tu l'avais résolu. Mais peut-être que cela peut aider les autres comme ligne directrice. Bonne chance à tous!

Informations système

  • Instance Amazon AWS g3.4xlarge (NVIDIA Tesla M60)
  • Ubuntu 16.04

Installation

J'ai utilisé la documentation Caffe2 et la documentation Detectron comme ligne directrice

Mettre à jour le pilote NVIDIA

Télécharger le pilote

sudo dpkg -i nvidia-diag-driver-local-repo-ubuntu1604_375.66-1_amd64.deb
sudo apt-get update && sudo apt-get install wget -y --no-install-recommends

Installation des dépendances

sudo apt-get update
sudo apt-get install -y --no-install-recommends build-essential cmake git libgoogle-glog-dev libgtest-dev libiomp-dev libleveldb-dev liblmdb-dev libopencv-dev libopenmpi-dev libsnappy-dev libprotobuf-dev openmpi-bin openmpi-doc protobuf-compiler python-dev python-pip
sudo pip install setuptools future numpy protobuf enum networkx
sudo apt-get install -y --no-install-recommends libgflags-dev

Installer CUDA

Lien : http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1604/x86_64/
Recherchez la version la plus récente. Utilisez si possible cuda 8. J'ai utilisé : cuda-repo-ubuntu1604_8.0.61-1_amd64.deb

wget "http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1604/x86_64/..." //add selected file name
sudo dpkg -i cuda-repo-ubuntu1604_8.0.61-1_amd64.deb
sudo apt-get update
sudo apt-get install cuda-8-0

Installer cuDNN

Recherchez la version la plus récente : https://developer.nvidia.com/cudnn

wget http://developer.download.nvidia.com/compute/redist/cudnn/v5.1/cudnn-8.0-linux-x64-v5.1.tgz
sudo tar -xzf cudnn-8.0-linux-x64-v5.1.tgz -C /usr/local
rm cudnn-8.0-linux-x64-v5.1.tgz && sudo ldconfig

Installer Caffe2

En raison du développement rapide de Caffe2, vous devrez peut-être réinitialiser le référentiel à la dernière version de passage de build. Vous pouvez le vérifier sur le référentiel Caffe2 GitHub . Cliquez sur l'icône de réussite/échec de la construction en haut du fichier README.md. Sur la gauche, vous pouvez vérifier la dernière version et sélectionner la dernière version en cours. Cliquez sur le build et copiez le numéro de commit.

Go to your selected installation directory: cd directory
git clone --recursive https://github.com/caffe2/caffe2.git && cd caffe2
git reset --hard $COMMIT_NUMBER //unnecessary when builds passing
sudo make -j16 //exchange 16 by your number of cores
cd build && sudo make install

Définir les variables d'environnement

ajoutez ces lignes à .bashrc :

export PYTHONPATH=/usr/local
export PYTHONPATH=$PYTHONPATH:/home/ubuntu/caffe2/build
export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH

Testez Caffe2 et GPU

Testez votre installation Caffe2 :

python2 -c 'from caffe2.python import core' 2>/dev/null && echo "Success" || echo "Failure"

Testez l'installation du GPU. La valeur de retour doit être supérieure à 0 :

python2 -c 'from caffe2.python import workspace; print(workspace.NumCudaDevices())'

Installer les dépendances Detectron

sudo pip install numpy>=1.13 pyyaml>=3.12 matplotlib opencv-python>=3.2 setuptools Cython mock scipy
sudo git clone https://github.com/cocodataset/cocoapi.git $WANTED-DIRECTORY/cocoapi
cd $WANTED-DIRECTORY/cocoapi/PythonApi
sudo -H make install
sudo python setup.py install

ajouter une ligne à .bashrc :

export COCOAPI=$WANTED-DIRECTORY/cocoapi

N'oubliez pas de télécharger les données du site coco dans ce répertoire. Structure telle que décrite dans les données README.md

Installer Detectron

git clone https://github.com/facebookresearch/detectron detectron
cd detectron/lib && sudo make -j16

vérifier l'installation

python2 detectron/tests/test_spatial_narrow_as_op.py

J'espère pouvoir aider certaines personnes :)

@genekogan

J'ai le même problème lorsque j'essaie de construire detectron sur la plate-forme d'AMI d'AWS.
Je ne sais pas si mon PYTHONPATH est correct
voici mon PYTHONPATH :/home/ec2-user/src/caffe2/build

Je me demande ce que le répertoire "build" devrait inclure ?
Voici les fichiers inclus dans mon répertoire "build":
screen shot 2018-03-14 at 12 29 28 pm

Sont-ils comme les vôtres ?

Merci!

définissez PYTHONPATH ou le fichier pth pour inclure ${CAFFE2_ROOT}/build

bibliothèque d'opérateurs CPU ou GPU Caffe2 personnalisée introuvable : AssertionError : bibliothèque d'opérations personnalisée introuvable dans '/path/to/to/detectron/build/libcaffe2_detectron_custom_ops_gpu.so'Found lors de l'exécution de test_zero_even_op.py mais d'autres tests peuvent réussir, Detectron ops lib : /usr/local/lib/libcaffe2_detectron_ops_gpu.so trouvé. Pouvez-vous me donner une idée ?

@genekogan pouvez-vous m'aider? Les tests généraux passent tous avec l'information " /usr/local/lib/libcaffe2_detectron_ops_gpu.so found ". Cependant, lorsque je teste l'opération personnalisée et lance le test_zero_even_op.py, il renvoie l'erreur "Custom ops lib not found at '/path/to/to/detectron/build/libcaffe2_detectron_custom_ops_gpu".

@ ym547559398 je ne suis pas sûr de l'erreur spécifique que vous obtenez. j'ai résolu mon problème avec exactement ce que @ huhai463127310 a dit : assurez-vous de définir PYTHONPATH pour inclure ${CAFFE2_ROOT}/build

@genekogan Merci ! Je l'ai résolu. Un conflit très simple~

J'ai toujours le même problème maintenant que caffe2 est intégré dans pytorch, j'ai compilé pytorch à partir de la dernière source mais l'exécution de detetron simple_infer se plaint toujours de ne pas trouver detectron_ops (pas de gpu dans mon cas)

@mehditlili Avez-vous défini le PYTHONPATH ? Ou bien, je pense que nous manquons d'opérations étendues, et il existe un guide pour nous aider à utiliser le dossier ops et à créer des opérations étendues?

@mattifrind

Étant donné que la distribution de pytorch/caffe2 via conda est officielle, il ne devrait y avoir aucune configuration supplémentaire pour localiser ces modules d'opérations. Alors que libcaffe2_detectron_ops_gpu.so peut être localisé via l'environnement PATH standard, le chemin d'installation de pytorch doit être recherché par défaut sans intervention de l'utilisateur. Le simple fait d'insérer le chemin d'installation de pytorch sys.path.insert(0, torch.__path__[0] au moment de l'exécution garantirait de trouver les opérations de detectron (dernière version).

Mon problème est que Detectron veut apparemment les fichiers d'en-tête dans Caffe2/core, mais la version officielle de Pytorch dans Anacdona n'inclut pas Caffe2/core. Dois-je effectuer une installation supplémentaire de pytorch et ajouter ce chemin à Caffe2_Dir ?

J'ai résolu ce problème en ajoutant "torch.pth" au répertoire ~/.conda/envs/dl/lib/python2.7/site-packages ". Parce que " libcaffe2_detectron_ops_gpu.so " se trouve dans le répertoire " site-packages/torch ".

torch.pth ne contient qu'un seul chemin :
/home/ruixin/.conda/envs/dl/lib/python2.7/site-packages/torch

PS: cette erreur exécutera la fonction ci-dessous. Vous pouvez voir "ops_path = os.path.join(prefix, 'lib/libcaffe2_detectron_ops_gpu.so')" est d'obtenir le fichier .so.

def get_detectron_ops_lib():
    """Retrieve Detectron ops library."""
    # Candidate prefixes for the detectron ops lib path
    # print("=> path list = :\n", _CMAKE_INSTALL_PREFIX, "\n", sys.prefix, '\n', sys.exec_prefix, '\n', sys.path)
    prefixes = [_CMAKE_INSTALL_PREFIX, sys.prefix, sys.exec_prefix] + sys.path
    # Search for detectron ops lib
    # print("=> prefixes = {}".format(prefixes))
    for prefix in prefixes:
        ops_path = os.path.join(prefix, 'lib/libcaffe2_detectron_ops_gpu.so')
        # print("=> ops_path = {}".format(ops_path))
        if os.path.exists(ops_path):
            # TODO(ilijar): Switch to using a logger
            print('Found Detectron ops lib: {}'.format(ops_path))
            break
    assert os.path.exists(ops_path), \
        ('Detectron ops lib not found; make sure that your Caffe2 '
         'version includes Detectron module')
    return ops_path

@farleylai

J'ai essayé votre suggestion mais cela n'a pas fonctionné et j'obtiens la même erreur.
Quelqu'un a-t-il une autre solution de contournement à suggérer?

@zabatani

Assurez-vous que libcaffe2_detectron_ops_gpu.so est dans le chemin lib/ sous torch.__path__[0] ?
Selon votre installation, il peut se trouver ailleurs ou vous pouvez avoir plusieurs entrées dans torch.__path__ .
Imprimez et répertoriez le contenu pour localiser où il se trouve.
Alternativement, vous pouvez l'ajouter à la variable d'environnement PATH.

Si vous utilisez caffe2 en installant pytorch-nightly, vous pouvez copier ou lier libcaffe2_detectron_ops_gpu.so (c'est quelque part comme /home/ruixin/.conda/envs/dl/lib/python2.7/site-packages/torch ) vers /usr/lib ou le lib l'environnement virtuel
Ça marche pour moi.

Après avoir ajouté la variable d'environnement PYTHONPATH : /path/to/pytorch/build, le test a réussi

@suica Cela a fonctionné pour moi. Je n'ai pas pu mettre le lien dans /ur/lib et j'utilise conda au lieu de virtualenv. Je l'ai mis dans /path/to/conda/env/lib et ça marche. Merci!

@genekogan Merci ! J'ai résolu un conflit très simple~

Comment avez-vous résolu le problème que vous avez rencontré ?

J'ai le même problème mais en colab, une idée ?

@genekogan pouvez-vous m'aider? Les tests généraux passent tous les informations "/usr/local/lib/libcaffe2_detectron_ops_gpu.so found". Cependant, lorsque je teste l'opération personnalisée et que j'exécute test_zero_even_op.py, l'erreur "La bibliothèque d'opérations personnalisées n'a pas été trouvée dans'/path/to/to/detectron/build/libcaffe2_detectron_custom_ops_gpu".
Pouvez-vous me dire comment vous avez résolu ce problème ? J'ai rencontré la même erreur

@genekogan pouvez-vous m'aider? Les tests généraux passent tous les informations "/usr/local/lib/libcaffe2_detectron_ops_gpu.so found". Cependant, lorsque je teste l'opération personnalisée et que j'exécute test_zero_even_op.py, l'erreur "La bibliothèque d'opérations personnalisées n'a pas été trouvée dans'/path/to/to/detectron/build/libcaffe2_detectron_custom_ops_gpu".
Pouvez-vous me dire comment vous avez résolu ce problème ? J'ai rencontré la même erreur

Je ne peux pas résoudre, désolé.

J'ai aussi la même erreur lorsque j'essaie d'entraîner le réseau en utilisant :
outils python2/train_net.py \
--cfg configs/DensePose_ResNet50_FPN_single_GPU.yaml \
OUTPUT_DIR /tmp/detectron-output
Les tests d'installation de Detectron et de caffe2 réussissent tous les deux.
La sortie d'erreur :
Bibliothèque d'opérations Detectron trouvée : /usr/local/lib/python2.7/site-packages/torch/lib/libcaffe2_detectron_ops_gpu.so
Traceback (appel le plus récent en dernier) :
Fichier "/usr/local/densepose/tools/train_net.py", ligne 35, dans
c2_utils.import_custom_ops()
Fichier "/usr/local/densepose/detectron/utils/c2.py", ligne 39, dans import_custom_ops
custom_ops_lib = envu.get_custom_ops_lib()
Fichier "/usr/local/densepose/detectron/utils/env.py", ligne 85, dans get_custom_ops_lib
'Lib d'opérations personnalisées introuvable dans \'{}\''.format(custom_ops_lib)
AssertionError : bibliothèque d'opérations personnalisée introuvable dans '/usr/local/densepose/build/libcaffe2_detectron_custom_ops_gpu.so'

@genekogan Merci ! Je l'ai résolu. Un conflit très simple~

@genekogan你能帮帮我吗?一般测试全部通过信息“/usr/local/lib/libcaffe2_detectron_ops_gpu.so found”。但是,当我测试自定义操作并运行test_zero_even_op.py时,它会抛出错误“未在'/ chemin / vers / vers / detectron / build / libcaffe2_detectron_custom_ops_gpu中找到自定义操作库”。
Pouvez-vous me dire comment vous avez résolu ce problème ? j'ai rencontré la même erreur

Et je n'arrive pas à trouver le fichier 'libcaffe2_detectron_custom_ops_gpu.so'. J'ai vérifié que caffe2/pytorch se trouve dans la variable d'environnement PYTHONPATH.

trouvé la solution

dans le fichier /chemin vers la bibliothèque/densepose/detectron/utils/env.py
éditer la ligne 19
_CMAKE_INSTALL_PREFIX = '/usr/lib'
à
_CMAKE_INSTALL_PREFIX = 'chemin vers le dossier lib de pytorch que vous avez construit en utilisant cmake ou le fichier setup.py/'
et recommencer :)

Je n'ai pas de module detectron dans caffe2. J'ai installé caffe2 via pytorch. Il s'installe correctement mais il n'a pas de module detectron. puis-je obtenir de l'aide.

Merci d'avance

Hé les gars, le but de ce bloc de code est de trouver le fichier "libcaffe2_detectron_ops_gpu.so
", alors faites simplement ceci:

  1. trouvez le fichier vous-même : find / -name libcaffe2_detectron_ops_gpu.so
  2. ajouter le résultat de la recherche à la liste de recherche

@genekogan Merci ! Je l'ai résolu. Un conflit très simple~

comment le résoudre, j'ai le même problème, merci

Cette page vous a été utile?
0 / 5 - 0 notes

Questions connexes

Adhders picture Adhders  ·  3Commentaires

kleingeo picture kleingeo  ·  3Commentaires

kampelmuehler picture kampelmuehler  ·  4Commentaires

fangpengcheng95 picture fangpengcheng95  ·  4Commentaires

lilichu picture lilichu  ·  3Commentaires