【问题标题】:how can i train two tensorflow scripts on single gpu parallelly?如何在单个 gpu 上并行训练两个 tensorflow 脚本?
【发布时间】:2017-12-19 12:28:10
【问题描述】:

当我在单个 GPU 上运行 2 个 tensorflow 脚本时出现错误。 我已经尝试了增长和 GPU 内存分配步骤,但第一个脚本仍然执行没有问题,而第二个脚本失败并出现 ResourceExhaustedError ,图形会话创建错误。

请帮忙。

【问题讨论】:

  • 在此期间运行 nvidia-smi 会看到什么?

标签: tensorflow parallel-processing gpu multiple-instances


【解决方案1】:

首先分别运行每个程序进行几次迭代,然后检查nvidia-smi dmon 以查看该程序实际需要多少内存。然后根据你从nvidia-smi dmon 学到的内存信息,在你的会话配置中设置config.gpu_options.per_process_gpu_memory_fraction = ...。如果两者所需的内存大于您可用的内存,那么您将遇到此资源耗尽错误。

【讨论】:

  • 嗨,我正在使用脚本 config = tf.ConfigProto(allow_soft_placement=True) config.gpu_options.per_process_gpu_memory_fraction = 0.4 print('Checking the Training on a Single Batch...') 和 tf.Session (config=config) as sess: 在两个脚本中 =============================== # gpu pwr temp sm mem enc dec mclk pclk # Idx WC % % % % MHz MHz 0 138 46 74 43 0 0 2505 875 .. 0 139 47 84 48 0 0 2505 875 0 132 47 100 51 0 0 2505 771
  • i.e - 尽管我将 gpu_memory_fraction @ 0.4 限制为内存从 47-53%。我想这就是为什么第二个脚本(完全相同但由不同的用户运行)失败的原因。
  • 请您给点建议?
  • 另外我在两个脚本中都限制了 per_process_gpu_memory_fraction = 0.3,第二个脚本仍然失败。
  • 如果您的模型占用了 47%-53% 的 GPU,您至少需要分配这么多。如果这仍然不起作用,您可能在初始数据加载期间内存不足,具体取决于您的操作方式。如果您使用的是 tensorflor CSV 或原始文件数据加载器,您应该没问题。如果您正在使用 numpy 之类的东西读取不同的格式,然后使用 feed_dict,这可能会在开始时占用更多内存。
【解决方案2】:

您应该执行以下操作:

# don't allow cases where a single script takes up all VRAM
# this way we can try to run several scripts at the same time
config = tf.ConfigProto()
config.gpu_options.allow_growth = True

with tf.Session(config=config) as sess:
    ...

如果有人知道如何在一个脚本中并行训练两个图,请告诉我。

【讨论】:

    猜你喜欢
    • 2021-04-24
    • 1970-01-01
    • 2017-11-30
    • 2021-10-16
    • 2020-11-27
    • 1970-01-01
    • 2020-11-28
    • 2021-09-24
    • 1970-01-01
    相关资源
    最近更新 更多