在尝试初始化torch.zeros - torch.zeros((2000,2000,3200), device=device)时,我面临内存问题。
获取以下错误:
RuntimeError: CUDA out of memory. Tried to allocate 47.69 GiB (GPU 0; 8.00 GiB total capacity; 1.50 KiB already allocated; 6.16 GiB free; 2.00 MiB reserved in total by PyTorch)我的问题是:为什么零张量需要那么大的记忆?还是我做错了什么?
我在另一个系统中与getsizeof核对--这个张量的大小仅显示为72字节。
发布于 2021-04-27 10:38:45
张量占用这么多内存的原因是,在默认情况下,张量将使用torch.float32类型存储值。此数据类型将对张量中的每个值使用4kb (使用.element_size()检查),这将给出与张量中的零值相乘后的总计48 of (4 * 2000 * 2000 * 3200 = 47.68GB)。您可以尝试的是将数据类型从torch.float32更改为类似于torch.int8的数据类型,它只对每个值使用1kb,将所需内存减少75%,降至12 75。但是,考虑到您似乎只有8GB可用,这也不会解决您的问题。因此,唯一的解决办法就是使用张量来减少数值。
https://datascience.stackexchange.com/questions/93613
复制相似问题