Ubuntu下安装Python开发的Facebook Faiss相似性搜索工具
Facebook 的相似性搜索工具 Faiss支持GPU下矢量表示檢索,有較強的檢索性能,可用于有效的相似性搜索(similarity search)和稠密矢量聚類(clustering of dense vectors)。Faiss 是圍繞存儲一個向量集的索引類型(index type)構(gòu)建的,并且索引類型提供了一個利用 L2 和/或點積向量比較的函數(shù),以使該函數(shù)能夠在向量集中進行搜索。下面說明下在ubuntu下步數(shù)faiss,并使用python接口開發(fā)。
1.環(huán)境準(zhǔn)備
1)python環(huán)境:
命令:
python -Vpython 3.6.6
2)CUDA版本:
命令:
cat /usr/local/cuda/version.txtCUDA Version 9.0.176
3)Conda安裝
懶人部署,不想編譯,直接conda install。本機沒有安裝Anaconda,去https://conda.io/miniconda.html 下載miniconda installer. Miniconda是一個Anaconda的輕量級替代,默認(rèn)只包含了python和conda,但是可以通過pip和conda來安裝所需要的包。Conda是一個開源的軟件包管理系統(tǒng)和環(huán)境管理系統(tǒng),用于安裝多個版本的軟件包及其依賴關(guān)系,并在它們之間輕松切換。
命令:
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解釋器,現(xiàn)在又部署了Anaconda(也會安裝一個python解釋器)。
命令:
import sys sys.executablepython解釋器路徑:/usr/bin/python3.6
Anaconda中python解釋器路徑:/root/miniconda3/bin/python3.7? ?
2)發(fā)現(xiàn)終端命令前多了(base),原來是conda activate base 自動執(zhí)行,執(zhí)行conda deactivate后就沒有了。如果激活就執(zhí)行anaconda下的python解釋器,如果不激活就執(zhí)行原解釋器。
3)找到用戶目錄下的.bashrc文件,注釋掉conda的配置,不讓conda自啟動。在安裝的過程,可以選擇不配置環(huán)境,我選擇了配置環(huán)境,所以需要手動取消。
這樣的話,每次進入終端后都要配置下Anaconda路徑,才能使用conda,如下命令。
export PATH="/root/miniconda3/bin:$PATH" --當(dāng)前會話有效 source .bashrc?
配置PATH后,就可以使用Anaconda下的python解釋器,然后就可用這個環(huán)境下安裝的faiss庫了。
總結(jié)下:Anaconda安裝時選擇了配置環(huán)境,導(dǎo)致原python解釋器需要切換。手動在.bashrc文件中取消Anaconda環(huán)境配置。每次進入終端后,默認(rèn)python解釋器是/usr/bin下的python3.6。要使用faiss庫,就先配置Anaconda路徑啟用Anaconda中的python解釋器(/root/miniconda3/bin/下python3.7),然后就可以import faiss了。
5.Jupyter Notebook配置多個kernel
一般開發(fā)在jupyter下,默認(rèn)是/usr/bin下的python解釋器,要使用faiss,需要切換python kernel到Anaconda環(huán)境下。需要給Jupyter Notebook配置多個IPython Kernel。
?
1)系統(tǒng)進入Anaconda解釋器環(huán)境下(配置PATH并source生效)
# 安裝ipykernel,命令
python -m pip install ipykernel2)然后將Anaconda環(huán)境下的kernel安裝到j(luò)upyter中
命令如下,name自己命名
python -m ipykernel install --name python3.73)驗證
重啟jupyter notebook.
后臺啟動jupyter命令:
nohup jupyter notebook --allow-root > /data/tmpexec/jupyter/jupyter.log 2>&1 &總結(jié):為開發(fā)方便,保留原python解釋器環(huán)境,對于新增Anaconda環(huán)境,采用兼容方式,在jupyter notebook中配置多個kernel來滿足生產(chǎn)。
6.jupyter開發(fā)測試
參考https://github.com/facebookresearch/faiss/wiki/Getting-started
?成功在python下開發(fā)faiss庫。
總結(jié)
以上是生活随笔為你收集整理的Ubuntu下安装Python开发的Facebook Faiss相似性搜索工具的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 图像语义分割模型DeepLab训练Cit
- 下一篇: Opencv-Python部署SIFT函