当前位置: 首页 > 面试题库 >

Python-如何防止张量流分配GPU内存的总量?

端木元青
2023-03-14
问题内容

我在共享计算资源的环境中工作,即,我们有几台服务器计算机,每台服务器计算机都配备了一些Nvidia Titan X GPU。

对于中小型模型,Titan X的12 GB通常足以让2-3个人在同一GPU上同时进行训练。如果模型足够小,以至于单个模型无法充分利用GPU的所有计算单元,那么与运行另一个训练过程相比,这实际上可以提高速度。即使在同时访问GPU确实减慢了单个训练时间的情况下,具有让多个用户同时在GPU上进行训练的灵活性仍然很好。

TensorFlow的问题在于,默认情况下,它在启动时会分配全部可用的GPU内存。即使对于小型的两层神经网络,我也看到所有12 GB的GPU内存都已用完。

如果有人知道对于一个给定的模型就足够了,有没有办法使TensorFlow只分配4 GB的GPU内存?


问题答案:

你可以tf.Session通过tf.GPUOptions在可选config参数中传递a 来设置构造a时要分配的GPU内存的比例:

# 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))

per_process_gpu_memory_fraction是同一台计算机上每个GPU上的进程将使用的GPU内存量的硬上限。当前,这部分被均匀地应用于同一台机器上的所有GPU。无法基于每个GPU进行设置。



 类似资料:
  • 我正在尝试使用我的GPU而不是CPU来训练一个自定义的对象检测模型。我遵循了以下教程中给出的所有说明:https://tensorflow-object-detection-api-tutorial.readthedocs.io/ 我已经测试了我的软件,一切都已安装并正常工作。 目前正在使用: Windows 10 但问题是,在训练几秒钟后,它停止使用GPU,并发出以下警告消息。 此外,我没有在我

  • 问题内容: 我们希望将ajax风格的服务嵌入到我们的许多网站中,每个网站都具有唯一的api密钥。我看到的问题是,由于api密钥存储在javascript文件中,因此用户可能会采用该密钥,欺骗http引荐来源网址,并在该api密钥下向api发出数百万个请求。 因此,我想知道Google如何防止Google Analytics(分析)欺骗?因为这使用几乎相同的想法。 我也对其他想法持开放态度,基本上这

  • 我刚刚意识到,当只有一个消费群体存在时,XACK不会自动删除消息。 我以为当所有的消费者组都收到相同的消息时,消息会被Redis-server删除,但似乎不是这样。 因此,Redis流内存无限增加,因为没有消息会被删除。 也许防止这种情况的唯一方法是手动发送XDEL消息?但我怎么知道所有的消费者群体都接受了这个信息呢? 需要一些帮助,谢谢!

  • 本文向大家介绍Nginx防止流量攻击的配置详解,包括了Nginx防止流量攻击的配置详解的使用技巧和注意事项,需要的朋友参考一下 使用场景 最近在工作中遇到一个问题,项目中报告查询系统负载均衡集群相关配置已经完成,两种实现方式分别是基于Ehcache和Redis的session管理策略。 大家都知道服务器资源有限的,但是客户端来的请求是无限的(不排除恶意攻击), 为了保证大部分的请求能够正常响应,不

  • 分配张量时如何解决ResourceExhaustedError: OOM的问题? ResourceExhaustedError(回溯见上文):使用形状分配张量时OOM[10000,32,28,28] 我包含了几乎所有的代码 错误中引用的行是: 快跑。。在训练循环中 下面列出了我从调试器输出复制的更多错误(有更多行,但我认为这些是主要错误,其他错误是由此引起的…) tensorflow.python

  • 问题内容: 我们知道node.js为我们提供了强大的功能,但强大的功能带来了巨大的责任。 据我所知,V8引擎不进行任何垃圾收集。因此,我们应该避免什么最常见的错误,以确保没有内存从节点服务器泄漏。 编辑: 对不起,V8确实具有强大的垃圾收集器。 问题答案: 据我所知,V8引擎不进行任何垃圾收集。 V8内置了强大而智能的垃圾收集器。 您的主要问题是不了解闭包如何维护对外部函数的范围和上下文的引用。这