Ubuntu下安裝Python開發的Facebook Faiss相似性搜索工具

Facebook 的相似性搜索工具 Faiss支持GPU下矢量表示檢索,有較強的檢索性能,可用於有效的相似性搜索(similarity search)和稠密矢量聚類(clustering of dense vectors)。Faiss 是圍繞存儲一個向量集的索引類型(index type)構建的,並且索引類型提供了一個利用 L2 和/或點積向量比較的函數,以使該函數能夠在向量集中進行搜索。下面說明下在ubuntu下步數faiss,並使用python接口開發。

1.環境準備

1)python環境:

命令:

python -V

python 3.6.6

2)CUDA版本:

命令:

cat /usr/local/cuda/version.txt

CUDA Version 9.0.176

3)Conda安裝

懶人部署,不想編譯,直接conda install。本機沒有安裝Anaconda,去https://conda.io/miniconda.html 下載miniconda installer. Miniconda是一個Anaconda的輕量級替代,默認只包含了python和conda,但是可以通過pip和conda來安裝所需要的包。Conda是一個開源的軟件包管理系統和環境管理系統,用於安裝多個版本的軟件包及其依賴關係,並在它們之間輕鬆切換。

命令:

wget -c https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
bash Miniconda3-latest-Linux-x86_64.sh 
source /home/root/.bashrc 
conda -V

顯示conda 4.7.12

2.Faiss安裝(GPU)

命令:# For CUDA9

conda install faiss-gpu cudatoolkit=9.0 -c pytorch

參考:https://github.com/facebookresearch/faiss/blob/master/INSTALL.md#general-compilation-instructions

3.Python測試

參考:https://github.com/facebookresearch/faiss/wiki/Getting-started

如圖:

4.python兼容

1)由於我本機原來有一個python解釋器,現在又部署了Anaconda(也會安裝一個python解釋器)。

命令:

import sys
sys.executable

python解釋器路徑:/usr/bin/python3.6

Anaconda中python解釋器路徑:/root/miniconda3/bin/python3.7   

2)發現終端命令前多了(base),原來是conda activate base 自動執行,執行conda deactivate後就沒有了。如果激活就執行anaconda下的python解釋器,如果不激活就執行原解釋器。

3)找到用戶目錄下的.bashrc文件,註釋掉conda的配置,不讓conda自啓動。在安裝的過程,可以選擇不配置環境,我選擇了配置環境,所以需要手動取消。

這樣的話,每次進入終端後都要配置下Anaconda路徑,才能使用conda,如下命令。

export PATH="/root/miniconda3/bin:$PATH"  --當前會話有效
source .bashrc

 

配置PATH後,就可以使用Anaconda下的python解釋器,然後就可用這個環境下安裝的faiss庫了。

總結下:Anaconda安裝時選擇了配置環境,導致原python解釋器需要切換。手動在.bashrc文件中取消Anaconda環境配置。每次進入終端後,默認python解釋器是/usr/bin下的python3.6。要使用faiss庫,就先配置Anaconda路徑啓用Anaconda中的python解釋器(/root/miniconda3/bin/下python3.7),然後就可以import faiss了。

5.Jupyter Notebook配置多個kernel

一般開發在jupyter下,默認是/usr/bin下的python解釋器,要使用faiss,需要切換python kernel到Anaconda環境下。需要給Jupyter Notebook配置多個IPython Kernel。

 

1)系統進入Anaconda解釋器環境下(配置PATH並source生效)

# 安裝ipykernel,命令

python -m pip install ipykernel

2)然後將Anaconda環境下的kernel安裝到jupyter中

命令如下,name自己命名

python -m ipykernel install --name python3.7

3)驗證

重啓jupyter notebook.

後臺啓動jupyter命令:

nohup jupyter notebook --allow-root > /data/tmpexec/jupyter/jupyter.log 2>&1 &

總結:爲開發方便,保留原python解釋器環境,對於新增Anaconda環境,採用兼容方式,在jupyter notebook中配置多個kernel來滿足生產。

6.jupyter開發測試

參考https://github.com/facebookresearch/faiss/wiki/Getting-started

 成功在python下開發faiss庫。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章