[PYTHON] Installieren Sie Faiss unter CentOS 7

Überblick:

Ein Hinweis zum Installieren von faiss in einer CentOS7-Umgebung ohne Anaconda. Ich bin nicht sicher, ob Anaconda problemlos auf CentOS7 installiert werden kann, aber ... Ich konnte es mit pip nicht reibungslos installieren, daher habe ich die Schritte aufgezeichnet, die installiert werden können.

Hintergrund:

Ich kann es aus irgendeinem Grund nicht in der CentOS7-Umgebung installieren! Aus globaler Sicht scheint es einige Menschen zu geben, die auf ähnliche Probleme gestoßen sind, aber es gibt keine Informationen, die eindeutig eine Lösung finden, wie "Das ist es!" ... Mehr als einen halben Tag verbracht. Hoppla. Ich habe bestätigt, dass es nicht auch in mehreren CentOS7-Umgebungen installiert werden kann, daher dachte ich, dass es sich um ein CentOS7-spezifisches Problem handelt, und wollte eine Prozedur einrichten.


Anfangs lief es gut ...

Faiss ist eine von Facebook veröffentlichte Bibliothek, die einen Hochgeschwindigkeitsalgorithmus für die Ähnlichkeitssuche (und das Clustering) implementiert. Ich versuche, einen semantischen Suchmechanismus aus den von SatzBERT vektorisierten Werten zu erstellen ... Anfänglich war es eine Implementierung, die einfach die Cos-Ähnlichkeit zwischen dem zu durchsuchenden Vektor und dem zu durchsuchenden Vektor berechnete und sortierte, um den Vektor mit der höchsten Ähnlichkeit zu erhalten. Als jedoch die Anzahl der Suchziele dieser semantischen Suche groß wurde, hielt ich die Berechnungskosten für gefährlich.

Nach ein wenig Recherche fand ich eine Bibliothek namens "Faiss", die den Vektor indizieren (?) Und zu geringen Kosten (in kurzer Zeit) berechnen kann. Ich habe es sofort bei Google Colab versucht!

!pip3 install faiss-cpu
import numpy as np
import faiss

d = max([len(v) for v in sentence_vectors])
index = faiss.IndexFlatL2(d)
index.add(np.array(sentence_vectors).astype('float32'))
closest_n = 1
D, I = index.search(np.array(query_embeddings).astype('float32'), closest_n)

Einfacher Sieg! !!

Es ist immer noch ein Test mit einer kleinen Anzahl von zu suchenden Vektoren (100 oder weniger), daher spüre ich keine dramatischen Veränderungen ... Tatsächlich wurde die Suchzeit verkürzt, und die Ähnlichkeitssuche unterschied sich nicht vom Extraktionsergebnis durch Cos-Ähnlichkeit, sodass ich anfing, daran zu arbeiten, sie in den eigentlichen Mechanismus zu integrieren.


Nun ... lass es uns auf dem CentOS 7-Server des Hauptthemas installieren! !! Natürlich ist es ein einfacher Gewinn, oder? !!

Installiert mit Pip wie Colab. Faiss scheint hauptsächlich mit Anaconda installiert zu sein, aber ich benutze Anaconda nicht, also ist es ein Pip. Im Fall von pip scheint der Modulname faiss-cpu / faiss-gpu angegeben zu sein ... Beim Umschalten zwischen cpu und gpu scheint es mit beiden zu deinstallieren und neu zu installieren.

https://pypi.org/project/faiss-cpu/ https://pypi.org/project/faiss-gpu/

Jedoch! Ich bekomme einen Fehler! Warum? !!

$ sudo pip3 install faiss-cpu
Collecting faiss-cpu
  Downloading https://files.pythonhosted.org/packages/8b/3e/d64ff22504a70fb15457de8fb2f5fd84e35448fdcd9958880ae8d0438a82/faiss-cpu-1.6.4.post2.tar.gz
Building wheels for collected packages: faiss-cpu
  Running setup.py bdist_wheel for faiss-cpu ... error
  Complete output from command /usr/bin/python3 -u -c "import setuptools, tokenize;__file__='/tmp/pip-build-i9sic395/faiss-cpu/setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))" bdist_wheel -d /tmp/tmp2c2gltlxpip-wheel- --python-tag cp36:
  running bdist_wheel
  running build
  running build_py
  running build_ext
  building 'faiss._swigfaiss' extension
  swigging faiss/faiss/python/swigfaiss.i to faiss/faiss/python/swigfaiss_wrap.cpp
  swig -python -c++ -Doverride= -I/usr/local/include -Ifaiss -DSWIGWORDSIZE64 -o faiss/faiss/python/swigfaiss_wrap.cpp faiss/faiss/python/swigfaiss.i
  unable to execute 'swig': No such file or directory
  error: command 'swig' failed with exit status 1
  
  ----------------------------------------
  Failed building wheel for faiss-cpu
  Running setup.py clean for faiss-cpu
Failed to build faiss-cpu
Installing collected packages: faiss-cpu
  Running setup.py install for faiss-cpu ... error
    Complete output from command /usr/bin/python3 -u -c "import setuptools, tokenize;__file__='/tmp/pip-build-i9sic395/faiss-cpu/setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))" install --record /tmp/pip-q0l4dufw-record/install-record.txt --single-version-externally-managed --compile:
    running install
    running build
    running build_py
    running build_ext
    building 'faiss._swigfaiss' extension
    swigging faiss/faiss/python/swigfaiss.i to faiss/faiss/python/swigfaiss_wrap.cpp
    swig -python -c++ -Doverride= -I/usr/local/include -Ifaiss -DSWIGWORDSIZE64 -o faiss/faiss/python/swigfaiss_wrap.cpp faiss/faiss/python/swigfaiss.i
    unable to execute 'swig': No such file or directory
    error: command 'swig' failed with exit status 1
    
    ----------------------------------------
Command "/usr/bin/python3 -u -c "import setuptools, tokenize;__file__='/tmp/pip-build-i9sic395/faiss-cpu/setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))" install --record /tmp/pip-q0l4dufw-record/install-record.txt --single-version-externally-managed --compile" failed with error code 1 in /tmp/pip-build-i9sic395/faiss-cpu/

Ich habe es übrigens auf meinem lokalen Mac ausprobiert. Vielleicht war Colab allein der richtige Weg? !! Nein, die Installation mit faiss-cpu auf meinem lokalen Mac ist ohne Probleme abgeschlossen ... Das riecht schlecht!

Ich habe mich im Labyrinth verlaufen ...

Ich habe im Web gesucht, aber keine entscheidenden Maßnahmen gefunden ... Unter ihnen fand ich einen Ersatz namens Faiss-Centos, der eine Kombination der Keimwörter meiner gegenwärtigen Sorgen ist. Das ist cool! !!

https://pypi.org/project/faiss-centos/

Ich bin hier begeistert! Aussehen! !!

$ sudo pip3 install faiss-centos
WARNING: Running pip install with root privileges is generally not a good idea. Try `pip3 install --user` instead.
Collecting faiss-centos
  Could not find a version that satisfies the requirement faiss-centos (from versions: )
No matching distribution found for faiss-centos

Krebs…

Ich bin auf verschiedene Weise durch das Web gewandert, aber ich frage mich, ob die Lösung wie folgt war ... Ich bin nicht sicher. https://github.com/facebookresearch/faiss/issues/866

Danach habe ich verschiedene Dinge getan!

Unter ihnen ist faiss-centos ein Ei, kein Rad, also versuchen Sie, die Pip-Version auf 8 zu senken ... Versuchen Sie, die Eidatei zu entpacken ... Versuchen Sie, openblas-serial oder gmp-devel zu installieren ...

Allerdings kann ich _swigfaiss oder so etwas nicht finden, ohne mir Sorgen um meine Angst zu machen! Ich werde ein schwieriges Problem sagen. Ich bin müde ...

Machen Sie eine Pause ... oder tun Sie etwas anderes, um abzulenken, Tee zu trinken, krank zu werden ...


das ~! ??

Nun, ich habe mich ausgeruht, ich habe meine Gehirnermüdung losgeworden und es ist schon Nacht! Melden Sie sich erneut beim CentOS7-Server an ...

$ python3
Python 3.6.8 (default, Apr  2 2020, 13:34:55) 
[GCC 4.8.5 20150623 (Red Hat 4.8.5-39)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import faiss
>>> 

Es gibt keine Fehler! !!

Vor der Pause war es ein Fehler ... Sind endlich sieben Kobitos zu mir gekommen? ??

Wechseln Sie also in den gewünschten Ordner und versuchen Sie es erneut ... Fehler. Gehen Sie zurück zur Route und versuchen Sie es erneut ... Cool! Was ist der Unterschied? ??

Irgendwie habe ich von "https://pypi.org/project/faiss-centos/" heruntergeladen, faiss_centos-1.5.2-py3.6.egg entpackt, den Ordner faiss / direkt darunter erstellt und importiert. Es ist. Ein Lichtstrahl ...

Wenn ja ... Was ist, wenn ich diesen faiss / Ordner in site-packages / kopiere? ?? ??


Fazit

Danach identifizierte ich die Bibliotheken, die zusätzlich installiert werden müssen, und identifizierte das Verfahren zum Installieren von faiss unter CentOS7.

Sobald ich es wusste, war es nur das ...

$ wget https://files.pythonhosted.org/packages/f6/8b/ab69a201ea1b8be759ba16f172f92d1fb935a8f4a94f02fe52c7d8ec579f/faiss_centos-1.5.2-py3.6.egg
$ unzip faiss_centos-1.5.2-py3.6.egg
$ sudo cp -r ./faiss /usr/local/lib/python3.6/site-packages
(Oder ...$ sudo cp -r ./faiss /usr/lib/python3.6/site-Pakete je nach Umgebung ...)

$ sudo yum install openblas-serial
$ sudo yum install gmp gmp-devel

$ python3
Python 3.6.8 (default, Apr 2 2020, 13:34:55) 
[GCC 4.8.5 20150623 (Red Hat 4.8.5-39)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import faiss
>>>

Wenn jemand ein ähnliches Problem hat, wäre ich Ihnen dankbar, wenn Sie sich darauf beziehen könnten.

Recommended Posts

Installieren Sie Faiss unter CentOS 7
Installieren Sie numba unter CentOS 7.2
Installieren Sie Python3.4 unter CentOS 6.6
Installieren Sie mecab-python unter CentOS
Installieren Sie Python 2.7.3 unter CentOS 5.4
Installieren Sie awscli auf centos7
Installieren Sie Chainer unter CentOS 6.7
Installieren Sie die ImageMagick-6.2.x-Serie unter CentOS7.7
Installieren Sie Python 3.8 unter CentOS 7 (SCL)
Installieren Sie Chrome unter der CentOS 7-Serie
Installieren Sie Python 3.8 unter CentOS 8 (AppStream)
Schritte zum Installieren von MySQL 8.0 unter CentOS 8.1
Himbeer Pi 4 Centos7 auf Docker installieren
Schritte zum Installieren von VirtualBox unter CentOS
Installieren Sie Java (Oracle JDK14) unter CentOS7
So installieren Sie PyPy unter CentOS
So installieren Sie TensorFlow unter CentOS 7
Installieren Sie pip unter CentOS7. Auch iPython.
Installieren Sie VirtualBox unter CentOS 7 unter VirtualBox (Mac + Vagrant)
Installieren Sie Python unter CentOS mit Pyenv
So installieren Sie Maven unter CentOS
Studienhinweis 9_Installieren Sie Jenkins unter CentOS7
Installieren Sie Python unter CentOS mit pyenv
CentOS8 --Installieren - Django
CentOS8 --Installieren - Python3
Aktivieren Sie den Befehl sar unter CentOS (installieren Sie sysstat).
So installieren Sie Apache (httpd) unter CentOS7
So installieren Sie Eclipse GlassFish 5.1.0 unter CentOS7
So installieren Sie Apache (httpd) unter CentOS8
Installieren Sie PostgreSQL aus dem Quellcode unter CentOS
Installieren Sie pyenv und rbenv systemweit unter CentOS
Installieren Sie Mecab auf Marvericks
Installieren Sie TensorFlow unter Ubuntu
Installieren Sie Python auf der WSL
Installieren Sie pyenv auf dem Mac
Installieren Sie pip auf Mavericks
Installieren Sie Python auf Pidora.
Installieren Sie mongodb auf termux
Installieren Sie Scrapy auf Python3
Installieren Sie Docker auf Fedora31
Installieren Sie Ansible auf einem Mac
[Ansible] Installieren Sie dnf unter Centos7 mit dem Python3-Interpreter
Installieren Sie Python auf dem Mac
Installieren von Python 3 in einer Mac-Umgebung
Installieren Sie Plone (4.3.6) unter MacOSX (10.10.3)
Installieren Sie PySide2 unter Ubuntu
Installieren Sie gensim auf Marvericks
Installieren Sie JModelica unter Ubuntu
Installieren Sie Anaconda unter Windows 10
Installiere numpy auf Marvericks
Installieren Sie Python unter Windows
Installieren Sie enebular-agent in Chrome Book
Installieren Sie pycuda unter Windows10
Installieren Sie aws-cli auf MacPorts
Installieren Sie pygraphviz unter Windows 10
Installieren Sie Docker unter AWS
Installieren Sie Python 3.3 unter Ubuntu 12.04
[Fehler] Installieren Sie den Stapelüberlauf-Klon Askbot unter CentOS 6.4
Installieren Sie Chainer 1.5.0 unter Windows
Installieren Sie Python 3.4 auf einem Mac