文档
注册
评分
提单
论坛
小AI

安装Faiss

安装须知

  • 请在安装Faiss之前,完成OpenBLAS的安装,具体安装步骤请参见安装OpenBLAS
  • 当前发布的特征检索依赖于Faiss v1.7.4执行构建和发布,推荐用户使用对应版本的Faiss,在此处仅提供Faiss v1.7.4的安装参考,具体安装步骤请以实际Faiss版本和环境为准。
  • 如果是Arm平台,编译安装Faiss前请根据gcc版本适配Faiss源码。
  • Arm平台上,部分旧版本的gcc(如4.8.5等)不支持直接编译faiss-1.7.4,部分旧版本的编译器不支持“simdlib_neon.h”的相关实现,需要改用默认CPU上的simd实现,使用该方法时功能可以正常运行,但是部分Index算法(IVF类、SQ类等)会出现较大性能退化。推荐使用gcc7.5.0进行编译和安装,高于gcc9.5.0版本可能出现兼容性问题。

操作步骤

  1. 创建install_faiss_sh.sh脚本。
    vi install_faiss_sh.sh
  2. 在install_faiss_sh.sh脚本中写入如下内容。
    # faiss 1.7.4
    # 步骤1 下载faiss源码包并解压
    wget https://github.com/facebookresearch/faiss/archive/v1.7.4.tar.gz
    tar -xf v1.7.4.tar.gz && cd faiss-1.7.4/faiss
    # modify source code
    # 步骤2 修改faiss源码
    arch="$(uname -m)"
    if [ "${arch}" = "aarch64" ]; then
      gcc_version="$(gcc -dumpversion)"
      if [ "${gcc_version}" = "4.8.5" ];then
        sed -i '20i /*' utils/simdlib.h
        sed -i '24i */' utils/simdlib.h
      fi
    fi
    sed -i "131 i\\
        \\
        virtual void search_with_filter (idx_t n, const float *x, idx_t k,\\
                                         float *distances, idx_t *lables, const void *mask = nullptr) const {}\\
    " Index.h
    sed -i "38 i\\
        \\
    template <typename IndexT>\\
    IndexIDMapTemplate<IndexT>::IndexIDMapTemplate (IndexT *index, std::vector<idx_t> &ids):\\
        index (index),\\
        own_fields (false)\\
    {\\
        this->is_trained = index->is_trained;\\
        this->metric_type = index->metric_type;\\
        this->verbose = index->verbose;\\
        this->d = index->d;\\
        id_map = ids;\\
    }\\
    " IndexIDMap.cpp
    sed -i "29 i\\
        \\
        explicit IndexIDMapTemplate (IndexT *index, std::vector<idx_t> &ids);\\
    " IndexIDMap.h
    sed -i "199 i\\
      utils/sorting.h
    " CMakeLists.txt
    # modify source code end
    cd ..
    ls
    # 步骤3 faiss编译配置
    cmake -B build . -DFAISS_ENABLE_GPU=OFF -DFAISS_ENABLE_PYTHON=OFF -DBUILD_TESTING=OFF -DBUILD_SHARED_LIBS=ON -DCMAKE_BUILD_TYPE=Release
    # 步骤4 编译安装
    cd build && make -j && make install
    cd ../.. && rm -f v1.7.4.tar.gz && rm -rf faiss-1.7.4
  3. 按“Esc”键,输入:wq!,按“Enter”保存并退出编辑。
  4. 下载Faiss源码压缩包并解压安装。
    bash install_faiss_sh.sh
    • 编译该Faiss 1.7.4需要CMake的版本不低于CMake 3.23.1,如果编译Faiss时提示CMake版本过低,请参考编译Faiss 1.7.4时提示CMake的版本过低解决。
    • Faiss默认安装目录为“/usr/local/lib”,如需指定安装目录,例如“install_path=/usr/local/faiss/faiss1.7.4”,,则在cmake编译配置加-DCMAKE_INSTALL_PREFIX=${install_path}选项即可。
      install_path=/usr/local/faiss/faiss1.7.4
      cmake -B build . -DFAISS_ENABLE_GPU=OFF -DFAISS_ENABLE_PYTHON=OFF -DBUILD_TESTING=OFF -DBUILD_SHARED_LIBS=ON -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=${install_path}
  5. 配置系统库查找路径的环境变量。

    动态链接依赖Faiss的程序在运行时需要知道Faiss动态库所在路径,需要在Faiss的库目录加入“LD_LIBRARY_PATH”环境变量。

    # 配置/etc/profile
    vim /etc/profile
    # 在/etc/profile中添加: export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH
    # /usr/local/lib是Faiss的安装目录,如果安装在其他目录下,将/usr/local/lib替换为Faiss实际安装路径,部分操作系统和环境中,faiss可能会安装在其他目录下。
    source /etc/profile
    cd ..
  6. 验证是否安装成功。
    cat /usr/local/share/faiss/faiss-config-version.cmake |grep 'PACKAGE_VERSION "'

    如果正确显示软件的版本信息,则表示安装成功。

搜索结果
找到“0”个结果

当前产品无相关内容

未找到相关内容,请尝试其他搜索词