哪些tensorflow操作触发内存分配?

2024-05-17 14:22:39 发布

您现在位置:Python中文网/ 问答频道 /正文

在阅读TensorArray类的文档时,我遇到了以下行:

If True, the TensorArray will be colocated on the same device as the Tensor used on its first write (write operations include write, unstack, and split). If False, the TensorArray will be placed on the device determined by the device context available during its initialization.

这让我想知道是否只有某些操作会触发实际的内存分配和读/写,以及是否有这些操作的列表

我也想知道这一点,因为在创建暂时非常大的张量时,由于OOM错误,会有一些限制,但无论如何都是以批处理的方式处理的,因此程序永远不需要实际保存张量的所有数据-类似于dataset API如何允许处理无限大型数据集,因为所有数据都是按需加载的


Tags: the数据文档trueifondeviceas
1条回答
网友
1楼 · 发布于 2024-05-17 14:22:39

从Tensorflow GPU的角度来看:没有列表

TF在GPU上运行有两种方式:

  • 无XLA
  • 用XLA

不使用XLA,一旦操作A0完成,TysFooRoad将根据A0:B0、B1、B2等分配所有操作的内存。一旦完成,TF将不再需要A0内存。如果您有卷积NN,通常会保存所有正向路径激活,直到反向路径开始

使用XLA,可以将多个操作合并成块。在块中,可以合并/拆分/复制操作以减少内存使用。XLA集群将有自己的内存管理程序,这将取决于操作是如何混合在一起的。多个XLA集群将表现为多个非XLA OPS:它们都将尽快启动,可能导致次优峰值内存使用。p>

相关问题 更多 >