Skip to content

Latest commit

 

History

History
220 lines (139 loc) · 6.77 KB

performance_benchmark.md

File metadata and controls

220 lines (139 loc) · 6.77 KB

性能指标

本文档是基于 Milvus 0.11.0 的性能测试结果。

环境

CPU: Intel(R) Core(TM) i7-8700 CPU @ 3.20GHz (12 Cores)

GPU: GeForce GTX 1060 6GB 、 GeForce GTX 1660 6GB

数据

本次测试所使用的数据集为 SIFT1B ,共有十亿条128维的向量。关于该数据集的详细信息请参考:http://corpus-texmex.irisa.fr/。

说明

本文中用到的一些符号及专用名词说明如下:

专用名词 解释
nq 查询的目标向量条目数,在搜索时定义。
topk 与查询的目标向量最相似的 topk 个结果。
time 批量查询时的总查询时间
nprobe 查询时需要搜索的分桶数目,在搜索时定义。

(注:测试性能与nprobe值相关,性能随着nprobe增大而降低,但是精确率会随之增加。用户可根据具体场景要求设置nprobe. )

各类型索引如何选择可参考:https://milvus.io/cn/blogs/2019-12-03-select-index.md

测试参数设置:nlist=4096, sift1m 、segment_row_limit =1000000

sift10m、sift100m、segment_row_limit=2000000

测试结果

sift1m测试结果: 该测试中,选取了sift1B数据集中的前1,000,000条向量。

sift10m测试结果: 该测试中,选取了sift1B数据集中的前10,000,000条向量。

sift100m测试结果: 该测试中,选取了sift1B数据集中的前100,000,000条向量。

本次测试过程中,数据每10万为一个批次导入milvus中,10万条128维的向量导入约耗时:2S。

sift1m

索引:ivf_sq8

(索引建立耗时:8s)

(nprobe:256)

准确率:

本处从待查询向量集中随机取出了500条向量查询,召回率取这500条结果的平均值,一共测试三次,每次取出的500条向量不完全相同。

accuracy 第一次 第二次 第三次
topk=1 98.2% 98.0% 98.8%
topk=10 98.9% 97.8% 97.5%
topk=100 98.2% 97.8% 97.7%
topk=500 98.4% 96.9% 98.4%

性能:

Time(s) Topk =1 Topk=10 Topk=100 Topk =500
nq =1 0.0086 0.0063 0.0065 0.0082
nq =10 0.0159 0.0138 0.0153 0.0187
nq =100 0.0285 0.0318 0.0336 0.0422
nq =500 0.0976 0.0988 0.1154 0.1590

(cpu查询)

索引ivf_sq8h

(索引建立耗时:7.8s)

(nprobe:256)

准确率:

本处从待查询向量集中随机取出了500条向量查询,召回率取这500条结果的平均值,一共测试三次,每次取出的500条向量不完全相同。

accuracy 第一次 第二次 第三次
Topk =1 99.4% 98.8% 99.0%
Topk =10 98.7% 98.7% 98.4%
Topk =10 98.7% 98.7% 98.4%
Topk =500 98.0% 98.1% 98.0%

性能:

time(S) topk=1 topk=10 topk=100 topk=500
nq=1 0.0163 0.0062 0.0065 0.0076
nq=10 0.0141 0.0142 0.0152 0.0168
nq=100 0.0332 0.0334 0.0369 0.0495
nq=500 0.1093 0.1054 0.1235 0.1713

sift10m

索引:ivf_sq8

(索引建立耗时:64s)

(nprobe:128)

准确率:

本处从待查询向量集中随机取出了500条向量查询,召回率取这500条结果的平均值,一共测试三次,每次取出的500条向量不完全相同。

accuracy 第一次 第二次 第三次
topk=1 98.0% 98.4% 98.6%
topk=10 98.2% 97.7% 98.2%
topk=100 98.3% 98.0% 98.1%
topk=500 97.8% 97.5% 97.4%

性能:

(cpu查询)

time(S) topk=1 topk=10 topk=100 topk=500
nq=1 0.0189 0.0176 0.0183 0.0253
nq=10 0.0594 0.0570 0.0598 0.0638
nq=100 0.0982 0.1011 0.1056 0.1234
nq=500 0.3526 0.3371 0.3712 0.4370
索引:ivf_sq8h

(nprobe:128)

准确率:

本处从待查询向量集中随机取出了500条向量查询,召回率取这500条结果的平均值,一共测试三次,每次取出的500条向量不完全相同。

accuracy 第一次 第二次 第三次
topk=1 97.0% 98.6% 97.6%
topk=10 98.1% 98.0% 97.7%
topk=100 98.1% 98.2% 98.0%
topk=500 97.6% 97.7% 97.6%

性能:

time(S) topk=1 topk=10 topk=100 topk=500
nq=1 0.0180 0.0187 0.0189 0.0369
nq=10 0.0584 0.0684 0.0603 0.0692
nq=100 0.0971 0.1038 0.1033 0.1203
nq=500 0.3494 0.3496 0.0382 0.4585
nq=1000 0.7034 0.6702 0.7381 0.8805

sift100m

索引:ivf_sq8

(索引建立耗时:300s)

(nprobe:64)

准确率:

本处从待查询向量集中随机取出了500条向量查询,召回率取这500条结果的平均值,一共测试三次,每次取出的500条向量不完全相同。

accuracy 第一次 第二次 第三次
topk=1 97.2% 97.2% 97.6%
topk=10 97.3% 97.5% 97.4%
topk=100 97.2% 97.5% 97.5%
topk=500 96.6% 96.8% 96.9%

性能:

(cpu查询)

time(S) topk=1 topk=10 topk=100 topk=500
nq=1 0.1293 0.1388 0.148 0.2495
nq=10 0.3315 0.3185 0.3366 0.3716
nq=100 0.5495 0.5313 0.5587 0.6257
nq=500 1.7314 1.8109 2.119 2.1481
nq=1000 3.3412 3.3696 3.5066 4.1944
索引ivf_sq8h

(nprobe:64)

准确率:

本处从待查询向量集中随机取出了500条向量查询,召回率取这500条结果的平均值,一共测试三次,每次取出的500条向量不完全相同。

accuracy 第一次 第二次 第三次
topk=1 98.2% 96.0% 98.2%
topk=10 97.4% 97.2% 97.3%
topk=100 97.7% 97.3% 97.5%
topk=500 97.1% 96.7% 97.0%

性能:

time(S) topk=1 topk=10 topk=100 topk=500
nq=1 0.1499 0.1477 0.1415 0.2358
nq=10 0.3340 0.3572 0.3330 0.4376
nq=100 0.5142 0.5120 0.6066 0.6223
nq=500 1.6685 1.6852 1.7850 2.0676
nq=1000 3.2482 3.2930 3.2112 3.8729