4Manuals

  • PDF Cloud HOME

Tensorflow多线程推理比单线程推理慢 Download

    如何将文本边界框与pyplot.Rectangle对齐? 导入类问题 在Python数据框中选择列时出错 使用Rabbit的pika确认消息 如何在按住键的同时暂停VideoStream? Python OpenCV TypeError:无法处理此数据类型 使用buildozer不会下载sdl2_image SMTPSenderRefused,421,超出超时 关于python中变量的困惑。 python如何使用变量? 当使用pyodbc时,SQL Server DateTimeOffset将可识别tz的日期时间的偏移更改为系统偏移

我正在尝试通过3个Tensorflow会话(使用3个线程)实现多线程推理,如下所示:

const aside = document.querySelector('aside')
const hr = document.querySelector('hr')

const options = {
  root: null,
}

const obs = new IntersectionObserver((entries, observer) => {
  entries.forEach(entry => {
    aside.classList.toggle('scrolled', !entry.isIntersecting)
  })
})

obs.observe(hr);

我计时了每个线程的持续时间,结果如下:

线程0的持续时间:0.478595900000073

线程1持续时间:0.4760909999999967

线程2持续时间:0.47291089999998803

3个线程的总持续时间:0.4847196000000622

然后我将其与只是依次运行推理(以下时间)进行比较:

迭代0持续时间:0.1481448999998065

迭代1持续时间:0.1493705999996564

迭代2持续时间:0.14735560000008263

迭代总持续时间:0.44588549999980387

在我看来,我的多线程推理实际上并未并行运行推理。似乎它只是在完成大部分推论,然后等到所有其他推论都完成之后,才一个接一个地完成它们。我了解在大多数情况下,对于Python,这是因为并非每个线程都释放GIL,但我读过Tensorflow session.run()确实释放了GIL(因此可以并行运行)。

有人能让我知道我对此的解释吗?我实际上缺少使线程并行运行的条件(假设它们不是)?

1 个答案:

答案 0 :(得分:0)

此问题很可能是由于创建线程并等待它们完成所产生的开销。为了测试这一点,我建议增加操作中放入的数据量,以增加每个线程的持续时间,以查看对于足够大的数据集,并行运行是否开始比顺序运行快。

请注意,将数据分组在一起并通过单个会话运行它可能会更快,因为图形操作已经在Tensorflow内部并行化了。以我使用线程和Tensorflow的经验,无法获得预期的性能。



Similar searches
    在fedora上为多个用户安装anaconda 关于wpf中ScrollBar皮肤的问题 我在python中有一个方法/函数,我正在尝试获取一个返回值,然后可以将其用作另一个函数中的变量 Redisearch总回报率各组前5名 将TFLite模型加载到Flutter时遇到问题(带有文件路径的问题)