Daft
Rust驱动的高性能多模态数据引擎,原生支持AI推理和跨模态联合分析
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
Rust驱动的高性能多模态数据引擎,原生支持AI推理和跨模态联合分析
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
想象一个场景:电商平台每天要处理数百万张商品图片、数千小时的客服录音、数百GB的用户行为日志,同时还要从这些数据中实时生成个性化推荐——传统的单一数据处理框架要么无法高效处理多模态数据,要么在分布式扩展时捉襟见肘。Daft 正是为解决这一痛点而生的下一代数据引擎。
长期以来,数据工程师需要在多个专用工具之间切换:Pandas 处理结构化表格、专用图像库处理图片、FFmpeg 处理音视频。这些工具之间数据格式不统一,跨模态联合分析几乎不可能实现。更糟糕的是,当数据量从 GB 级扩展到 TB 级时,基于 JVM 的传统框架(如 Spark)启动开销大、内存消耗惊人。
Eventual Inc. 敏锐地捕捉到了这个痛点,推出了 Daft——一个用 Rust 编写核心引擎、Python 作为前端界面的多模态数据处理框架。核心开发者 Sammy Sidhu 曾表示,团队的目标是「让数据科学家像使用 Pandas 一样简单,像使用 Spark 一样可扩展,同时原生支持 AI 工作流」。
原生多模态处理是 Daft 最大的亮点。在 Daft 中,图片、音频、视频、嵌入向量和结构化数据被一视同仁地视为一等公民,可以用统一的 API 对混合模态数据执行过滤、聚合、联合查询等操作。例如,一条数据行可以同时包含用户ID(字符串)、商品图片(字节数组)、评论音频(字节数组)和 embedding 向量(浮点数组),而对这些不同类型字段的操作语法完全一致。
内置 AI 推理能力使 Daft 超越了传统 ETL 的边界。用户可以直接在数据管道中调用 OpenAI GPT 模型生成文本、运行 Transformers 模型进行图片分类、或使用自定义模型做推理,所有操作都在分布式框架内自动并行化。这相当于把推理变成了数据转换的一个步骤,显著简化了 AI 应用的数据预处理-推理-后处理链路。
Python 原生 + Rust 底层的双层架构兼顾了易用性和性能。Python API 设计与 Pandas 高度兼容,数据工程师无需学习新语法即可迁移现有代码;Rust 编写的核心引擎则提供了接近 C/C++ 的执行效率,同时利用 Arrow 列式存储格式优化内存布局和序列化性能。
无缝弹性扩展通过 Ray 和 Kubernetes 两套分布式后端实现。开发者可以在单机 Jupyter Notebook 中完成原型开发和调试,然后通过修改一行配置将任务分发到 Ray 集群或 K8s 集群,代码本身无需任何改动。K8s 部署通过 Helm Chart 实现了标准化,一键拉起包含 Head Node 和 Worker Node 的完整分布式环境。
广泛的数据源连接覆盖了现代数据生态的主流存储系统:AWS S3、Google Cloud Storage、Apache Iceberg、Delta Lake、Apache Parquet/ORC/CSV/JSON,以及最近新增的 Hugging Face 数据集直接读取支持。
安装极为简单,一条命令即可:pip install daft,要求 Python 3.10+。官方 Quickstart 教程引导用户在几分钟内完成一个真实的电商数据集处理案例:加载商品图片 URL 列表、批量下载图片、执行图片预处理、利用 CLIP 模型生成图片 embedding,最终与结构化销售数据做联合分析。
对于分布式部署,Kubernetes 用户可以通过官方 Helm Chart 快速搭建环境,Chart 中预置了 Head Node、Worker Node、Job Script ConfigMap 的模板,通过 helm install 即可完成部署。对于 Ray 环境,则通过 pip install "daft[vllm]" 等可选依赖包启用相应功能。
需要注意的是,Daft 的分布式调度有一定学习成本,Ray 集群的运维和 Kubernetes 的资源配额配置都需要一定的背景知识,对于纯新手来说比单进程 Pandas 使用要复杂一些。
Daft 的核心引擎完全用 Rust 实现,核心数据结构基于 Apache Arrow 的列式内存格式,这意味着与 PyArrow、Polars、pandas 2.0+ 的互操作性极佳,数据在不同框架之间传递几乎零拷贝。
Rust 执行引擎通过 maturin 构建系统生成 Python 绑定(.so / .pyd),用户通过 import daft 即可调用原生 Rust 性能。源码编译需要安装 Rust toolchain(rust-toolchain.toml 已锁定版本),但大多数用户通过预编译 wheel 安装即可,无需接触 Rust 代码。
代码组织上,核心逻辑位于 src/ 目录,按功能拆分为 common-daft-config、common-display、common-file-formats 等多个 crate;Python API 层在 daft/ 目录;性能基准测试在 benchmarking/ 目录。
Daft 作为相对年轻的项目(2023 年后才获得显著关注),在生产环境的案例积累不如 Spark 或 Dask 丰富。其 Ray 集成虽然方便,但在超大规模集群(数千节点)上的稳定性尚待大规模生产验证。此外,由于 Rust 核心的存在,Windows 环境下的安装需要预编译 wheel,偶有兼容性问题。
Daft 的崛起反映了 AI 时代数据处理范式的一个根本转变:数据框架不再仅仅是 ETL 工具,而是 AI Pipeline 的核心基础设施。随着多模态模型成为主流,能够原生处理图片、音频、视频的数据框架将变得越来越重要。Daft 的 Arrow-native + Python 前端 + Rust 性能组合,代表了一种新兴的技术路线——兼顾开发者体验和工程性能,值得持续关注。