鲲鹏社区首页
中文
注册
我要评分
文档获取效率
文档正确性
内容完整性
文档易理解
在线提单
论坛求助

安装和使用说明

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

开源的Milvus源码不包含索引相关组件Knowhere,因此在编译过程中需要单独拉取Knowhere的源码并进行集成。本次优化特性主要针对索引查询,相关的补丁文件将主要添加到Knowhere的源码中。因此,整个使用流程需要对Milvus进行两次编译:第一次编译时拉取Knowhere的源码,第二次编译在应用了补丁文件后进行,以启用优化特性。

  1. 下载鲲鹏召回算法库放在主目录(~)下,解压并安装。

    获取路径请参见表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. 下载鲲鹏系统库放在主目录(~)下,解压并安装。

    获取路径请参见表2的KSL获取路径,执行以下命令解压和安装。

    1
    2
    3
    cd ~
    unzip BoostKit-ksl_2.4.0.zip
    rpm -ivh boostkit-ksl-2.4.0-1.aarch64.rpm
    
  3. 使用git克隆Milvus并切换到2.4.5版本,放在主目录(~)下。

    获取路径请参见表2,参见《Milvus 安装指南》完成Milvus的编译安装。

  4. 获取优化特性的补丁文件,将其上传到主目录(~)下。

    获取路径请参见表2

  5. 执行以下命令,合入优化特性。没有输出则说明合入成功。若是编译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
    
  6. 由于召回算法库仅提供KScaNN的动态库文件,因此客户需要自行生成OpenScann的动态库文件libscann_cc.so。以下给出简单操作步骤,更详细的使用说明,请参考《鲲鹏BoostKit搜推广使能套件》中的SRA_Recall使用说明
    1. 安装依赖包。
      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源代理,即可正常编译。

    2. 切换gcc12版本至gcc10.3.1版本,继续执行后续编译操作。

      gcc12仅用于6.a进行libscann_cc.so的编译获取,在后续的其他Milvus编译中,需使用gcc10.3.1版本进行编译。

    3. 安装依赖软件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
      
    4. 下载编译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
        
    5. 指定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文件,所以路径的最后一个“/”是不能去掉的。

  7. 安装Milvus-KScaNN依赖环境。
    1. 安装依赖软件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
      
    2. 激活Python虚拟环境,安装Python依赖。
      1
      2
      3
      conda activate milvus
      pip install treelite==4.2.1
      pip install tl2cgen
      
  8. 回到安装目录下,再次全量编译Milvus,以启用优化特性。
    1
    2
    cd ~/milvus
    make milvus
    
  9. 通过ann-benchmarks gist数据集进行测试,可以得到使用加速优化特性前后的性能提升效果。详细测试步骤请参见《Milvus ann-benchmarks 测试指导》。