不使用 GPU 的 Tensorflow.js 示例

sh3*_*211 5 gpu tensorflow tensorflow.js

我安装了 NVIDIA RTX 2070 GPU 和 CUDA,我有WebGL 支持,但是当我运行各种 TFJS 示例时,例如Addition RNN ExampleVisualizing Training Example,我看到我的 CPU 使用率达到 100%,但 GPU (通过nvidia-smi)计量从未被使用。

我该如何解决这个问题?我没有看到任何有关找不到 GPU 的控制台消息。TFJS 文档对此非常含糊,只说如果支持 WebGL,它会使用 GPU,否则如果找不到 WebGL,则回退到 CPU。但同样,WebGL 正在发挥作用。那么...如何帮助它找到我的 GPU?

其他相关的 SO 问题似乎是关于tfjs-node-gpu,例如,让自己的 tfjs-node-gpu 安装工作。这不是关于那个。我说的是从我的浏览器在官方 TFJS 页面上运行主要的 TFJS 示例。

浏览器是适用于 Linux 的最新 Chrome。运行 Ubuntu 18.04。

编辑:由于有人会问,chrome://gpu显示启用了硬件加速。输出日志相当长,但这是顶部:

Graphics Feature Status
Canvas: Hardware accelerated
Flash: Hardware accelerated
Flash Stage3D: Hardware accelerated
Flash Stage3D Baseline profile: Hardware accelerated
Compositing: Hardware accelerated
Multiple Raster Threads: Enabled
Out-of-process Rasterization: Disabled
OpenGL: Enabled
Hardware Protected Video Decode: Unavailable
Rasterization: Software only. Hardware acceleration disabled
Skia Renderer: Enabled
Video Decode: Unavailable
Vulkan: Disabled
WebGL: Hardware accelerated
WebGL2: Hardware accelerated
Run Code Online (Sandbox Code Playgroud)

sh3*_*211 7

基本解决了。我发现了这篇较旧的帖子,需要检查 WebGL 是使用“真正的”GPU 还是 CPU 的一些英特尔集成图形分支。

为此,请转到https://alteredqualia.com/tmp/webgl-maxparams-test/并向下滚动到最底部并查看Unmasked RendererUnmasked Vendor标记。

就我而言,这些显示的是 Intel,而不是我的 NVIDIA GPU。

我的 System76 笔记本电脑能够在“混合图形”模式下运行,其中在 GPU 上执行大量计算,但在集成图形上运行诸如 GUI 元素之类的小东西。(这可以节省电池寿命。)但是虽然某些应用程序能够在混合图形模式下利用GPU——我刚刚运行了一个很棒的对抗性潜在自动编码器演示,它在混合图形模式下最大限度地发挥了我的GPU——并不是所有的. Chrome 显然是后者的一个例子。

为了让 WebGL 看到我的 NVIDIA GPU,我需要以“完整的 NVIDIA 图形”模式重新启动我的系统。

重新启动后,一些 TFJS 示例将使用 GPU,例如可视化训练示例,现在几乎可以立即进行训练,而不是花费几分钟进行训练。 但是Addition RNN 示例仍然只使用 CPU。这可能是因为缺少@edkeveked 指出的后端声明。

  • 我不必将整个系统设置为 NVIDIA 模式。相反,我转到 Windows 设置应用程序中的“图形设置”,找到 chrome 可执行文件,并将其设置为使用高性能图形适配器。然后我重新启动 Chrome,它就工作了。 (3认同)