从源码构建 cuVS Bench#

依赖项#

运行基准测试需要 CUDA 11 和 Volta 架构或更高版本的 GPU。

请参阅安装文档,了解构建 cuVS 的基本要求。

除了构建 cuVS 的基本要求外,构建 ANN 基准测试所需的额外依赖项包括: 1. FAISS GPU >= 1.7.1 2. Google Logging (GLog) 3. H5Py 4. HNSWLib 5. nlohmann_json 6. GGNN

使用 rapids-cmake 构建 ANN 基准测试,因此 CUDA 工具包中未提供的依赖项代码将自动下载和构建。

安装构建 ANN 基准测试所需依赖项最简单(且最可重现)的方法是使用位于 cuVS 仓库 conda/environments 目录中的 conda 环境文件。以下命令将使用 mamba(优先于 conda)构建并激活一个新的环境来编译基准测试

conda env create --name cuvs_benchmarks -f conda/environments/cuvs_bench_cuda-118_arch-x86_64.yaml
conda activate cuvs_benchmarks

上述 conda 环境也将减少编译时间,因为像 FAISS 这样的依赖项将已被安装,无需通过 rapids-cmake 编译。

编译基准测试#

满足所需依赖项后,编译 ANN 基准测试最简单的方法是使用 RAFT 源代码仓库根目录下的 build.sh 脚本。以下命令将构建所有支持算法的可执行文件

./build.sh bench-ann

您可以通过提供以分号分隔的可执行文件名列表来限制构建的算法(每个算法都带有 _ANN_BENCH 后缀)

./build.sh bench-ann -n --limit-bench-ann=HNSWLIB_ANN_BENCH;CUVS_IVF_PQ_ANN_BENCH

可与 --limit-bench-ann 一起使用的可用目标包括: - FAISS_GPU_IVF_FLAT_ANN_BENCH - FAISS_GPU_IVF_PQ_ANN_BENCH - FAISS_CPU_IVF_FLAT_ANN_BENCH - FAISS_CPU_IVF_PQ_ANN_BENCH - FAISS_GPU_FLAT_ANN_BENCH - FAISS_CPU_FLAT_ANN_BENCH - GGNN_ANN_BENCH - HNSWLIB_ANN_BENCH - CUVS_CAGRA_ANN_BENCH - CUVS_IVF_PQ_ANN_BENCH - CUVS_IVF_FLAT_ANN_BENCH

默认情况下,*_ANN_BENCH 可执行程序通过文件名扩展名推断数据集的数据类型。例如,扩展名为 fbin 使用 float 数据类型,f16bin 使用 float16 数据类型,扩展名为 i8bin 使用 int8_t 数据类型,u8bin 使用 uint8_t 类型。目前仅支持 floatfloat16、int8_t` 和 uint8_t 类型。