本仓库提供了昇腾Index SDK 组件实现的几种常见检索算法的demo
MindSDK版本 | Index SDK版本 | CANN版本 | HDK版本 | 硬件形态 |
---|---|---|---|---|
master | 6.0.RC3 | 8.0.RC3 | 24.1.RC3 | Atlas推理系列产品 Atlas200/300/500 800I A2推理产品 |
master分支对应版本mxIndex 6.0.RC2、mxIndex 6.0.RC1,依赖faiss版本为1.7.4
请关注昇腾社区MindSDK的最新版本
wget https://github.com/google/googletest/archive/refs/tags/release-1.8.1.tar.gz && \
tar xf release-1.8.1.tar.gz && cd googletest-release-1.8.1 && \
cmake -DBUILD_SHARED_LIBS=ON -DCMAKE_INSTALL_PREFIX=/usr/local/gtest . && make -j && make install && \
cd .. && rm -rf release-1.8.1.tar.gz googletest-release-1.8.1
.
|-- CMakeLists.txt
|-- Dockerfile
| |-- Dockerfile-ascend-toolkit.txt # 昇腾镜像文件
| |-- Dockerfile-ascendbase-infer.txt # 基础镜像文件
| `-- install_deps.sh # 依赖下载安装脚本
|-- README.md
|-- TestAscendIReduction.cpp # 降维算法 NN降维 Pcar降维 demo
|-- TestAscendIndexAggressTs.cpp # 时空库 IP距离,带属性过滤 支持组batch demo
|-- TestAscendIndexBinaryFlat.cpp # 二值化底库特征汉明距离 BinaryFlat算法demo
|-- TestAscendIndexCluster.cpp # FP32 聚类场景 AscendCluster算法demo
|-- TestAscendIndexFlat.cpp # FP32转FP16 Flat算法暴搜demo
|-- TestAscendIndexGreat.cpp # Great近似检索算法demo
|-- TestAscendIndexIVFSP.cpp # IVFSP近似检索算法demo
|-- TestAscendIndexIVFSQ.cpp # IVFSQ 近似检索算法demo
|-- TestAscendIndexIVFSQT.cpp # IVFSQT近似检索算法demo
|-- TestAscendIndexIVFSQTwithCpuFlat.cpp # IVFSQT粗搜加cpu精搜demo
|-- TestAscendIndexInt8Flat.cpp # 底库数据为int8 int8Flat算法暴搜demo
|-- TestAscendIndexInt8FlatWithCPU.cpp # 底库数据为int8 int8Flat算法CPU同步落盘 demo
|-- TestAscendIndexInt8FlatWithReduction.cpp # FP32 降维量化为Int8后,int8Flat算法暴搜demo
|-- TestAscendIndexInt8FlatWithSQ.cpp # FP32 SQ 量化为 int8后, 暴搜demo
|-- TestAscendIndexSQ.cpp # FP32 SQ 量化为Int8后,反量化SQ算法暴搜demo
|-- TestAscendIndexSQMulPerformance.cpp # 布控库 IP距离 SQ算法demo
|-- TestAscendIndexTS.cpp # 时空库,汉明距离,带属性过滤demo
|-- TestAscendIndexTS_int8Cos.cpp # 时空库,int8 cos距离,带属性过滤demo
|-- TestAscendIndexVStar.cpp # VStar近似检索算法demo
|-- TestAscendMultiSearch.cpp # 多Index批量检索demo
|-- build.sh # 编译安装脚本
|-- dependencies.cmake
`-- faiss-python # python接口
|-- Faiss安装参考.md # python接口安装说明
|-- MANIFEST.in
|-- Makefile
|-- ascendfaiss.py # 接口配置脚本
|-- setup.py # 安装脚本
|-- swig_ascendfaiss.swig # swig 配置文件
`-- test_ascend_index_flat.py # flat算法demo
注:TestAscendIndexIVFSP.cpp 需要根据实际情况填写数据集(特征数据、查询数据、groundtruth数据)、码本,所在的目录。 注:TestAscendIndexGreat.cpp 需要根据实际情况填写数据集(特征数据、查询数据、groundtruth数据)、码本,所在的目录。 注:TestAscendIndexVStar.cpp 需要根据实际情况填写数据集(特征数据、查询数据、groundtruth数据)、码本,所在的目录。
TestAscendIReduction.cpp 需要根据实际情况填写对应的NN降维模型所在的目录。
请先正确安装Index SDK 组件及其依赖的driver、firmware、Ascend toolkit、OpenBLAS、Faiss (具体可参考用户指南 安装部署章节)
进入IndexSDK目录 本例中demo默认安装路径为 /home/work/,可将其修改为demo实际安装路径。
export INDEXDEMO_INSTALL_PATH=/home/work/
cd ${INDEXDEMO_INSTALL_PATH}/mindxsdk-referenceapps/IndexSDK/
SET(MXINDEX_HOME /home/work/FeatureRetrieval/mxIndex/ CACHE STRING "")
本例中Index SDK默认安装路径为 /home/work/FeatureRetrieval/mxIndex/,可将其修改为Index SDK实际安装路径。
export INDEX_INSTALL_PATH=/home/work/FeatureRetrieval/mxIndex/
bash build.sh
执行如下命令设置环境变量(根据CANN软件包的实际安装路径修改):
source /usr/local/Ascend/ascend-toolkit/set_env.sh
export LD_LIBRARY_PATH=${INDEX_INSTALL_PATH}/host/lib:$LD_LIBRARY_PATH
MXINDEX_INSTALL_PATH为Index SDK实际安装路径,本例中为/home/work/FeatureRetrieval/mxIndex/
生成算子:
所有算子生成的python文件均在MXINDEX_INSTALL_PATH/tools/目录下,可执行 -h参数 查看具体参数意义
以TestAscendIndexFlat.cpp中需要生成的Flat算子为例, 执行:
cd ${INDEX_INSTALL_PATH}/ops/
bash custom_opp_{arch}.run
cd ${INDEX_INSTALL_PATH}/tools/
生成aicpu和flat 512维的算子
算子默认生成在${INDEX_INSTALL_PATH}/tools/op_models 路径下,将算子移动至算子目录,执行:
mv ${INDEX_INSTALL_PATH}/tools/op_models/* ${INDEX_INSTALL_PATH}/modelpath/
设置算子的环境变量:
export MX_INDEX_MODELPATH=/home/work/FeatureRetrieval/mxIndex-{version}/modelpath/
注意:算子环境变量请勿使用软链接,而是算子实际所在目录。
cd ${INDEXDEMO_INSTALL_PATH}/mindxsdk-referenceapps/IndexSDK/build/
./TestAscendIndexFlat
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。