安装和使用说明
针对Milvus数据库的KScaNN优化特性以patch文件的形式提供,在应用这个优化特性之前,需要先安装鲲鹏召回算法库,以确保patch文件能够顺利通过编译。

开源的Milvus源码不包含索引相关组件Knowhere,因此在编译过程中需要单独拉取Knowhere的源码并进行集成。本次优化特性主要针对索引查询,相关的补丁文件将主要添加到Knowhere的源码中。因此,整个使用流程需要对Milvus进行两次编译:第一次编译时拉取Knowhere的源码,第二次编译在应用了补丁文件后进行,以启用优化特性。
- 下载鲲鹏召回算法库放在主目录(~)下,解压并安装。
获取路径请参见表2的KScaNN获取路径,执行以下命令解压和安装。
1 2 3
cd ~ unzip BoostKit-SRA_Recall-1.2.0.zip rpm -ivh boostkit-sra_recall-1.2.0-1.aarch64.rpm
- 下载鲲鹏系统库放在主目录(~)下,解压并安装。
获取路径请参见表2的KSL获取路径,执行以下命令解压和安装。
1 2 3
cd ~ unzip BoostKit-ksl_2.4.0.zip rpm -ivh boostkit-ksl-2.4.0-1.aarch64.rpm
- 使用git克隆Milvus并切换到2.4.5版本,放在主目录(~)下。
获取路径请参见表2,参见《Milvus 安装指南》完成Milvus的编译安装。
- 获取优化特性的补丁文件,将其上传到主目录(~)下。
获取路径请参见表2。
- 执行以下命令,合入优化特性。没有输出则说明合入成功。若是编译Milvus时进行过“~/milvus/internal/core/conanfile.py”文件内容的修改,可在合入patch之后再手动添加。
1 2 3 4 5 6
cd ~/milvus git status git restore . git apply --whitespace=nowarn < ~/0001-milvus-add-kbest-kscann.patch cd ~/milvus/cmake_build/thirdparty/knowhere/knowhere-src/ git apply --whitespace=nowarn < ~/0001-knowhere-add-kbest-kscann.patch
- 由于召回算法库仅提供KScaNN的动态库文件,因此客户需要自行生成OpenScann的动态库文件libscann_cc.so。以下给出简单操作步骤,更详细的使用说明,请参考《鲲鹏BoostKit搜推广使能套件》中的SRA_Recall使用说明。
- 安装依赖包。
1 2 3 4
yum install python python3-pip python3-devel java-11-openjdk java-11-openjdk-devel rsync libomp hdf5 hdf5-devel gtest-devel libuuid-devel yum install gcc-toolset-12* export PATH=/opt/openEuler/gcc-toolset-12/root/usr/bin/:$PATH export LD_LIBRARY_PATH=/opt/openEuler/gcc-toolset-12/root/usr/lib64/:$LD_LIBRARY_PATH
若是使用openEuler 22.03 LTS SP4的操作系统,可能使用Yum下载的gcc12编译libscann_cc.so会报lto-wrapper的错误。可以在“/etc/yum.repos.d/openEuler.repo”文件中将对应的Yum源代理修改成openEuler 22.03 LTS SP3的Yum源代理,即可正常编译。
- 切换gcc12版本至gcc10.3.1版本,继续执行后续编译操作。
- 安装依赖软件bazel-5.3.0。
1 2 3 4 5 6
cd ~ wget https://github.com/bazelbuild/bazel/releases/download/5.3.0/bazel-5.3.0-dist.zip --no-check-certificate unzip bazel-5.3.0-dist.zip -d bazel-5.3.0 cd bazel-5.3.0 env EXTRA_BAZEL_ARGS="--tool_java_runtime_version=local_jdk" bash ./compile.sh export PATH=~/bazel-5.3.0/output:$PATH
- 下载编译OpenScann。
1 2 3 4
cd ~ git clone https://gitee.com/openeuler/sra_scann_adapter/tree/v1.1.0/ unzip sra_scann_adapter-v1.1.0.zip -d OpenScann cd OpenScann
激活Python虚拟环境之后,编译libscann_cc.so。
- 鲲鹏920处理器
1 2
conda activate milvus sh project.sh -ah
- 鲲鹏920新型号处理器
1 2
conda activate milvus sh project.sh -ag
- 鲲鹏920处理器
- 指定OpenScann的头文件路径和动态库文件路径。
1 2
export OPEN_SCANN_LIB=~/OpenScann/kscann/scann/libscann_cc.so export OPEN_SCANN_INCLUDE=~/OpenScann/kscann/scann/
由于patch包中会读取OPEN_SCANN_INCLUDE的路径,运行目录下的一个python文件,所以路径的最后一个“/”是不能去掉的。
- 安装依赖包。
- 安装Milvus-KScaNN依赖环境。
- 安装依赖软件eigen-3.3.7。
1 2 3 4 5 6
git clone https://gitlab.com/libeigen/eigen.git cd eigen git checkout 33d0937c6bdf5ec999939fb17f2a553183d14a74 mkdir build && cd build cmake .. -DCMAKE_INSTALL_PREFIX=/usr/local/eigen-3.3.7 make -sj && make install
- 激活Python虚拟环境,安装Python依赖。
1 2 3
conda activate milvus pip install treelite==4.2.1 pip install tl2cgen
- 安装依赖软件eigen-3.3.7。
- 回到安装目录下,再次全量编译Milvus,以启用优化特性。
1 2
cd ~/milvus make milvus
- 通过ann-benchmarks gist数据集进行测试,可以得到使用加速优化特性前后的性能提升效果。详细测试步骤请参见《Milvus ann-benchmarks 测试指导》。
父主题: 特性指南