当前位置: 首页 > 知识库问答 >
问题:

Tensorflow。同一机器和同一型号上的一组图形处理器工作良好,另一组图形处理器会出现OOM错误

吕德惠
2023-03-14

我使用多个GPU(num_GPU=4)训练一个模型和多个塔。该模型在一组GPU上训练良好:CUDA_VISIBLE_DEVICES=0,1,2,3,而在CUDA_VISIBLE_DEVICES=0,1,4,5的第一次图形评估中,该模型遇到OOM问题

有人知道为什么会这样吗?

以下选项用于创建会话

session_config=tf.ConfigProto(
  allow_soft_placement=True,
  log_device_placement=False)
session_config.gpu_options.per_process_gpu_memory_fraction = 0.94
session_config.gpu_options.allow_growth=False

批量大小,已经非常小,=3

Tensorflow 1.0 Cuda 8.0 Ubuntu 14.04.5 LTS所有GPU:GeForce GTX 1080

名称:GeForce GTX 1080主要:6次要:1 memoryClockRate(GHz)1.7335 pciBusID 0000:07:00.0总内存:7.92GiB可用内存:7.81GiB W tensorflow/stream_executor/cuda/cuda_driver.cc:590]在当前活动时创建上下文;现有:0xcc4593a0 I tensorflow/core/common_runtime/gpu/gpu_device.cc:885]找到具有以下属性的设备1:名称:GeForce GTX 1080 major:6 minor:1 memoryClockRate(GHz)1.7335 pciBusID 0000:08:00.0总内存:7.92GiB可用内存:7.81GiB W tensorflow/stream_执行器/cuda/cuda_驱动程序。cc:590]在当前活动时创建上下文;现有:0xd2404670 I tensorflow/core/common_runtime/gpu/gpu_device.cc:885]找到具有以下属性的设备2:名称:GeForce GTX 1080 major:6 minor:1 memoryClockRate(GHz)1.7335 pciBusID 0000:18:00.0总内存:7.92GiB可用内存:7.81GiB W tensorflow/stream_执行器/cuda/cuda_驱动程序。cc:590]在当前活动时创建上下文;现有:0xd25591b0 I tensorflow/core/common_runtime/gpu/gpu_device.cc:885]找到了具有以下属性的设备3:名称:GeForce GTX 1080主要:6次要:1 memoryClockRate(GHz)1.7335 pciBusID 0000:1c:00.0总内存:7.92GiB可用内存:7.81GiB I tensorflow/core/common_runtime/gpu/gpu设备。cc:906]DMA:01 2 3 I tensorflow/core/common_runtime/gpu/gpu设备。cc:916]0:Y Y I tensorflow/core/common_runtime/gpu/gpu设备。cc:916]1:Y Y Y tensorflow/core/common_runtime/gpu设备。cc:916]tensorflow/core/common_运行时/gpu/gpu设备。cc:916]3:Y tensorflow/core/common_运行时/gpu/gpu设备。cc:975]创建tensorflow设备(/gpu:0)-

I tensorflow/core/common_runtime/gpu/pool_allocator.cc:247]PoolAllocator:47441 get请求之后,put_count=8461逐出_count=1000逐出_rate=0.118189,未满足分配率=0.844839 I tensorflow/core/common_runtime/gpu/pool_分配器。cc:259]将池大小限制从100提高到110 W html" target="_blank">tensorflow/core/common_runtime/bfc_分配器。cc:217]尝试分配2.33GiB时内存耗尽。调用者指出这不是一个故障,但可能意味着如果有更多的内存可用,性能可能会提高。W tensorflow/core/common_runtime/bfc_allocator.cc:217]试图分配3.08GiB时内存不足。调用者指出这不是一个故障,但可能意味着如果有更多的内存可用,性能可能会提高。W tensorflow/core/common_runtime/bfc_allocator.cc:217]试图分配3.08GiB时内存不足。调用者指出这不是一个故障,但可能意味着如果有更多的内存可用,性能可能会提高。W tensorflow/core/common_runtime/bfc_allocator.cc:217]试图分配3.98GiB时内存不足。调用者指出这不是一个故障,但可能意味着如果有更多的内存可用,性能可能会提高。W tensorflow/core/common_runtime/bfc_allocator.cc:217]试图分配3.98GiB时内存不足。调用者指出这不是一个故障,但可能意味着如果有更多的内存可用,性能可能会提高。W tensorflow/core/common_runtime/bfc_allocator.cc:217]试图分配2.54GiB时内存不足。调用者指出这不是一个故障,但可能意味着如果有更多的内存可用,性能可能会提高。W tensorflow/core/common_runtime/bfc_allocator.cc:217]试图分配2.54GiB时内存不足。调用者指出这不是一个故障,但可能意味着如果有更多的内存可用,性能可能会提高。W tensorflow/core/common_runtime/bfc_allocator.cc:217]试图分配3.17GiB时内存不足。调用者指出这不是一个故障,但可能意味着如果有更多的内存可用,性能可能会提高。W tensorflow/core/common_runtime/bfc_allocator.cc:217]试图分配2.68GiB时内存不足。调用者指出这不是一个故障,但可能意味着如果有更多的内存可用,性能可能会提高。W tensorflow/core/common_runtime/bfc_allocator.cc:217]试图分配3.86GiB时内存不足。调用者指出这不是一个故障,但可能意味着如果有更多的内存可用,性能可能会提高。I tensorflow/core/common_runtime/gpu/pool_allocator.cc:247]PoolAllocator:2698 get请求后,put_count=8709被逐出

共有1个答案

淳于飞文
2023-03-14

日志是运行良好还是运行不良?那里没有错误,只有警告。

如果您的系统有双根复合体,0,1,4,5可能在不同的分区上。DMA矩阵将显示这一点。相同根复合体上的GPU之间的副本通常比交叉它们更快。如果由于复制时间较长,副本必须在张量引用上保持更长时间,您可能会看到内存使用峰值增加,如果您的模型过于接近限制,则会导致OOM。当然,这只是一个理论,如果没有进一步的调试信息,很难确定。

 类似资料:
  • 我是Azure机器学习的新手,所以我希望我做的一切都很好。我用GPU类型的新计算实例创建了新的Jupyter笔记本 但是跑步的时候 从tensorflow文档中,我得到了数字0——当检查我有什么设备时,它只是一些CPU 你知道这是为什么吗?在这里做什么? 看起来有了PyTorch,一切都很好,正在运行 返回True 软件包版本是: tensorflow 2.4。0

  • 我有几个绘图函数,每个函数都接收不同类型的数据并用自己的标题和图例进行绘图。然而,当我试图在同一个图形上绘制它们时,前一个图形被覆盖。 我知道这样做的一种方法是调用,但是由于图例是在函数内部创建的,所以这似乎是不可能的。是否有任何类型的可以执行此操作?从每个绘图中检索图例并在图形上显示它们?我应该从每个函数返回图例吗? 这是我所拥有的简化代码: 我不确定这是否是最好的方法,但由于我多次使用这些绘图

  • 树形结构在软件中随处可见,例如操作系统中的目录结构、应用软件中的菜单、办公系统中的公司组织结构等等,如何运用面向对象的方式来处理这种树形结构是组合模式需要解决的问题,组合模式通过一种巧妙的设计方案使得用户可以一致性地处理整个树形结构或者树形结构的一部分,也可以一致性地处理树形结构中的叶子节点(不包含子节点的节点)和容器节点(包含子节点的节点)。下面将学习这种用于处理树形结构的组合模式。   11.

  • 我正在使用java-8进行多个Spring boot项目,但现在其中一个需要转移到java-11。所以我需要在笔记本电脑上安装两个版本。那么如何在同一台机器上为不同的项目处理不同的JAVA版本呢?

  • 问题内容: 例如,当我键入要从POST提交的表单中检索名称时,是否还必须编写一个类似于以下内容的单独分支?如果我想同时支持这两种方法,是否需要为所有POST和所有GET请求编写单独的语句? 问题答案: 你可以使用区分实际方法。 我假设你要: 使用GET方法触发路线时渲染模板 读取表单输入并注册用户(如果通过以下方式触发了路线) POST 因此,你的案例类似于文档中所述的案例:Flask Quick