Я сталкиваюсь с ошибкой MemoryError при попытке загрузить очень большой набор данных из файла hdf5. Ниже я привел короткий пример.
import dask
import dask.array as da
import h5py
from dask.distributed import Client
client = Client('tcp://10.11.69.71:44393')
handle = h5py.File('h5_file.h5', 'r') # matrix size: (4500, 6291456)
a = da.from_array(handle['_data'], chunks='auto') # matrix size: (6291456, 128)
st1 = da.random.random((a.shape[1], 128))
st = client.run(start)
res = da.matmul(a, st1)
res.compute()
Это приводит к следующей ошибке:
distributed.worker - WARNING - Compute Failed
Function: execute_task
args: ((subgraph_callable, (<function concatenate_axes at 0x2b85d304a0d0>, [array([[ 42., 50., 5., ..., 168., 203., 214.],
[129., 159., 0., ..., 187., 153., 136.],
[ 0., 0., 0., ..., 228., 209., 204.],
...,
[ 18., 28., 13., ..., 255., 227., 218.],
[ 79., 86., 61., ..., 53., 64., 55.],
[ 42., 76., 106., ..., 101., 35., 20.]], dtype=float32), array([[ 50., 60., 33., ..., 169., 204., 215.],
[ 24., 111., 0., ..., 185., 151., 133.],
[ 0., 0., 0., ..., 226., 207., 202.],
...,
[ 17., 23., 14., ..., 255., 228., 219.],
[111., 120., 101., ..., 53., 64., 55.],
[ 85., 98., 90., ..., 100., 37., 22.]], dtype=float32), array([[ 65., 61., 35., ..., 170., 205., 215.],
[215., 237., 214., ..., 184., 149., 131.],
[ 49., 42., 21., ..., 223., 205., 200.],
...,
[ 16., 20., 11., ..., 255., 229., 220.],
[ 85., 85., 69., ..., 53., 64., 54.],
[ 6
kwargs: {}
Exception: MemoryError()
Я загружаю данные неправильно? Я попытался использовать результат, но безрезультатно.
PS Я использую dask-mpi для создания моего клиента