4

分散クラスターでグラフ/先物を実行したいと考えています。これらはすべて「データのロード」ルート タスクと、そのデータで実行される一連のトレーニング タスクを持っています。簡略化されたバージョンは次のようになります。

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]

上記のようにこれを実行すると、スケジューラは 1 つのワーカーを取得してファイルを読み取り、そのデータをディスクにスピルして他のワーカーと共有します。ただし、データのロードは通常、同時に実行できる大きな HDF5 ファイルからの読み取りであるため、すべてのワーカーがこのファイルを同時に読み取るようにする (すべてのワーカーがルート タスクを計算する) 方法があるかどうか疑問に思っていました。 1 つのワーカーが完了するのを待ってから、そのワーカーからゆっくりとデータを転送します。

client.run()すべてのワーカーにファイルを同時に読み取らせるために使用できる方法があることは知っていますが、読み取ったデータを取得して下流のタスクにフィードするにはどうすればよいでしょうか?

複数のインデックスや複数の列でのグループ化などが必要なため、dask データ プリミティブを使用して HDF5 ファイルを同時に読み取ることはできません。

4

2 に答える 2