faiss 学习
介绍
安装
编译
- faiss安装
- makefile.inc的做用
- 按照教程能够分别生成libfaiss.a与libgpufaiss.a静态库文件
- Centos 7.3 编译 & 安装 & 测试 facebook faiss
索引学习
坑
-
首先想在本地mac上编译faiss(失败)html
- 安装了cuda,但mac没有GPU
- gcc g++ 默认使用的cmake,经过设置环境变量解决
- 安装openblas boost thrift zookeeper
- 还有一些依赖问题没有解决
- 编译整个项目时出现找不到头文件的问题
-
在本地安装thrift0.9.2(失败)git
- 分别能够从github与thrit官网下载包进行安装,但都没有安装成功
- 使用brew install thrift能够安装成功,但没法经过命令选择0.9.2版本
- 网上能找到方法,从github上clone下来brew的thrift版本,而后git log找到0.9.2版本对应的commit id,git checkout到这个id,执行命令,会出错
-
拉取centos7 docker镜像(失败)github
- 因为生产环境中使用的是centos7,因此想拉取相同系统环境的镜像,好处是能够直接把线上的库文件scp到本地
- 安装cmake make gcc g++
- 但仍然须要安装cuda openblas thrift boost zookeeper等等依赖
- 依赖安装不完整,编译项目时出现找不到头文件问题
-
使用测试环境(经过)docker
- 好处是各类依赖已经安装好
- 有点麻烦的是在本地clion写好测试代码,复制到测试机上进行编译并执行测试
- 测试目的为faiss不一样版本之间的性能,因为编译faiss(生成静态库文件)须要cuda openblas等依赖,所以也在测试机上执行
- 直接将原src目录下的makefile目录复制,并进行修改(makefile来自nmslib项目,其中还有不少编译选项不明白)
- 编译好不一样版本的faiss静态库文件,完成性能测试(faiss库还有待继续深刻学习)
-
使用测试环境(没法使用GPU创建索引)centos
- 缘由是测试环境的机器没有GPU,还一直在google错误信息,浪费时间,心塞。。。
- 查看gpu以及类型
lspci | grep -i vga; lspci |grep -i nvidia
- 查看nvidia显卡状态
nvidia-smi
- 查看gpu以及类型
- 缘由是测试环境的机器没有GPU,还一直在google错误信息,浪费时间,心塞。。。
-
类似度post
- inner product: 越大越类似(越大夹角越小,方向越一致)
- cosine similarity: normalized vector, inner product, -1:1,越大越类似