ray.data.Dataset.map#

Dataset.map(fn: Callable[[Dict[str, Any]], Dict[str, Any]] | Callable[[Dict[str, Any]], Iterator[Dict[str, Any]]] | _CallableClassProtocol, *, compute: ComputeStrategy | None = None, fn_args: Iterable[Any] | None = None, fn_kwargs: Dict[str, Any] | None = None, fn_constructor_args: Iterable[Any] | None = None, fn_constructor_kwargs: Dict[str, Any] | None = None, num_cpus: float | None = None, num_gpus: float | None = None, concurrency: int | Tuple[int, int] | None = None, ray_remote_args_fn: Callable[[], Dict[str, Any]] | None = None, **ray_remote_args) Dataset[源代码]#

将给定的函数应用于该数据集的每一行。

使用此方法来转换您的数据。要了解更多信息,请参阅 转换行

你可以使用一个函数或一个可调用的类来执行转换。对于函数,Ray Data 使用无状态的 Ray 任务。对于类,Ray Data 使用有状态的 Ray 角色。更多信息请参见 有状态转换

小技巧

如果你的转换是向量化的,就像大多数 NumPy 或 pandas 操作一样,map_batches() 可能会更快。

示例

import os
from typing import Any, Dict
import ray

def parse_filename(row: Dict[str, Any]) -> Dict[str, Any]:
    row["filename"] = os.path.basename(row["path"])
    return row

ds = (
    ray.data.read_images("s3://anonymous@ray-example-data/image-datasets/simple", include_paths=True)
    .map(parse_filename)
)
print(ds.schema())
Column    Type
------    ----
image     numpy.ndarray(shape=(32, 32, 3), dtype=uint8)
path      string
filename  string

时间复杂度:O(数据集大小 / 并行度)

参数:
  • fn – 应用于每一行的函数,或可以实例化以创建此类可调用对象的类类型。

  • compute – 此参数已弃用。请使用 concurrency 参数。

  • fn_args – 传递给 fn 的位置参数,在第一个参数之后。这些参数是底层 Ray 任务的顶级参数。

  • fn_kwargs – 传递给 fn 的关键字参数。这些参数是底层 Ray 任务的顶级参数。

  • fn_constructor_args – 传递给 fn 构造函数的定位参数。只有当 fn 是一个可调用类时,你才能提供这个参数。这些参数是底层 Ray 演员构造任务中的顶级参数。

  • fn_constructor_kwargs – 传递给 fn 构造函数的键值参数。只有在 fn 是一个可调用类时才能提供这些参数。这些参数是底层 Ray 角色构造任务中的顶级参数。

  • num_cpus – 为每个并行映射工作器保留的CPU数量。

  • num_gpus – 为每个并行映射工作器预留的GPU数量。例如,指定 num_gpus=1 以请求每个并行映射工作器使用1个GPU。

  • concurrency – 要同时使用的 Ray 工作者的数量。对于一个固定大小的工作者池,大小为 n,指定 concurrency=n。对于一个从 mn 工作者的自动扩展工作者池,指定 concurrency=(m, n)

  • ray_remote_args_fn – 一个返回传递给每个映射工作者的远程参数字典的函数。此参数的目的是为每个执行者/任务生成动态参数,并且将在每次初始化工作者之前被调用。从此字典返回的参数将始终覆盖 ray_remote_args 中的参数。注意:这是一个高级的、实验性的功能。

  • ray_remote_args – 为每个映射工作者从Ray请求的额外资源需求。

参见

flat_map()

调用此方法可以从现有行创建新行。与 map() 不同,传递给 flat_map() 的函数可以返回多行。

map_batches()

调用此方法以转换数据批次。