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