Armv7l或树莓派32位RPI 4B编译faiss
pip3 install faiss-cpu
当然找不到预编译的包
手动下载
git clone https://github.com/facebookresearch/faiss.git
cd faiss
#能需要切换到特定版本标签,例如 v1.7.1,这个版本Cmake 3.18可以过,因为apt install安装的cmake只更新到这里,再往后要自己编译了
git checkout v1.7.1
安装编译依赖:
这是最关键也最容易出错的一步。Faiss 依赖于:
- C++ 编译器: g++ (通常通过 build-essential 包安装) CMake: 用于构建C++项目。 (
sudo apt install cmake
) - BLAS 库: 一个基础线性代数子程序库,如 OpenBLAS (推荐), ATLAS,
- MKL。在树莓派上,通常安装 OpenBLAS:
sudo apt install libopenblas-dev
。这是性能的关键。 - SWIG: 用于生成 Python 绑定,
sudo apt install swig
- OpenMP (可选但默认启用): 用于并行处理。有时在ARM平台上,如果遇到问题,可能需要禁用它或确保有合适的编译器支持。
sudo apt-get install libatlas-base-dev libatlas3-base
修改camkelist【重点】
如果你也是armv7l处理器架构,那就需要修改
定位到faiss/faiss/python/CMakeLists.txt
替换代码块:
找到下面显示的代码块(它应该在第 21-25 行左右):
替换此(原始块):
if(NOT ${CMAKE_SYSTEM_NAME} MATCHES "Darwin" AND NOT WIN32)set_source_files_properties(${source} PROPERTIESSWIG_FLAGS -DSWIGWORDSIZE64)
endif()
替换为
if(NOT ${CMAKE_SYSTEM_NAME} MATCHES "Darwin" AND NOT WIN32)if(CMAKE_SIZEOF_VOID_P EQUAL 8)# 64-bit systemset_source_files_properties(${source} PROPERTIESSWIG_FLAGS -DSWIGWORDSIZE64)else()# 32-bit systemset_source_files_properties(${source} PROPERTIESSWIG_FLAGS -DSWIGWORDSIZE32)endif()
endif()
配置编译选项 (CMake):
Faiss 使用 CMake 来配置构建。需要指定一些选项,例如:
- Python 的路径和库。
- 是否启用 GPU (在 faiss-cpu 的情况下应禁用)。
- BLAS 库的类型和路径。
- 是否构建 Python 接口。
cmake -DFAISS_ENABLE_GPU=OFF \-DFAISS_ENABLE_PYTHON=ON \-DCMAKE_BUILD_TYPE=Release \-DBUILD_SHARED_LIBS=ON \-DCMAKE_SWIG_FLAGS="-DSWIGWORDSIZE32" \..
编译安装
make -j4sudo make installcd build/faiss/python
python3 setup.py install
pip3 install .
验证安装
python -c "import faiss; print('Faiss version:', faiss.__version__)"