doc表和query表的数据量均为2000W,数据类型为FLOAT,维度为512。对比在哈希分片方式下,INT8量化对整体性能的影响。
测试结论
INT8量化对整体性能提升在10%左右,具体数据如下:
由于2000W*2000W数据跑线性结果时间过长,因此此处使用100W数据,doc表得到的召回如下:
- | Build耗时(秒) | Seek耗时(秒) | 总时间(分钟) |
---|---|---|---|
CE hash | 17811 | 8298 | 435分钟 |
CE hash with int8 quantize | 19730 | 3699 | 390分钟 |
说明 Recall@1表示TopK为1时doc表的召回率,Recall@50、Recall@100、Recall@200以此类推。
Recall@1 | Recall@50 | Recall@100 | Recall@200 |
---|---|---|---|
0.987 | 0.990 | 0.990 | 0.991 |
测试过程
- Build比较。
- CE hash
- CE hash with INT8 quantize
结果分析:做INT8量化时,build阶段多30分钟左右。
- Seek比较。
- CE hash
- CE hash with INT8 quantize
结果分析:做INT8量化时,seek部分(主要是图中的 R2_1阶段)快出69分钟左右。具体为:CE hash 最快37分钟,最慢120分钟;CE hash INT8量化最快16分钟,最慢51分钟。
- 运行详情。
- CE hash
向量检索 数据类型:4 , 向量维度:512 , 检索方式:hnsw , 计算方法:SquaredEuclidean , 构建模式:train:build:seek doc表信息 表名: doc_table_pailitao2 , 分区:20210707 , doc数量:19990000 , 向量分隔符: query表信息 表名: doc_table_pailitao2 , 分区:20210707 , query数量:19990000 , 向量分隔符: 输出表信息 表名: output_table_pailitao_ce , 分区:20210707 行列信息 行数: 25 , 列数:2 , 每列索引doc数量:9995000 是否清除Volume索引:true 各个worker的耗时(单位:秒): SegmentationWorker: 1 TmpTableWorker: 1 KmeansGraphWorker: 0 BuildJobWorker: 17811 SeekJobWorker: 8298 TmpResultJoinWorker: 0 RecallWorker: 0 CleanUpWorker: 3 总耗时(单位:分钟):435 运行命令 jar -resources proxima_ce_g.jar -classpath /data/jiliang.ljl/project/proxima2-java/proxima-ce/target/binary/proxima-ce-0.1-SNAPSHOT-jar-with-dependencies.jar com.alibaba.proxima2.ce.ProximaCERunner -doc_table doc_table_pailitao2 -doc_table_partition 20210707 -query_table doc_table_pailitao2 -query_table_partition 20210707 -output_table output_table_pailitao_ce -output_table_partition 20210707 -data_type float -dimension 512 -app_id 201220 -vector_separator blank -pk_type int64 -row_num 25 -column_num 2;
- CE hash with INT8 quantize
向量检索 数据类型:4 , 向量维度:512 , 检索方式:hnsw , 计算方法:SquaredEuclidean , 构建模式:train:build:seek doc表信息 表名: doc_table_pailitao2 , 分区:20210707 , doc数量:19990000 , 向量分隔符: query表信息 表名: doc_table_pailitao2 , 分区:20210707 , query数量:19990000 , 向量分隔符: 输出表信息 表名: output_table_pailitao_ce , 分区:20210707 行列信息 行数: 25 , 列数:2 , 每列索引doc数量:9995000 是否清除Volume索引:true 各个worker的耗时(单位:秒): SegmentationWorker: 2 TmpTableWorker: 0 KmeansGraphWorker: 0 BuildJobWorker: 19730 SeekJobWorker: 3699 TmpResultJoinWorker: 0 RecallWorker: 0 CleanUpWorker: 1 总耗时(单位:分钟):390 运行命令 jar -resources proxima_ce_g.jar -classpath /data/jiliang.ljl/project/proxima2-java/proxima-ce/target/javacpp156/proxima-ce-0.1-SNAPSHOT-jar-with-dependencies.jar com.alibaba.proxima2.ce.ProximaCERunner -doc_table doc_table_pailitao2 -doc_table_partition 20210707 -query_table doc_table_pailitao2 -query_table_partition 20210707 -output_table output_table_pailitao_ce -output_table_partition 20210707 -data_type float -dimension 512 -app_id 201220 -vector_separator blank -pk_type int64 -row_num 25 -column_num 2 -converter Int8QuantizerConverter;
- CE hash