PyTorch 运行 内存不足:DefaultCPUAllocator 无法分配内存
PyTorch running out of memory: DefaultCPUAllocator can't allocate memory
我正在尝试在 Pytorch 中优化一些权重 (weigts
),但我一直收到此错误:
RuntimeError: [enforce fail at CPUAllocator.cpp:64] . DefaultCPUAllocator: can't allocate memory: you tried to allocate 8000000000000 bytes. Error code 12 (Cannot allocate memory).
也就是说,当我 运行 (weights * col).sum() / weights.sum()
时,事情就爆炸了。权重是大小为 (1000000,1) 的张量,col 也是大小为 (1000000, 1) 的张量。两个张量的大小都合适,但我为这些操作耗尽了计算机中的所有内存 (8GB) 似乎很奇怪。
可能是您的 weights
和 col
张量没有对齐(即其中一个被转置,所以它是 (1,1000000) 而不是 (1000000,1)。然后当你做 (weights * col)
形状一起广播,它产生一个张量 (1000000,1000000),这可能是你获得极端内存使用的地方(因为生成的张量是原始张量的 1000000 倍)。
我正在尝试在 Pytorch 中优化一些权重 (weigts
),但我一直收到此错误:
RuntimeError: [enforce fail at CPUAllocator.cpp:64] . DefaultCPUAllocator: can't allocate memory: you tried to allocate 8000000000000 bytes. Error code 12 (Cannot allocate memory).
也就是说,当我 运行 (weights * col).sum() / weights.sum()
时,事情就爆炸了。权重是大小为 (1000000,1) 的张量,col 也是大小为 (1000000, 1) 的张量。两个张量的大小都合适,但我为这些操作耗尽了计算机中的所有内存 (8GB) 似乎很奇怪。
可能是您的 weights
和 col
张量没有对齐(即其中一个被转置,所以它是 (1,1000000) 而不是 (1000000,1)。然后当你做 (weights * col)
形状一起广播,它产生一个张量 (1000000,1000000),这可能是你获得极端内存使用的地方(因为生成的张量是原始张量的 1000000 倍)。