2000W FLOAT512 量化

更新时间:
复制为 MD 格式

doc表和query表的数据量均为2000W条,数据类型为FLOAT,维度为512。对比在哈希分片方式下,INT8量化对整体性能的影响。

测试结论

INT8量化对整体性能提升在10%左右,具体数据如下:

-

Build耗时(秒)

Seek耗时(秒)

总时间(分钟)

CE hash

17811

8298

435分钟

CE hash with int8 quantize

19730

3699

390分钟

由于2000W*2000W条数据跑线性结果时间过长,此处使用100W条数据进行测试,doc表得到的召回如下:

说明

Recall@1表示TopK1doc表的召回率,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

      在 Fuxi Jobs 监控界面中,作业 LOT_0_0_0_job0 包含两个 Fuxi Task:M1(0/63/63,Latency 00:01:54)和 R2_1(0/2/2,Latency 04:54:17),均为 Terminated 状态、进度 100%。展开 R2_1 的实例详情,Latency 统计为 min:04:07:37, avg:04:21:59, max:04:36:22。两个实例 R2_1#1_0R2_1#0_0 均已 Terminated,I/O Bytes 均为 8.8 GB/0 B,Latency 分别为 04:07:37.000 和 04:36:22.000。

    • CE hash with INT8 quantize

      MaxCompute Logview 显示作业 LOT_0_0_0_job0 的 Fuxi Task 执行详情。任务 M1 共 63 个实例,I/O Records 为 20.0 M/20.0 M,I/O Bytes 为 7.95 GB/17.59 GB,Latency 为 00:03:21。任务 R2_1 共 2 个实例,I/O Records 为 20.0 M/0,I/O Bytes 为 17.59 GB/0 B,Latency 为 05:24:54;实例延迟统计 min:05:19:36、avg:05:22:04、max:05:24:32,两个实例均已完成(Terminated,Progress 100%)。

    结果分析:做INT8量化时,build阶段多30分钟左右。

  • Seek比较。

    • CE hash

      Fuxi Jobs 作业监控界面显示 JobMaster Host 为 bd033019125250.ea118,作业 LOT_0_0_0_job0 包含三个子任务:M1(0/63/63,进度 100%,延迟 00:02:15.000)、R2_1(0/50/50 +1 backups,I/O Record 40.0 M/8.0 G,进度 98%,延迟 02:02:11.000)、R3_2(0/75/75 +5 backups,进度 93%,延迟 00:13:28.000),三个任务状态均为 Terminated。

    • CE hash with INT8 quantize

      作业 LOT_0_0_0_job0 包含三个子任务:M1(0/63/63实例,进度100%,状态Terminated,耗时00:01:55)、R2_1(0/50/50实例,进度100%,状态Terminated,耗时00:51:43,I/O Record40.0 M/8.0 G)、R3_2(0/75/75+3 backups实例,进度96%,状态Terminated,耗时00:07:16)。

    结果分析:做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;