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.
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.
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)
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.
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/
$ 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 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
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
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 ...
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
>>>
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? ?? ??
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