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
。对于一个从m
到n
工作者的自动扩展工作者池,指定concurrency=(m, n)
。ray_remote_args_fn – 一个返回传递给每个映射工作者的远程参数字典的函数。此参数的目的是为每个执行者/任务生成动态参数,并且将在每次初始化工作者之前被调用。从此字典返回的参数将始终覆盖
ray_remote_args
中的参数。注意:这是一个高级的、实验性的功能。ray_remote_args – 为每个映射工作者从Ray请求的额外资源需求。
参见
flat_map()
调用此方法可以从现有行创建新行。与
map()
不同,传递给flat_map()
的函数可以返回多行。map_batches()
调用此方法以转换数据批次。