如何快速上手openEuler/sra_test?3分钟完成编译与首次测试的完整指南
如何快速上手openEuler/sra_test?3分钟完成编译与首次测试的完整指南
【免费下载链接】sra_testFor testing the Kunpeng SRA feature项目地址: https://gitcode.com/openeuler/sra_test
前往项目官网免费下载:https://ar.openeuler.org/ar/
想要快速测试鲲鹏SRA特性的召回算法性能?openEuler/sra_test项目为您提供了终极解决方案!这是一个专门用于测试鲲鹏SRA特性的统一测试框架,支持Faiss、hnswlib、KBest等多种常见召回算法。本文将为您提供简单快速的3分钟上手指南,让您轻松完成编译与首次测试。🚀
什么是openEuler/sra_test?
openEuler/sra_test是一个专为测试鲲鹏SRA特性设计的统一测试框架。它支持多种主流召回算法,包括Faiss(HNSW、IVFPQ、IVFPQFS、PQFS、IVFFLAT)、hnswlib和KBest。该框架不仅支持单查询并发测试,还支持批量测试模式,让您可以灵活调整算法参数和运行参数(如线程数、NUMA节点数等)。
快速开始:3分钟完成编译与测试
第一步:获取项目代码
首先克隆项目仓库到本地:
git clone https://gitcode.com/openeuler/sra_test.git cd sra_test第二步:编译可执行文件
项目提供了多种编译选项,您可以根据需要选择对应的算法进行编译:
# 编译Faiss算法 make hnsw_test # HNSW算法 make ivfpq_test # IVFPQ算法 make ivfflat_test # IVFFLAT算法 # 编译hnswlib算法 make hnswlib_test # 编译KBest算法 make kbest_test # 高级编译选项 make xxx_test_nopin # 不进行线程绑核 make xxx_test_split # query平均分配首次编译时,系统会提示您输入对应算法的动态库路径和头文件路径。这些信息会自动保存在build文件夹中,后续编译无需重复输入。
第三步:准备测试数据集
创建数据目录并下载测试数据集:
mkdir data cd data wget http://ann-benchmarks.com/glove-100-angular.hdf5 --no-check-certificate wget http://ann-benchmarks.com/sift-128-euclidean.hdf5 --no-check-certificate wget http://ann-benchmarks.com/deep-image-96-angular.hdf5 --no-check-certificate项目支持多种数据集,您可以根据需要选择下载。
第四步:配置测试参数
配置文件位于configs目录下,按算法和数据集分类。例如,HNSW算法的SIFT数据集配置文件在configs/hnsw/hnsw_sift-128-euclidean.config中:
# Faiss HNSW 配置 k_f = 16 efs = 120 efc = 500 metric = L2 nloop = 5 num_threads = 32 top_k = 10 batch_mode = false batch_size = 100 save_or_load = save index_path = indexes/hnsw/sift.faiss您可以根据测试需求调整这些参数。
第五步:运行首次测试
最简单的测试方式是使用提供的测试脚本:
# 测试HNSW算法 sh test.sh hnsw # 测试IVFPQ算法 sh test.sh ivfpq或者直接运行编译好的可执行文件:
./hnsw_test hnsw sift高级功能:多NUMA测试
对于支持多NUMA的系统,您可以使用多NUMA测试脚本:
# 测试HNSW算法在sift数据集上,使用NUMA节点0-1 sh test_muti-numas.sh hnsw sift 0-1NUMA输入支持连字符和逗号分隔,如0-1,3表示使用NUMA节点0、1和3。
项目结构详解
为了更好地理解项目,让我们看看主要目录结构:
- configs/: 包含所有算法的配置文件,按算法类型和数据集分类
- src/: 源代码目录,包含核心算法实现
- include/: 头文件目录,定义算法接口和数据结构
- scripts/: 构建脚本目录,包含scripts/build.sh等
- indexes/: 索引文件存储目录
常见问题解答
Q: 编译时提示找不到库文件怎么办?
A: 首次编译时会提示输入库路径,请确保已安装对应算法的开发库。例如,Faiss需要先安装libfaiss-dev或从源码编译。
Q: 如何测试不同的数据集?
A: 在configs目录中找到对应数据集的配置文件,修改参数后重新运行测试即可。
Q: 支持哪些算法变体?
A: 项目支持多种算法变体,包括FP16精度的HNSW(hnsw_fp16)、IVFPQFS等,具体可通过查看Makefile了解所有支持的目标。
性能优化建议
- 线程配置: 根据CPU核心数调整
num_threads参数 - 内存绑定: 使用NUMA绑定提升内存访问性能
- 批量模式: 对于大规模测试,启用
batch_mode可以提升吞吐量 - 索引复用: 设置
save_or_load = load可以复用已构建的索引,节省构建时间
结语
openEuler/sra_test为鲲鹏SRA特性的算法测试提供了完整、易用的解决方案。通过本文的3分钟指南,您已经掌握了从编译到首次测试的完整流程。无论是算法研究者还是系统优化工程师,都可以利用这个框架快速验证和比较不同召回算法的性能表现。
项目采用Apache 2.0许可证,支持代码修改和再开源。如果您在使用过程中遇到任何问题或有改进建议,欢迎参与项目贡献!🌟
记住,实践是最好的学习方式,现在就动手尝试一下吧!祝您测试顺利!🎯
【免费下载链接】sra_testFor testing the Kunpeng SRA feature项目地址: https://gitcode.com/openeuler/sra_test
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
