Centauri是Proxima CE的前身。本文为您介绍Centauri在不同场景下的性能。

1亿*1亿 BINARY512

doc表与query表数据量均为1亿,数据类型为BINARY,维度为512,指定50行,4列检索。

测试结论

CE哈希分片相较Centauri性能提升约20%左右。
-Kmeans耗时(秒)AutoTuning耗时(秒)Build耗时(秒)Seek耗时(秒)总时间(分钟)
Centauri-1524126535914336分钟
CE hash--96476431268分钟
说明 Kmeans是Proxima CE聚类分片特有的一个阶段,用于获取原始doc表的聚类中心点表。AutoTuning是Centauri特有的阶段,用于计算索引算法的参数。Build为索引构建阶段。Seek为检索阶段。

测试过程

  • Build比较。
    • Centauri Centauri
    • CE hashCE hash

    结果分析:Centauri一个build节点特别快,剩余三个耗时差不多。CE hash两个相对快,两个相对慢。

  • Seek比较。
    • CentauriCentauri
    • CE hashCE hash
    结果分析:
    • 索引seek部分耗时接近。
    • 结果merge部分:CE hash比Centauri多12分钟左右。
      • CE hash最快8分钟,最慢20分钟。
      • Centauri最快4分钟,最慢9分钟。
  • 运行详情。
    • Centauri
      向量检索  数据类型:binary , 向量维度:512 , 检索方式:graph , 计算方法:hamming , 构建模式build:seek
      doc表信息 表名: doc_table_pailitao_binary , 分区:20210712 , doc数量:100000000 , 向量分隔符:~
      query表信息 表名: doc_table_pailitao_binary , 分区:20210712 , query数量:100000000 , 向量分隔符:~
      输出表信息 表名: output_table_pailitao_binary_centauri , 分区:20210712
      行列信息  行数: 50 , 列数:4 , 每列索引doc数量:25000000
      是否清楚Volume索引:false
      是否进行Autotuning Normal训练参数和召回率:true
      
      各个worker的耗时(单位:秒):
      worker:TmpDataTableJoinWorker , times:0
      worker:TmpTableWorker , times:16
      worker:CleanUpWorker , times:4
      worker:AutotuningFastWorker , times:46
      worker:RowColWorker , times:53
      worker:SeekJobWorker , times:5914
      worker:BuildJobWorker , times:12653
      worker:AutotuningNormalWorker , times:1478
      总耗时(单位:分钟):336
      
      Top召回率 用户设置 train:
      top200:0.95
      
      Top召回率 normal train:
      top200:98.061%
      
      Autotuning Fast Build Params:
      proxima.general.builder.memory_quota=0
      proxima.graph.common.max_doc_cnt=27500000
      proxima.general.builder.thread_count=15
      proxima.hnsw.builder.efconstruction=400
      proxima.graph.common.neighbor_cnt=100
      
      Autotuning Normal Search Params:
      proxima.hnsw.searcher.ef=400
      
      运行命令
      jar -resources  centauri-1.1.5.jar,libcentauri-1.1.5.so   -classpath /data/jiliang.ljl/centauri_1.1.5/centauri-1.1.5.jar
      com.alibaba.proxima.CentauriRunner
      -proxima_version 1.1.5
      -doc_table doc_table_pailitao_binary -doc_table_partition 20210712
      -query_table doc_table_pailitao_binary -query_table_partition 20210712
      -output_table output_table_pailitao_binary_centauri -output_table_partition 20210712
      -data_type binary -dimension 512 -app_id 201220 -pk_type int64 -clean_build_volume false -distance_method hamming -binary_to_int true -row_num 50 -column_num 4;
    • CE hash
      向量检索  数据类型:1 , 向量维度:512 , 检索方式:hnsw , 计算方法:Hamming , 构建模式build:seek
      doc表信息 表名: doc_table_pailitao_binary2 , 分区:20210712 , doc数量:100000000 , 向量分隔符:~
      query表信息 表名: doc_table_pailitao_binary2 , 分区:20210712 , query数量:100000000 , 向量分隔符:~
      输出表信息 表名: output_table_pailitao_binary_ce , 分区:20210712
      行列信息  行数: 50 , 列数:4 , 每列索引doc数量:25000000
      是否清除Volume索引:false
      
      各个worker的耗时(单位:秒):
      SegmentationWorker:          2
      TmpTableWorker:              1
      KmeansGraphWorker:           0
      BuildJobWorker:              9647
      SeekJobWorker:               6431
      TmpResultJoinWorker:         0
      RecallWorker:                0
      CleanUpWorker:               3
      总耗时(单位:分钟):268
      
      运行命令
      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_pailitao_binary2 -doc_table_partition 20210712
      -query_table doc_table_pailitao_binary2 -query_table_partition 20210712
      -output_table output_table_pailitao_binary_ce -output_table_partition 20210712
      -data_type binary -dimension 512 -app_id 201220 -pk_type int64 -clean_build_volume false -distance_method Hamming -binary_to_int true -row_num 50 -column_num 4;

10亿*10亿 FLOAT128

doc表与query表的数据量均为10亿,数据类型为FLOAT,维度为128,手动指定50行,60列。

测试结论

CE哈希方式相较Centauri提升30%左右,聚类分片方式相较Centauri提升2倍左右,seek部分提升7.5倍左右,INT8量化相较原始数据性能提升约10%。
测试方法聚类/AutoTunning耗时(秒)Build耗时(秒)Seek耗时(秒)
Centauri1220982237245
CE 哈希984123462
CE 哈希 + INT8量化760021624
CE 聚类1247144045028

测试过程

  • build详情。
    测试方法MapperBuild Reducer总耗时(秒)
    Centauri---
    CE 哈希00:01:23.116

    Latency:{min:00:00:03, avg:00:00:23, max:00:01:00}

    02:41:43.563

    Latency:{min:00:02:40, avg:01:32:33, max:02:41:33}

    9841
    CE 哈希 + INT8量化00:01:36.166

    Latency:{min:00:00:09, avg:00:00:25, max:00:01:09}

    02:04:11.440

    Latency:{min:00:06:56, avg:01:06:06, max:02:03:53}

    7600
    CE 聚类00:15:33.022

    Latency:{min:00:00:03, avg:00:03:24, max:00:15:21}

    03:43:37.529

    Latency:{min:00:03:57, avg:01:33:32, max:03:43:35}

    14404
  • seek详情。
    测试方法MapperTopn ReducerMerge Reducer总耗时(秒)问题/备注
    Centauri00:15:45.000

    34秒-11分钟之间

    08:33:50.000

    98-489分钟之间

    01:30:20.000

    30-70分钟之间

    37245
    • reducer打完日志后30-40分钟后结束。
    • mapper/topn/merge的单节点运行时间是另外一次logview的。
    CE 哈希00:06:29.791

    Latency:{min:00:00:02, avg:00:01:39, max:00:05:56}

    04:50:42.422

    Latency:{min:00:01:48, avg:01:54:33, max:03:47:54}

    04:50:42.422

    Latency:{min:00:00:35, avg:00:33:39, max:01:32:16}

    23462
    • mapper和merge reducer总耗时和max差不多,接近理想,只受长尾影响。
    • topn reducer最后结束的两个节点因为FO启动比较晚,忽略这两个节点的话总时间还能减少一小时。
    CE 哈希 + INT8量化00:06:25.718

    Latency:{min:00:00:17, avg:00:01:27, max:00:06:02}

    03:58:00.566

    Latency:{min:00:00:25, avg:01:06:41, max:02:40:07}

    01:54:35.620

    Latency:{min:00:01:56, avg:00:20:54, max:01:39:55}

    21624
    CE 聚类00:23:51.623

    Latency:{min:00:00:04, avg:00:03:01, max:00:08:34}

    01:00:38.382

    Latency:{min:00:05:15, avg:00:18:00, max:01:00:10}

    00:12:39.341

    Latency:{min:00:00:31, avg:00:07:08, max:00:12:33}

    5028

16亿*16亿 FLOAT128 聚类分片

doc表与query表的数据量均为16亿,数据类型为FLOAT,维度为128,自动计算行列。

16亿*16亿数据集规模过大,只有CE的聚类分片方式可以成功运行,以下为基本运行数据信息。
测试方法聚类/AutoTunning耗时(秒)Build耗时(秒)Seek耗时(秒)
Centauri112719962跑了两次均失败,OOM。
CE 哈希14637跑了一次均失败,超出临时表限制。
CE 聚类5478179116801