首页 > 解决方案 > PyTorch 内存不足:DefaultCPUAllocator 无法分配内存

问题描述

我正在尝试优化weigtsPytorch 中的一些权重(),但我不断收到此错误:

RuntimeError: [enforce fail at CPUAllocator.cpp:64]。DefaultCPUAllocator:无法分配内存:您尝试分配 8000000000000 字节。错误代码 12(无法分配内存)。

即,当我跑步时事情会爆炸(weights * col).sum() / weights.sum()。权重是大小为 (1000000,1) 的张量,而 col 也是大小为 (1000000, 1) 的张量。两个张量的大小都合适,但我为这些操作耗尽了我计算机中的所有内存 (8GB) 似乎很奇怪。

标签: pytorchout-of-memory

解决方案


可能是你的张量weightscol张量没有对齐(即其中一个被转置,所以它是(1,1000000)而不是(1000000,1)。然后当你这样做时(weights * col),形状会一起广播,它会产生一个张量( 1000000,1000000)这可能是您获得极端内存使用的地方(因为生成的张量是原始张量的 1000000 倍)。


推荐阅读