将 Tensorflow 与 GPU 一起使用时出错

     2023-02-23     250

关键词:

【中文标题】将 Tensorflow 与 GPU 一起使用时出错【英文标题】:Error using Tensorflow with GPU 【发布时间】:2016-04-03 12:44:20 【问题描述】:

我尝试了一堆不同的 Tensorflow 示例,它们在 CPU 上运行良好,但当我尝试在 GPU 上运行它们时会产生相同的错误。一个小例子是这样的:

import tensorflow as tf

# Creates a graph.
a = tf.constant([1.0, 2.0, 3.0, 4.0, 5.0, 6.0], shape=[2, 3], name='a')
b = tf.constant([1.0, 2.0, 3.0, 4.0, 5.0, 6.0], shape=[3, 2], name='b')
c = tf.matmul(a, b)
# Creates a session with log_device_placement set to True.
sess = tf.Session(config=tf.ConfigProto(log_device_placement=True))
# Runs the op.
print sess.run(c)

错误总是一样的,CUDA_ERROR_OUT_OF_MEMORY:

I tensorflow/stream_executor/dso_loader.cc:101] successfully opened CUDA library libcublas.so.7.0 locally
I tensorflow/stream_executor/dso_loader.cc:101] successfully opened CUDA library libcudnn.so.6.5 locally
I tensorflow/stream_executor/dso_loader.cc:101] successfully opened CUDA library libcufft.so.7.0 locally
I tensorflow/stream_executor/dso_loader.cc:101] successfully opened CUDA library libcuda.so locally
I tensorflow/stream_executor/dso_loader.cc:101] successfully opened CUDA library libcurand.so.7.0 locally
I tensorflow/core/common_runtime/local_device.cc:40] Local device intra op parallelism threads: 24
I tensorflow/core/common_runtime/gpu/gpu_init.cc:103] Found device 0 with properties: 
name: Tesla K80
major: 3 minor: 7 memoryClockRate (GHz) 0.8235
pciBusID 0000:0a:00.0
Total memory: 11.25GiB
Free memory: 105.73MiB
I tensorflow/core/common_runtime/gpu/gpu_init.cc:103] Found device 1 with properties: 
name: Tesla K80
major: 3 minor: 7 memoryClockRate (GHz) 0.8235
pciBusID 0000:0b:00.0
Total memory: 11.25GiB
Free memory: 133.48MiB
I tensorflow/core/common_runtime/gpu/gpu_init.cc:127] DMA: 0 1 
I tensorflow/core/common_runtime/gpu/gpu_init.cc:137] 0:   Y Y 
I tensorflow/core/common_runtime/gpu/gpu_init.cc:137] 1:   Y Y 
I tensorflow/core/common_runtime/gpu/gpu_device.cc:702] Creating TensorFlow device (/gpu:0) -> (device: 0, name: Tesla K80, pci bus id: 0000:0a:00.0)
I tensorflow/core/common_runtime/gpu/gpu_device.cc:702] Creating TensorFlow device (/gpu:1) -> (device: 1, name: Tesla K80, pci bus id: 0000:0b:00.0)
I tensorflow/core/common_runtime/gpu/gpu_bfc_allocator.cc:42] Allocating 105.48MiB bytes.
E tensorflow/stream_executor/cuda/cuda_driver.cc:932] failed to allocate 105.48M (110608384 bytes) from device: CUDA_ERROR_OUT_OF_MEMORY
F tensorflow/core/common_runtime/gpu/gpu_bfc_allocator.cc:47] Check failed: gpu_mem != nullptr  Could not allocate GPU device memory for device 0. Tried to allocate 105.48MiB
Aborted (core dumped)

我猜这个问题与我的配置有关,而不是这个小例子的内存使用情况。有人有什么主意吗?

编辑:

我发现问题可能与其他人在同一 GPU 上运行作业一样简单,这可以解释可用内存量很少的原因。在这种情况下:抱歉占用您的时间...

【问题讨论】:

我遇到了类似的问题,根本原因是 jupyter notebook 在后台运行。关闭笔记本解决了我的问题。 【参考方案1】:

这可能是因为您的 TensorFlow 会话无法在 GPU 中获得足够的内存量。也许您的 TensorFlow 等其他进程的可用内存量很少,或者您的系统中正在运行另一个 TensorFlow 会话。所以你必须配置 TensorFlow 会话将使用的内存量

如果您使用的是 TensorFlow 1.x

gpu_options = tf.GPUOptions(per_process_gpu_memory_fraction=0.333)

sess = tf.Session(config=tf.ConfigProto(gpu_options=gpu_options))

由于 TensorFlow 2.x 与 1.x 相比发生了重大变化。如果您想使用 TensorFlow 1.x 版本的方法/功能,TensorFlow 2.x 中保留了一个兼容性模块。所以 TensorFlow 2.x 用户可以使用这段代码

gpu_options = tf.compat.v1.GPUOptions(per_process_gpu_memory_fraction=0.333)

sess = tf.compat.v1.Session(config=tf.compat.v1.ConfigProto(gpu_options=gpu_options))

【讨论】:

【参考方案2】:

这里似乎有两个问题:

    默认情况下,当您创建 tf.Session 时,TensorFlow 会分配大部分 (95%) 的可用 GPU 内存(在每个 GPU 设备上)。它使用heuristic 为“系统”使用保留 200MB 的 GPU 内存,但如果可用内存量为smaller than that,则不会将其放在一边。

    看起来您的任一 GPU 设备(105.73MiB 和 133.48MiB)上的可用 GPU 内存都很少。这意味着 TensorFlow 将尝试分配可能应该为系统保留的内存,因此分配失败。

在您尝试运行此程序时,是否有可能正在运行另一个 TensorFlow 进程(或其他一些需要 GPU 的代码)?例如,具有打开会话的 Python 解释器(即使它没有使用 GPU)也会尝试分配几乎整个 GPU 内存。

目前,限制 TensorFlow 使用的 GPU 内存量的唯一方法是以下配置选项(来自 this question):

# Assume that you have 12GB of GPU memory and want to allocate ~4GB:
gpu_options = tf.GPUOptions(per_process_gpu_memory_fraction=0.333)

sess = tf.Session(config=tf.ConfigProto(gpu_options=gpu_options))

【讨论】:

无法将 NVIDIA Quadro P620 GPU 与 Tensorflow 一起使用

】无法将NVIDIAQuadroP620GPU与Tensorflow一起使用【英文标题】:CannotuseNVIDIAQuadroP620GPUwithTensorflow【发布时间】:2021-07-0805:22:45【问题描述】:我已在正确的文件夹中安装了使用Tensorflow运行我的GPU所需的所有东西,例如NVIDIA驱动程序、... 查看详情

将 TensoBoard 与 TPU 一起使用时出现 UnimplementedError

】将TensoBoard与TPU一起使用时出现UnimplementedError【英文标题】:UnimplementedErrorwhileusingTensoBoardwithTPU【发布时间】:2021-02-2817:58:29【问题描述】:我目前正在使用TPU训练我的模型。不幸的是,在使用TensoBoard和TPU时出现X错误。如果我... 查看详情

导入 tensorflow as tf 时出现导入错误

】导入tensorflowastf时出现导入错误【英文标题】:Importerrorwhiledoingimporttensorflowastf【发布时间】:2017-11-0415:14:45【问题描述】:我已经使用原生pipusingnativepiptoinstalltensorflow为GPU安装了tensorflow虽然我将importtensorflowastf与python3一起使... 查看详情

将 Keras 和 Tensorflow 与 AMD GPU 结合使用

】将Keras和Tensorflow与AMDGPU结合使用【英文标题】:UsingKeras&TensorflowwithAMDGPU【发布时间】:2016-10-1922:53:26【问题描述】:我开始学习Keras,我相信它是Tensorflow和Theano之上的一层。但是,我只能使用AMDGPU,例如AMDR9280X。如何设置... 查看详情

将 GPU 与 opencv-python 一起使用

】将GPU与opencv-python一起使用【英文标题】:UseGPUwithopencv-python【发布时间】:2020-12-1511:41:06【问题描述】:我正在尝试在Windows10上将opencv-python与GPU一起使用。我使用pip安装了opencv-contrib-python,它是v4.4.0.42,我的计算机和路径中... 查看详情

训练期间 642% 的 CPU 与 GPU 一起使用。正常吗? [关闭]

...U:英特尔酷睿i79700K@3.60GhzGPU:英伟达GeForceGTX1060当我使用tensorflow-gpu进行训练时,我的CPU和GPU都会被使用。这是正 查看详情

tensorflow——tensorflow指定cpu与gpu运算(代码片段)

1.指定GPU运算如果安装的是GPU版本,在运行的过程中TensorFlow能够自动检测。如果检测到GPU,TensorFlow会尽可能的利用找到的第一个GPU来执行操作。如果机器上有超过一个可用的GPU,除了第一个之外的其他的GPU默认是不参与计算的... 查看详情

将 AutoMapper 与实体框架一起使用时出现异常

】将AutoMapper与实体框架一起使用时出现异常【英文标题】:ExceptionusingAutoMapperwithEntityFramework【发布时间】:2012-11-1705:49:25【问题描述】:我正在尝试使用实体框架将Automapper包含到项目中,这是我的DTO类:publicclassFunctionDtopublicin... 查看详情

将插入与 KeyHolder 一起使用时出现 ArrayIndexOutOfBoundsException

】将插入与KeyHolder一起使用时出现ArrayIndexOutOfBoundsException【英文标题】:ArrayIndexOutOfBoundsExceptionwhenusinginsertwithKeyHolder【发布时间】:2018-11-1111:42:38【问题描述】:有一个例子,适用于这个版本:Stringsql="insertintoalbum(name)VALUES(:name... 查看详情

将 Jackson JSON 库与骆驼一起使用时出现异常

】将JacksonJSON库与骆驼一起使用时出现异常【英文标题】:ExceptionusingJacksonJSONlibrarywithcamel【发布时间】:2014-03-0123:06:26【问题描述】:我在将JacksonJSON库与骆驼一起使用时遇到问题。例外是:FailedToCreateRouteException:Failedtocreateroute... 查看详情

将 objcopy 与“薄存档”文件一起使用时出现问题

】将objcopy与“薄存档”文件一起使用时出现问题【英文标题】:Problemwhileusingobjcopywith"thinarchive"file【发布时间】:2019-02-2714:12:36【问题描述】:请使用以下shell命令重现问题:#createsubdirectorymkdirsubdir#createsourcefileswithdummyfu... 查看详情

将 QuerydslPredicateExecutor 与 JpaRepository 一起使用时出现 IllegalAccessException

】将QuerydslPredicateExecutor与JpaRepository一起使用时出现IllegalAccessException【英文标题】:IllegalAccessExceptionwhenusingQuerydslPredicateExecutorwithJpaRepository【发布时间】:2022-01-0402:45:41【问题描述】:应用:kotlin1.6jdk17(也试过8和11)gradle7.3spr 查看详情

将 Firebase 与 RecyclearView 一起使用时出现错误

】将Firebase与RecyclearView一起使用时出现错误【英文标题】:IhaveanerrorwhenusingFirebasewithRecyclearView【发布时间】:2018-06-1617:54:00【问题描述】:我在运行我的应用程序时遇到这些错误:致命异常:主进程:com.google.example.adinaranayaragh... 查看详情

Numba 可以与 Tensorflow 一起使用吗?

】Numba可以与Tensorflow一起使用吗?【英文标题】:CanNumbabeusedwithTensorflow?【发布时间】:2017-04-2904:40:36【问题描述】:Numba可以用来编译与Tensorflow接口的Python代码吗?IE。Tensorflow宇宙之外的计算将使用Numba运行以提高速度。我还... 查看详情

如何将 Tensorflow 数据集 API 与训练和验证集一起使用

】如何将Tensorflow数据集API与训练和验证集一起使用【英文标题】:HowtouseTensorflowdatasetAPIwithtrainingandvalidationsets【发布时间】:2018-05-0114:11:44【问题描述】:手头的简单任务:运行N个epoch的训练,在每个epoch之后计算准确的验证准... 查看详情

将 Keras 与 Tensorflow 2、Theano 或 CNTK 后端一起使用是不是存在语法差异?

】将Keras与Tensorflow2、Theano或CNTK后端一起使用是不是存在语法差异?【英文标题】:AretheresyntaxdifferencesbetweenusingKeraswithaTensorflow2,Theano,orCNTKbackend?将Keras与Tensorflow2、Theano或CNTK后端一起使用是否存在语法差异?【发布时间】:2020-0... 查看详情

将 retfofit 与 MVVM 一起使用时出现错误

】将retfofit与MVVM一起使用时出现错误【英文标题】:IamgettingerrorwhileusingretfofitwithMVVM【发布时间】:2021-06-2514:48:22【问题描述】:我正在尝试使用带有MVVM架构的改造来获取数据。当我想在控制台上打印数据时,它可以工作。但是... 查看详情

将多个 Include() 与嵌套 Select() 一起使用时出现 EntityCommandExecutionException

】将多个Include()与嵌套Select()一起使用时出现EntityCommandExecutionException【英文标题】:EntityCommandExecutionExceptionwhenusingmultipleInclude()withnestedSelect()【发布时间】:2018-09-3017:23:31【问题描述】:我在MySQL中使用实体框架。假设我有以下... 查看详情