本文整理了Daft在两类典型工作负载上的性能表现:AI benchmark(面向音频、文档、图像、视频等多模态数据处理)和TPC-H benchmark(面向传统分析型批处理和大规模SQL风格查询)。对比引擎包括Ray Data、Spark、Dask和Modin。
本文的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)
-
计算规格:8个worker节点,每节点1张GPU(24 GB显存)、4 vCPU、16 GB内存、100 GB本地盘
-
数据集:
-
Audio Transcription:113,800个音频文件
-
Document Embedding:10,000个PDF文档
-
Image Classification:803,580张图片
-
Video Object Detection:1,000个视频
-
TPC-H benchmark环境
-
测试对象:Daft、Spark、Dask、Modin
-
查询范围:TPC-H Q1到Q10
-
数据组织:分区Parquet文件,从对象存储直接读取,不使用节点级缓存
-
主对比规格:4个worker节点,每节点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音频 |
6分22秒 |
29分20秒 |
25分46秒 |
|
Document Embedding |
PDF解析与向量化 |
10,000PDF |
1分54秒 |
14分32秒 |
8分4秒 |
|
Image Classification |
图片理解与标注 |
803,580图片 |
4分23秒 |
23分30秒 |
45分7秒 |
|
Video Object Detection |
视频逐帧检测与目标提取 |
1,000视频 |
11分46秒 |
25分54秒 |
3小时36分 |
从官方公开结果看,Daft在4个workload中都是最快的:
-
Daft在全部4个workload中均为最快。
-
相比Ray Data,Daft快2.2到7.6倍。
-
相比Spark,Daft快4.0到18.4倍。
结果分析
-
Audio Transcription:这类workload对应大规模语音数据清洗、ASR预处理和语音内容索引。公开结果显示,Daft在音频转写链路上相对Ray Data提升4.6倍,相对Spark提升4.0倍,适合需要压缩批处理窗口的场景。
-
Document Embedding:这类workload对应知识库构建、RAG入库和文档向量化。Daft1分54秒完成10,000个PDF的处理,是4.2倍到7.6倍的速度优势,适合对文档入库吞吐敏感的项目。
-
Image Classification:这类workload对应图像打标、样本筛选和视觉数据治理。Daft在80余万图片分类任务上约4分钟完成,而Spark超过45分钟,说明在“下载+解码+预处理+GPU推理”连续流水线里,Daft的公开表现更适合高吞吐场景。
-
Video Object Detection:这类workload对应视频理解、事件抽取和训练样本生产。Daft11分46秒完成,而Spark需要3小时36分,说明视频这种最容易出现CPU/GPU/I/O多重瓶颈的场景,更能放大引擎设计差异。
测试补充说明
-
Daft在这4个workload中都完成了运行,且没有出现任务失败。
-
Ray Data对Batch size更敏感,部分workload需要把Batch size调小才能降低失败概率。
-
Spark在这些多模态workload中更依赖全局参数调优,否则更容易出现OOM风险。
TPC-H性能数据
TPC-H是传统分析引擎常用的公开基准,用来观察连接、聚合、排序等分析型负载的执行效率。Daft除了多模态AI处理之外,面对TB级表数据时,也具备稳定的分析型处理能力。
100 Scale Factor
以下结果对应约100 GB数据,使用4个worker节点。
|
引擎 |
完成题数 |
总耗时 |
相对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官方公开结果相对Spark有3.3倍的时间优势,同时也能完整跑完Q1-Q10。
1000 Scale Factor
以下结果对应1 TB以上数据,仍使用4个worker节点。此时数据规模已经显著大于集群内存,依赖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以上数据规模下,只有Daft和Spark完整跑完了全部10个查询。
-
Daft在完整跑完的前提下,公开结果仍比Spark快3.5倍。
-
Dask和Modin在默认公开配置下没有表现出同等级别的稳定完成率。
节点扩展结论
官方benchmark在1000 Scale Factor上的节点扩展测试给出了以下两条结论:
-
Daft可以在单节点61 GB内存的条件下处理1 TB以上的分析型数据,也就是数据规模约为内存的16倍。
-
在保持单节点规格不变时,随着节点数增加,查询时间近似线性缩短。例如4节点相对单节点可接近4倍加速。
这部分说明Daft的公开benchmark不只覆盖“分布式加速”,也覆盖“单机out-of-core能否顶住超内存数据集”。