ray.data.Dataset.split#
- Dataset.split(n: int, *, equal: bool = False, locality_hints: List[Any] | None = None) List[MaterializedDataset] [源代码]#
将数据集物化并分割成
n
个不相交的部分。此方法返回一个
MaterializedDataset
列表,该列表可以传递给 Ray 任务和角色,并用于并行读取数据集行。备注
此操作将触发对此数据集执行的延迟转换。
示例
@ray.remote class Worker: def train(self, data_iterator): for batch in data_iterator.iter_batches(batch_size=8): pass workers = [Worker.remote() for _ in range(4)] shards = ray.data.range(100).split(n=4, equal=True) ray.get([w.train.remote(s) for w, s in zip(workers, shards)])
时间复杂度: O(1)
- 参数:
n – 要返回的子数据集数量。
equal – 是否保证每个拆分具有相同数量的记录。如果行不能在拆分之间平均分配,则可能会删除记录。
locality_hints – [实验性] Ray 角色句柄的列表,大小为
n
。系统尝试将第 i 个数据集的块与第 i 个角色放在一起,以最大化数据局部性。
- 返回:
n
个不相交数据集分片的列表。
参见
Dataset.split_at_indices()
与
split()
不同,后者将数据集分割成大致相等的子集,而Dataset.split_proportionately()
允许你将数据集分割成不同大小的部分。Dataset.split_proportionately()
此方法等效于
Dataset.split_at_indices()
如果你手动计算索引。Dataset.streaming_split()
。与
split()
不同,streaming_split()
不会在内存中具体化数据集。