Skip to content

源码编译Vearch

zhanchao edited this page Aug 20, 2020 · 1 revision

源码编译vearch

如果你懒得自己编译,我们提供了一个编译好的可执行文件,你可以直接下载使用。vearch_v3.1.0

1、安装vearch的依赖

CentOS, Ubuntu and Mac OS are all OK (recommend CentOS >= 7.2),cmake required
Go >= 1.11.2 required
Gcc >= 5 required
# faiss是vearch引擎的依赖,是必须安装的
Faiss >= v1.6.3
# RocksDB是vearch磁盘版数据的存储引擎
RocksDB == 6.2.2 (optional) . 
#这个是要源码编译python sdk的时候需要的,这里建议直接使用pip install vearch
swig >= 3
# 关于GPU,我准备单独一个文章介绍,这里就先略过
CUDA >= 9.0, if you want GPU support.

所以这里我们准备安装的就是 go、gcc、 faiss和rocksdb

# 首先定义一个vearch的目录,这里暂定为/home/vearch,接下的操作都将在这个目录下
mkdir -p /home/vearch && cd /home/vearch
yum install golang
yum install gcc
# 安装rocksdb参考https://github.com/facebook/rocksdb/blob/master/INSTALL.md
# 安装faiss参考https://github.com/facebookresearch/faiss/blob/master/INSTALL.md
# 安装完rocksdb和faiss将其中的so包和include文件夹挪到对应的位置

# 创建vearch的依赖文件夹vearch_libs
mkdir vearch_libs && cd vearch_libs
# 对于rocksdb,这里下载的是rocksdb-6.2.2
# 拷贝相关文件到指定文件夹
mkdir -p /home/vearch/vearch_libs/rocksdb-6.2.2-install/
git clone https://github.com/facebook/rocksdb.git
cd rocksdb 
修改INSTALL_PATH ?= /home/vearch/vearch_libs/rocksdb-6.2.2-install/
make shared_lib &&  make install

# 对于faiss
# 拷贝相关文件到指定文件夹
mkdir -p /home/vearch/vearch_libs/faiss-install
git clone https://github.com/facebookresearch/faiss.git
cd faiss && ./configure --without-cuda --prefix=/home/vearch/vearch_libs/faiss-install
make && make install

这里有个坑,装faiss的时候系统可能提示你还需要安装BLAS和LAPACK,centos7的解决方案是直接yum install openblas-devel lapack-devel, 然而centos8怎么都找不到devel版的这两个,安装不是devel的又没有效果,所以采用了

dnf --enablerepo=PowerTools install openblas-devel
# 安装openblas-devel时候会自动安装lapack

2、编译vearch

# 定义vearch的编译路径,这个最好不要改
mkdir -p /home/vearch/go/src/github.com/vearch
export GOPATH=/home/vearch/go
cd $GOPATH/src/github.com/vearch 
git clone https://github.com/vearch/vearch.git
# 过程有点慢,需要细心等待,或者直接下载zip包,然后本地解压
# unzip vearch_master.zip && mv vearch_master vearch  && rm  vearch_master.zip
# 或者git clone --depth=1 https://github.com/vearch/vearch.git
cd vearch/build
# 在这里要分别编译引擎和vearch,为了方便这里写了个脚本run.sh
# export GOPATH=/home/vearch/go
# export FAISS_HOME=/home/vearch/vearch_libs/faiss-install/
# export ROCKSDB_HOME=/home/vearch/vearch_libs/rocksdb-6.2.2-install/
# export LD_LIBRARY_PATH=$FAISS_HOME/lib:$ROCKSDB_HOME/lib:$LD_LIBRARY_PATH
# ./build.sh
bash run.sh

如果顺利,你就完成了vearch的编译.

Clone this wiki locally