我想在我的分布式集群上运行图形/期货,它们都有一个“加载数据”根任务,然后是一堆在该数据上运行的训练任务。简化版本如下所示:
from dask.distributed import Client
client = Client(scheduler_ip)
load_data_future = client.submit(load_data_func, 'path/to/data/')
train_task_futures = [client.submit(train_func, load_data_future, params)
for params in train_param_set]
像上面那样运行调度程序让一个工作人员读取文件,然后将该数据溢出到磁盘以与其他工作人员共享。但是,加载数据通常是从一个大的 HDF5 文件中读取,这可以同时完成,所以我想知道是否有一种方法可以强制所有工作人员同时读取这个文件(他们都计算根任务)而不是让他们等待一名工作人员完成,然后慢慢地从该工作人员传输数据。
我知道有一种client.run()
方法可以让所有工作人员同时读取文件,但是您将如何获取已读取的数据以提供给下游任务?
我不能使用 dask 数据原语同时读取 HDF5 文件,因为我需要多索引和多列分组等内容。