gpt4 book ai didi

tensorflow - 了解 tensorflow 内部/内部并行线程

转载 作者:行者123 更新时间:2023-12-03 22:20:28 27 4
gpt4 key购买 nike

我想更多地了解这两个参数:intra 和 inter op parallelism threads

session_conf = tf.ConfigProto(
intra_op_parallelism_threads=1,
inter_op_parallelism_threads=1)

我读了这篇文章,其中有一个很好的解释: TensorFlow: inter- and intra-op parallelism configuration

但我正在寻求确认并在下面提出新问题。我在 keras 2.0.9、tensorflow 1.3.0 中运行我的任务:
  • 当两者都设置为 1 时,是否意味着,例如在具有 4 个内核的计算机上,四个内核将只共享 1 个线程?
  • 为什么在速度方面使用 1 个线程似乎对我的任务影响不大?我的网络具有以下结构:dropout、conv1d、maxpooling、lstm、globalmaxpooling、dropout、dense。上面引用的帖子说,如果有很多矩阵乘法和减法运算,使用多线程设置会有所帮助。我对下面的数学知之甚少,但我想我的模型中有很多这样的矩阵运算?但是,将两个参数从 0 设置为 1 只会在 10 分钟的任务中看到 1 分钟的减速。
  • 为什么多线程可能是不可重现结果的来源?见 Results not reproducible with Keras and TensorFlow in Python .这是我在做科学实验时需要使用单线程的主要原因。当然,随着时间的推移,tensorflow 一直在改进,为什么在发布中没有解决这个问题?

  • 提前谢谢了

    最佳答案

  • 当两个参数都设置为 1 时,将有 1 个线程在 4 个内核中的 1 个上运行。它运行的核心可能会改变,但一次总是 1。
  • 当并行运行某些东西时,总会在通信上的损失时间和通过并行化获得的时间之间进行权衡。根据使用的硬件和特定任务(如矩阵的大小),加速会发生变化。有时并行运行某些东西甚至比使用一个内核还要慢。
  • 例如在 CPU 上使用浮点数时,(a + b) + c将不等于 a + (b + c)因为浮点精度。使用多个并行线程意味着类似 a + b + c 的操作不会总是以相同的顺序计算,导致每次运行的结果不同。然而,这些差异非常小,在大多数情况下不会影响整体结果。完全可重现的结果通常只用于调试。强制执行完全可重复性会大大减慢多线程的速度。
  • 关于tensorflow - 了解 tensorflow 内部/内部并行线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47548145/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com