性能测试报告

更新时间:
复制为 MD 格式

本文整理了Daft在两类典型工作负载上的性能表现:AI benchmark(面向音频、文档、图像、视频等多模态数据处理)和TPC-H benchmark(面向传统分析型批处理和大规模SQL风格查询)。对比引擎包括Ray Data、Spark、DaskModin。

说明

本文的TPC-H的实现基于TPC-H的基准测试,并不能与已发布的TPC-H基准测试结果相比较,本文中的测试并不完全符合TPC-H的所有要求。

测试环境

AI benchmark环境

  • 测试对象:Daft、Ray Data、Spark

  • 软件版本:Daft 0.6.2、Ray Data 2.49.2、Spark(EMR Spark 7.10.0)

  • 计算规格:8worker节点,每节点1GPU(24 GB显存)、4 vCPU、16 GB内存、100 GB本地盘

  • 数据集

    • Audio Transcription:113,800个音频文件

    • Document Embedding:10,000PDF文档

    • Image Classification:803,580张图片

    • Video Object Detection:1,000个视频

TPC-H benchmark环境

  • 测试对象:Daft、Spark、Dask、Modin

  • 查询范围:TPC-H Q1Q10

  • 数据组织:分区Parquet文件,从对象存储直接读取,不使用节点级缓存

  • 主对比规格:4worker节点,每节点8 vCPU、61 GB内存、1.9 TB本地NVMe SSD,集群总内存约244 GB

  • Scale Factor:100(约100 GB)和1000(1 TB以上)

  • 节点扩展测试:保持单节点规格不变,比较1/4/8节点下的表现

性能数据

AI benchmark性能数据

AI benchmark对应的不是传统ETL,而是典型的多模态AI数据流水线:下载或读取大对象、CPU侧解码与解析、GPU侧推理、再把结果写回列式数据。

Workload

业务含义

数据规模

Daft

Ray Data

Spark

Audio Transcription

大规模语音转写

113,800音频

622

2920

2546

Document Embedding

PDF解析与向量化

10,000PDF

154

1432

84

Image Classification

图片理解与标注

803,580图片

423

2330

457

Video Object Detection

视频逐帧检测与目标提取

1,000视频

1146

2554

3小时36

从官方公开结果看,Daft4workload中都是最快的:

  • Daft在全部4workload中均为最快。

  • 相比Ray Data,Daft2.27.6

  • 相比Spark,Daft4.018.4

结果分析

  • Audio Transcription:这类workload对应大规模语音数据清洗、ASR预处理和语音内容索引。公开结果显示,Daft在音频转写链路上相对Ray Data提升4.6倍,相对Spark提升4.0倍,适合需要压缩批处理窗口的场景。

  • Document Embedding:这类workload对应知识库构建、RAG入库和文档向量化。Daft154秒完成10,000PDF的处理,是4.2倍到7.6倍的速度优势,适合对文档入库吞吐敏感的项目。

  • Image Classification:这类workload对应图像打标、样本筛选和视觉数据治理。Daft80余万图片分类任务上约4分钟完成,而Spark超过45分钟,说明在“下载+解码+预处理+GPU推理”连续流水线里,Daft的公开表现更适合高吞吐场景。

  • Video Object Detection:这类workload对应视频理解、事件抽取和训练样本生产。Daft1146秒完成,而Spark需要3小时36分,说明视频这种最容易出现CPU/GPU/I/O多重瓶颈的场景,更能放大引擎设计差异。

测试补充说明

  • Daft在这4workload中都完成了运行,且没有出现任务失败。

  • Ray DataBatch size更敏感,部分workload需要把Batch size调小才能降低失败概率。

  • Spark在这些多模态workload中更依赖全局参数调优,否则更容易出现OOM风险。

TPC-H性能数据

TPC-H是传统分析引擎常用的公开基准,用来观察连接、聚合、排序等分析型负载的执行效率。Daft除了多模态AI处理之外,面对TB级表数据时,也具备稳定的分析型处理能力。

100 Scale Factor

以下结果对应约100 GB数据,使用4worker节点。

引擎

完成题数

总耗时

相对Daft

Daft

10/10

785

1.0

Spark

10/10

2,648

3.3

Dask

10/10

6,010

7.7

Modin

5/10

未完成

44.4倍*

在约百GB规模的分析型批处理上,Daft官方公开结果相对Spark3.3倍的时间优势,同时也能完整跑完Q1-Q10。

1000 Scale Factor

以下结果对应1 TB以上数据,仍使用4worker节点。此时数据规模已经显著大于集群内存,依赖out-of-core执行能力。

引擎

完成题数

总耗时

相对Daft

Daft

10/10

7,774

1.0

Spark

10/10

27,161

3.5

Dask

3/10

未完成

5.8倍*

Modin

0/10

未完成

无可比数据

说明

*:官方说明该倍数仅按已完成查询计算。

1 TB规模下的关键结论:

  • 1 TB以上数据规模下,只有DaftSpark完整跑完了全部10个查询。

  • Daft在完整跑完的前提下,公开结果仍比Spark3.5倍。

  • DaskModin在默认公开配置下没有表现出同等级别的稳定完成率。

节点扩展结论

官方benchmark1000 Scale Factor上的节点扩展测试给出了以下两条结论:

  1. Daft可以在单节点61 GB内存的条件下处理1 TB以上的分析型数据,也就是数据规模约为内存的16倍。

  2. 在保持单节点规格不变时,随着节点数增加,查询时间近似线性缩短。例如4节点相对单节点可接近4倍加速。

这部分说明Daft的公开benchmark不只覆盖“分布式加速”,也覆盖“单机out-of-core能否顶住超内存数据集”。