tensorflow 会话究竟做了啥?
Posted
技术标签:
【中文标题】tensorflow 会话究竟做了啥?【英文标题】:What does a tensorflow session exactly do?tensorflow 会话究竟做了什么? 【发布时间】:2017-11-02 13:21:49 【问题描述】:我安装了 tensorflow 的 gpu 版本,一旦我创建会话,它就会显示这个日志:
I tensorflow/core/common_runtime/gpu/gpu_device.cc:885] 找到设备 0 具有属性:名称:GeForce GTX TITAN Black 主要:3 次要:5 memoryClockRate (GHz) 0.98 pciBusID 0000:01:00.0 总内存:5.94GiB 可用内存:5.31GiB I 张量流/核心/common_runtime/gpu/gpu_device.cc:906] DMA:0 我 张量流/核心/common_runtime/gpu/gpu_device.cc:916] 0:是我 tensorflow/core/common_runtime/gpu/gpu_device.cc:975] 创建 TensorFlow 设备 (/gpu:0) -> (设备: 0, 名称: GeForce GTX TITAN 黑色,pci总线id:0000:01:00.0)
当我检查我的 GPU 内存使用情况时,大约 90% 的内存被消耗了。
Tensorflow 文档对此没有任何说明。它可以控制gpu吗?为什么会占用大部分内存?
【问题讨论】:
我不知道 tf.Session() 到底是做什么的,但是关于 GPU 的内存分配,看看答案和链接在***.com/questions/44278021/… @PietroTortella 谢谢。我有一个问题要问你,我是通过尝试在单个脚本中执行 tensorflow、PyTorch、caffe 来完成这篇文章的。当我尝试在同一个脚本中将 Session 作为全局变量时,它给了我一个错误current context was not created by the StreamExecutor
但是当我在函数中创建这个 Session 时我没有看到它。你知道出了什么问题吗?这就是为什么我想知道 Session 到底在做什么。
【参考方案1】:
TensorFlow 会话在启动时分配~所有 GPU 内存,因此它们可以绕过 cuda 分配器。
不要在同一个进程中运行多个使用 cuda 的库,否则会发生奇怪的事情(比如这个流执行器错误)。
【讨论】:
感谢您的回答。那么这是否像一个 tensorflow 特定问题?因为我一直在同一个脚本中运行其他机器学习库,我没有发现任何问题。 您可能看不到错误,但 cuda 上下文可能会发生一些奇怪的事情。以上是关于tensorflow 会话究竟做了啥?的主要内容,如果未能解决你的问题,请参考以下文章
setUseWideViewPort() 和 setLoadWithOverviewMode() 究竟做了啥?
Hasmorepages PrintPageEventArgs 属性究竟做了啥?