Daft 安装完全指南:从 pip 一键安装到可选依赖、Nightly 与旧 CPU 兼容方案
2026/9/17 20:49:25 网站建设 项目流程

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)
huggingfaceHugging Face 数据集与 Hub 读取huggingface-hubdatasetsfsspec
openaiOpenAI API 的 AI 函数(LLM、embedding)openainumpypillow
transformers本地 Hugging Face Transformers 模型推理transformerssentence-transformerstorchtorchvisionpillow
ray基于 Ray 的分布式计算ray[data, client]>=2.11.0,<2.59.0(Flotilla 依赖 Ray 2.11 新增的ActorUnavailableError
turbopufferTurbopuffer 向量数据库连接turbopuffer
awsAWS Glue 目录与 S3 Tablesboto3mypy-boto3-glue
icebergApache Iceberg 表格式读写pyiceberg >= 0.7.0, != 0.9.1, != 0.10.0, <= 0.11.1
deltalakeDelta Lake 表格式deltalake >= 1.6.0,<1.7.0
unityUnity Catalog(Databricks)httpxunitycatalogdeltalake
lanceLanceDB / Lance 向量存储daft-lance>=0.5.0,<0.6.0
clickhouseClickHouse 数据库连接clickhouse_connect
azureAzure Blob Storagefsspecadlfs
googleGoogle Gemini API 的 AI 函数google-genainumpypillow
kafkaApache Kafka 流式数据源confluent-kafka
gravitinoApache Gravitino 目录requests
postgresPostgreSQL 数据库连接psycopg[binary]pgvectorsqlglotconnectorx
sqlSQL 数据库(通用)connectorxsqlalchemysqlglot
pandaspandas 互操作pandas
numpyNumPy 互操作numpy
audio音频数据读取(WAV/MP3/FLAC)soundfilelibrosa
video视频数据读取(MP4 等)avpillow
hdf5HDF5 文件读取h5pynumpy
httpHTTP / HTTPS 文件源fsspec[http]
mcapMCAP(机器人日志容器格式)读取无(读取器为原生实现,该 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),因此它会连同torchray等重型依赖一起安装。

为什么可选依赖可以按需加载?

Daft 对可选依赖采用**懒加载(Lazy Import)**机制:核心模块在导入时并不会强制 import 这些库,只有真正用到对应功能时才动态引入。这一点在 daft/dependencies.py 中体现得非常清晰——avconfluent_kafkalibrosatorchtensorflow等都被包装为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-lts

LTS 版本的代价

⚠️性能影响LTS 版本会限制可用的 CPU 指令集,无法利用向量化运算,因此性能明显更慢。仅在标准包无法运行时才应使用 LTS 版本。

从引擎源码可以印证向量化对性能的重要性:Daft 的数值计算大量依赖 SIMD 指令,例如daft-core的算术运算在src/daft-core/src/array/ops/arithmetic.rs中针对不同指令集做了优化,daft-decoding使用atoi_simdsimdutf8等 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]numpypillow)。
  • 想了解 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),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询