Daft 安装完全指南:从 pip 一键安装到可选依赖、Nightly 与旧 CPU 兼容方案
【免费下载链接】DaftHigh-performance data engine for AI and multimodal workloads. Process images, audio, video, and structured data at any scale项目地址: https://gitcode.com/GitHub_Trending/da/Daft
Daft 是一个面向 AI 与多模态工作负载的高性能数据引擎,能够处理图像、音频、视频与结构化数据。本文以仓库 docs/install.md 为核心,系统讲解 Daft 在不同场景下的安装方式:包括一条命令的标准安装、按需裁剪的可选依赖(extras)、包含全部功能的daft[all]安装、每日发布的 Nightly 构建,以及针对不支持 AVX 指令集旧 CPU 的 LTS 兼容版本,并辅以 pyproject.toml 与 Makefile 中的源码级细节,帮助你在任何环境下正确、高效地装好 Daft。
快速安装:一条命令开始使用 Daft
对于绝大多数用户,安装 Daft 只需要一条命令:
pip install -U daft该命令会从 PyPI 拉取 Daft 的预编译 wheel 包并升级到最新稳定版。-U(即--upgrade)参数确保你安装的是当前最新的发布版本。
安装完成后,可以通过 Python 验证安装是否成功:
import daft print(daft.__version__)从源码看,daft/__init__.py在导入时会从 Rust 扩展模块读取构建信息:get_version()返回编译进二进制中的版本号,get_build_type()返回构建类型(例如 release / debug),你可以用它们确认当前安装的版本与构建形态(参见 daft/init.py)。
运行环境要求
- Python 版本:Daft 要求Python 3.10 或更高版本,这一约束定义在 pyproject.toml 的
requires-python = ">=3.10"字段中。 - 核心依赖:标准安装会自动带上少量运行时必需依赖(见 pyproject.toml):
pyarrow >= 16.0.0,<26.0.0:Daft 基于 Apache Arrow 内存格式构建,这是数据交换与向量化计算的基础;tqdm < 4.68.0:用于进度条展示;typing-extensions(Python < 3.12 时):类型系统兼容层;packaging:包版本解析工具。
- 构建方式:Daft 的核心引擎由 Rust 编写,Python 绑定通过
maturin构建(pyproject.toml)。普通用户直接安装预编译 wheel 即可,无需本地 Rust 工具链。
按需安装可选依赖(Extras)
Daft 将大量功能封装为可选的“extra”依赖,目的是让核心安装保持轻量。官方文档提供了一个交互式安装工具(其前端逻辑位于 docs/js/install-tool.js:勾选功能后自动拼接生成对应的pip install命令,全部勾选时简化为daft[all])。下表完整列出当前文档支持的全部 22 个 extra,以及它们在 pyproject.toml 中对应的实际依赖包:
| Extra 名称 | 用途 | 实际引入的依赖(摘自 pyproject.toml) |
|---|---|---|
huggingface | Hugging Face 数据集与 Hub 读取 | huggingface-hub、datasets、fsspec |
openai | OpenAI API 的 AI 函数(LLM、embedding) | openai、numpy、pillow |
transformers | 本地 Hugging Face Transformers 模型推理 | transformers、sentence-transformers、torch、torchvision、pillow |
ray | 基于 Ray 的分布式计算 | ray[data, client]>=2.11.0,<2.59.0(Flotilla 依赖 Ray 2.11 新增的ActorUnavailableError) |
turbopuffer | Turbopuffer 向量数据库连接 | turbopuffer |
aws | AWS Glue 目录与 S3 Tables | boto3、mypy-boto3-glue |
iceberg | Apache Iceberg 表格式读写 | pyiceberg >= 0.7.0, != 0.9.1, != 0.10.0, <= 0.11.1 |
deltalake | Delta Lake 表格式 | deltalake >= 1.6.0,<1.7.0 |
unity | Unity Catalog(Databricks) | httpx、unitycatalog、deltalake |
lance | LanceDB / Lance 向量存储 | daft-lance>=0.5.0,<0.6.0 |
clickhouse | ClickHouse 数据库连接 | clickhouse_connect |
azure | Azure Blob Storage | fsspec、adlfs |
google | Google Gemini API 的 AI 函数 | google-genai、numpy、pillow |
kafka | Apache Kafka 流式数据源 | confluent-kafka |
gravitino | Apache Gravitino 目录 | requests |
postgres | PostgreSQL 数据库连接 | psycopg[binary]、pgvector、sqlglot、connectorx |
sql | SQL 数据库(通用) | connectorx、sqlalchemy、sqlglot |
pandas | pandas 互操作 | pandas |
numpy | NumPy 互操作 | numpy |
audio | 音频数据读取(WAV/MP3/FLAC) | soundfile、librosa |
video | 视频数据读取(MP4 等) | av、pillow |
hdf5 | HDF5 文件读取 | h5py、numpy |
http | HTTP / HTTPS 文件源 | fsspec[http] |
mcap | MCAP(机器人日志容器格式)读取 | 无(读取器为原生实现,该 extra 为兼容性保留的空操作,见 pyproject.toml 注释) |
常见组合示例
按使用场景组合安装,例如:
# 使用 Hugging Face 数据集 + OpenAI 做 LLM 推理 pip install -U "daft[huggingface,openai]" # 使用本地 Transformers 模型(GPU 推理) pip install -U "daft[transformers]" # 搭建 Ray 分布式集群 pip install -U "daft[ray]" # 读写 Iceberg + AWS S3 pip install -U "daft[iceberg,aws]" # 处理音频与视频数据 pip install -U "daft[audio,video]"一次性安装全部功能
如果不关心安装体积,希望把所有可选能力一次装齐:
pip install -U "daft[all]"all这个 extra 在 pyproject.toml 中被定义为其余所有 extra 的并集(audio、aws、azure、clickhouse、deltalake、google、gravitino、hdf5、http、huggingface、iceberg、kafka、lance、mcap、numpy、openai、pandas、postgres、ray、sql、transformers、turbopuffer、unity、video),因此它会连同torch、ray等重型依赖一起安装。
为什么可选依赖可以按需加载?
Daft 对可选依赖采用**懒加载(Lazy Import)**机制:核心模块在导入时并不会强制 import 这些库,只有真正用到对应功能时才动态引入。这一点在 daft/dependencies.py 中体现得非常清晰——av、confluent_kafka、librosa、torch、tensorflow等都被包装为LazyImport对象,而不是在import daft时立即加载。这意味着:
- 只做结构化数据分析时,不装任何 extra 也能正常使用;
- 缺少某个可选库时,只会在调用对应功能时报错,不会影响其余功能;
- 安装体积和启动时间得到有效控制。
使用 Nightly 构建尝鲜最新特性
Daft 每天都会从最新的main分支构建并发布 Nightly 版本,适合希望提前体验新功能与 Bug 修复的开发者:
pip install daft --pre --extra-index-url https://nightly.daft.ai--pre:允许 pip 安装预发布版本;--extra-index-url https://nightly.daft.ai:指定 Nightly 包的额外索引源。
⚠️稳定性警告Nightly 构建可能包含不稳定或实验性的改动,不建议用于生产环境。
仓库的 Rust 工具链本身也跟随 nightly 通道(rust-toolchain.toml 固定为nightly-2025-09-03),因此从源码构建 Daft 同样属于“尝鲜”性质的开发流程,适合贡献者而非生产使用者。
旧 CPU 兼容问题:使用 LTS 版本(daft-lts)
如果在运行 Daft 时遇到Illegal instruction(非法指令)错误,通常意味着你的 CPU 不支持某些较新的指令集——例如 AVX(Advanced Vector Extensions)。默认发布版本针对现代 CPU 开启了向量化指令优化,旧 CPU 无法执行这些指令便会直接崩溃。
此时应改用 LTS(长期支持)版本:
pip install -U daft-ltsLTS 版本的代价
⚠️性能影响LTS 版本会限制可用的 CPU 指令集,无法利用向量化运算,因此性能明显更慢。仅在标准包无法运行时才应使用 LTS 版本。
从引擎源码可以印证向量化对性能的重要性:Daft 的数值计算大量依赖 SIMD 指令,例如daft-core的算术运算在src/daft-core/src/array/ops/arithmetic.rs中针对不同指令集做了优化,daft-decoding使用atoi_simd、simdutf8等 SIMD 库加速解析(见 src/daft-decoding/Cargo.toml),daft-minhash也提供了load_simd加载 SIMD 路径(src/daft-core/src/array/ops/minhash.rs)。这些优化在 LTS 构建中会被禁用,从而带来可观的性能回退——这正是官方建议“仅在必要时使用”的原因。
从源码构建(开发者视角)
如果你需要为 Daft 贡献代码或定制构建,仓库的 Makefile 提供了完整的开发构建流程:
# 编译并安装(debug 模式,开发用) make build # 编译并安装 release 优化版本 make build-release # 只生成 wheel 文件,不安装 make build-whl这些目标底层通过maturin develop --uv/maturin build --release完成(见 Makefile),构建系统要求见 pyproject.toml(maturin>=1.5.0,<2.0.0)。源码构建前请确保本机具备 Rust 工具链(版本约束见 rust-toolchain.toml),并建议使用仓库提供的uv虚拟环境(uv.lock已锁定完整开发依赖)。
普通用户无需走源码构建路线——PyPI 上的预编译 wheel 已覆盖主流平台,直接使用前面的 pip 命令即可。
安装后的下一步
- 想快速跑通一个真实的多模态数据工作流?参见 快速开始指南,其中演示了如何加载 Hugging Face 电商数据集、预览数据并执行 AI 推理(该示例需要
daft[openai]及numpy、pillow)。 - 想了解 Daft 的 AI 函数(LLM 提示、embedding、图像分类)如何使用对应 provider?可参考 AI 函数文档。
- 需要按需裁剪自定义 UDF、了解分布式运行,可继续查阅 docs 目录 下的用户指南。
总结
| 场景 | 推荐命令 |
|---|---|
| 标准安装(大多数用户) | pip install -U daft |
| 按需启用特定功能 | pip install -U "daft[extra1,extra2,...]" |
| 安装全部可选功能 | pip install -U "daft[all]" |
| 体验每日最新构建 | pip install daft --pre --extra-index-url https://nightly.daft.ai |
| 旧 CPU(出现 Illegal instruction) | pip install -U daft-lts |
| 源码开发构建 | make build(或make build-release) |
选择安装方式的核心原则是:默认安装满足日常结构化数据处理;按需加载的 extras 让 AI 与多模态功能随手可得;Nightly 适合测试尝鲜;LTS 仅在旧硬件上作为兜底方案。依据本文并结合 pyproject.toml 中每个 extra 的真实依赖清单,你可以在任何环境中快速、准确地完成 Daft 的部署。
【免费下载链接】DaftHigh-performance data engine for AI and multimodal workloads. Process images, audio, video, and structured data at any scale项目地址: https://gitcode.com/GitHub_Trending/da/Daft
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考