SuperAPI AI 工具集

ray-data

数据与分析

查看项目

更新于 10-21 16:18

技能介绍

Ray Data 是面向机器学习与 AI 工作负载的分布式数据处理库,用于在集群上扩展数据处理任务。

用途 Ray Data 适合以下场景:为 ML 训练处理大规模数据集(如超过 100GB);需要在集群上进行分布式数据预处理;构建批量推理流水线;加载图像、音频、视频等多模态数据;将数据处理从单机扩展到集群。资料同时指出替代方案:小数据(小于 1GB)单机场景可用 Pandas;表格数据与类 SQL 操作可用 Dask;企业级 ETL 与 SQL 查询可用 Spark。

主要能力

  • 流式执行:可处理大于内存的数据。
  • GPU 支持:可用 GPU 加速转换操作。
  • 框架集成:支持 PyTorch、TensorFlow、HuggingFace。
  • 多模态:支持图像、Parquet、CSV、JSON、音频、视频。
  • 数据格式支持:Parquet(读/写,推荐用于 ML)、CSV(读/写)、JSON(读/写)、图像(读,不支持写)、NumPy(读/写)、Pandas(读,不支持写)。

使用方式 安装:pip install -U 'ray[data]'

读取与转换示例: import ray

读取 Parquet 文件

ds = ray.data.read_parquet("s3://bucket/data/*.parquet")

转换数据(惰性执行)

ds = ds.map_batches(lambda batch: {"processed": batch["text"].str.lower()})

消费数据

for batch in ds.iter_batches(batch_size=100): print(batch)

读取数据:可从云存储读取 Parquet、CSV、JSON、图像;也可从 Python 对象创建,如 ray.data.from_items、ray.data.range、ray.data.from_pandas。

转换操作:map_batches(向量化批处理,较快)、map(逐行处理,较慢)、filter(过滤行)、groupby 与聚合(如 count、map_groups 自定义聚合)。GPU 加速转换可通过在 map_batches 中设置 num_gpus=1 请求 GPU。

写入数据:write_parquet、write_csv、write_json。

性能优化:repartition 控制并行度(如 100 个块对应 100 核集群);调整 batch_size(更大批次通常更快);使用 iter_batches 进行流式执行以处理大于内存的数据。

与 Ray Train 集成示例: import ray from ray.train import ScalingConfig from ray.train.torch import TorchTrainer

train_ds = ray.data.read_parquet("s3://bucket/train/*.parquet")

def train_func(config): train_ds = ray.train.get_dataset_shard("train") for epoch in range(10): for batch in train_ds.iter_batches(batch_size=32): pass

trainer = TorchTrainer( train_func, datasets={"train": train_ds}, scaling_config=ScalingConfig(num_workers=4, use_gpu=True) ) trainer.fit()

与 ML 框架集成:可转换为 PyTorch(ds.to_torch)或 TensorFlow(ds.to_tf)数据集。

常见模式:批量推理(在 map_batches 中加载模型并执行推理,可指定 num_gpus);数据预处理流水线(多步 map_batches 后写出)。

适用场景 资料列出的生产部署案例包括:Pinterest 用于模型训练的最后阶段数据处理;ByteDance 用于扩展多模态 LLM 的离线推理;Spotify 用于批量推理的 ML 平台。

性能基准(资料提供) 处理 100GB 数据:1 节点(16 核)约 30 分钟;4 节点(64 核)约 8 分钟;16 节点(256 核)约 2 分钟。 图像预处理 GPU 加速:仅 CPU 约 1,000 图像/秒;1 GPU 约 5,000 图像/秒;4 GPU 约 18,000 图像/秒。

限制与注意事项

  • 图像格式仅支持读取,不支持写入;Pandas 仅支持读取,不支持写入。
  • 资料中的版本细节可能过时,需以所安装版本的官方文档为准。
  • 遇到大输入内存不足时,可降低分辨率或序列长度、使用半精度或对输入分块。
  • 若指令中的函数、参数或端点在当前安装版本中不存在,应查阅该版本文档并告知用户,不得臆造 API。
  • 商业或公开发布前需检查模型与数据集许可证。
  • 涉及费用、共享 GPU 或云配额、个人或患者数据、不可撤销操作时,应先询问。

资源 文档:https://docs.ray.io/en/latest/data/data.html GitHub:https://github.com/ray-project/ray (⭐ 36,000+) 版本:Ray 2.40.0+ 示例:https://docs.ray.io/en/latest/data/examples/overview.html

相关技能:ray-train(跨集群分布式训练编排)、polars(高性能 DataFrame 库)、dask(面向大于内存的 pandas/NumPy 工作流的分布式计算)。