off*_*555 11 python keras tensorflow
你知道用 1 个 GPU tensorflow 对 2 个 python 进程进行推理的优雅方法吗?
假设我有 2 个进程,第一个是分类猫/狗,第二个是分类鸟/飞机,每个进程运行不同的 tensorflow 模型并在 GPU 上运行。这 2 个模型将连续获得来自不同相机的图像。通常,tensorflow 会占用整个 GPU 的所有内存。所以当你开始另一个进程时,它会崩溃,说内存不足或卷积 CUDA 失败或类似的东西。是否有教程/文章/示例代码显示如何在不同进程中加载 2 个模型并同时运行?如果您在执行一些繁重的图形(例如玩游戏)时运行模型推理,这也非常有用。我也想知道运行模型如何影响游戏。
我试过使用 python 线程,它可以工作,但每个模型的预测速度要慢 2 倍(而且你知道 python 线程没有使用多个 CPU 内核)。我想使用 python Process 但它不起作用。如果您有几行代码示例,我将非常感激。
好的。我想我现在已经找到了解决方案。
我使用tensorflow 2,基本上有两种方法来管理GPU的内存使用。
您可以使用这两种方法,忽略所有有关内存不足的警告消息。我仍然不知道它到底意味着什么,但模型仍在运行,这就是我关心的。我测量了模型运行的确切时间,它比在 CPU 上运行要好得多。如果我同时运行两个进程,速度会下降一点,但仍然比在 CPU 上运行要好得多。
对于内存增长方法,我的 GPU 是 3GB,因此第一个进程尝试分配所有内容,然后第二个进程表示内存不足。但它仍然有效。
对于内存限制方法,我将限制设置为某个数字,例如 1024 MB。两个过程都有效。
那么您可以设置的正确最小数量是多少?
我尝试减少内存限制,直到发现我的模型可以在 64 MB 限制下正常工作。预测速度仍然与我将内存限制设置为 1024 MB 时相同。当我将内存限制设置为 32MB 时,我注意到速度下降了 50%。当我设置为 16 MB 时,模型拒绝运行,因为它没有足够的内存来存储图像张量。这意味着我的模型至少需要 64 MB,考虑到我有 3 GB 的空闲空间,这个空间很小。这也允许我在玩一些视频游戏时运行模型。
结论:我选择使用内存限制方法,限制为 64 MB。您可以在此处查看如何使用内存限制: https: //www.tensorflow.org/guide/gpu
我建议您尝试更改内存限制,以查看您的模型所需的最小值。当内存不足时,您会看到速度下降或模型拒绝运行。