Tensorflow.js 个不使用 GPU 的示例
Tensorflow.js examples not using GPU
我安装了 NVIDIA RTX 2070 GPU 和 CUDA,我有 WebGL support, but when I run the various TFJS examples, such as the Addition RNN Example or the Visualizing Training Example,我看到我的 CPU 使用率达到 100%,但 GPU(通过 nvidia-smi
计量)永远不会习惯。
我该如何解决这个问题?我没有看到任何关于找不到 GPU 的控制台消息。 TFJS 文档对此非常含糊,只说如果支持 WebGL 则使用 GPU,否则如果找不到 WebGL 则回退到 CPU。但同样,WebGL 正在运行。那么...如何帮助它找到我的 GPU?
其他相关的 SO 问题似乎是关于 tfjs-node-gpu, e.g., getting one's own tfjs-node-gpu installation 工作的。这不是关于那个。
我说的是 运行 来自我浏览器的官方 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
基本解决了。我发现 this older post,需要检查 WebGL 是否正在使用 "real" GPU 或只是 CPU 的一些英特尔集成图形分支。
为此,转到 https://alteredqualia.com/tmp/webgl-maxparams-test/ 并向下滚动到最底部,然后查看 Unmasked Renderer
和 Unmasked Vendor
标签。
就我而言,这些显示的是英特尔,而不是我的 NVIDIA GPU。
我的 System76 笔记本电脑能够在 "Hybrid Graphics" 模式下 运行,在这种模式下,大型计算在 GPU 上执行,而较小的东西,如 GUI 元素 运行 在集成显卡上执行。 (这可以节省电池寿命。)但是虽然某些应用程序能够在混合图形模式下利用 GPU - 我只是 运行 一个很棒的 Adversarial Latent AutoEncoder demo 在混合图形模式下使我的 GPU 达到极限——并非全部。 Chrome 显然是后者的一个例子。
为了让 WebGL 看到我的 NVIDIA GPU,我需要在 "full NVIDIA Graphics" 模式下重新启动我的系统。
这次重启后,一些TFJS例子会使用GPU,比如Visualizing Training example, which now trains almost instantly instead of taking a few minutes to train. But the Addition RNN example仍然只使用CPU. 这可能是因为@edkeveked 指出缺少后端声明。
我安装了 NVIDIA RTX 2070 GPU 和 CUDA,我有 WebGL support, but when I run the various TFJS examples, such as the Addition RNN Example or the Visualizing Training Example,我看到我的 CPU 使用率达到 100%,但 GPU(通过 nvidia-smi
计量)永远不会习惯。
我该如何解决这个问题?我没有看到任何关于找不到 GPU 的控制台消息。 TFJS 文档对此非常含糊,只说如果支持 WebGL 则使用 GPU,否则如果找不到 WebGL 则回退到 CPU。但同样,WebGL 正在运行。那么...如何帮助它找到我的 GPU?
其他相关的 SO 问题似乎是关于 tfjs-node-gpu, e.g., getting one's own tfjs-node-gpu installation 工作的。这不是关于那个。 我说的是 运行 来自我浏览器的官方 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
基本解决了。我发现 this older post,需要检查 WebGL 是否正在使用 "real" GPU 或只是 CPU 的一些英特尔集成图形分支。
为此,转到 https://alteredqualia.com/tmp/webgl-maxparams-test/ 并向下滚动到最底部,然后查看 Unmasked Renderer
和 Unmasked Vendor
标签。
就我而言,这些显示的是英特尔,而不是我的 NVIDIA GPU。
我的 System76 笔记本电脑能够在 "Hybrid Graphics" 模式下 运行,在这种模式下,大型计算在 GPU 上执行,而较小的东西,如 GUI 元素 运行 在集成显卡上执行。 (这可以节省电池寿命。)但是虽然某些应用程序能够在混合图形模式下利用 GPU - 我只是 运行 一个很棒的 Adversarial Latent AutoEncoder demo 在混合图形模式下使我的 GPU 达到极限——并非全部。 Chrome 显然是后者的一个例子。
为了让 WebGL 看到我的 NVIDIA GPU,我需要在 "full NVIDIA Graphics" 模式下重新启动我的系统。
这次重启后,一些TFJS例子会使用GPU,比如Visualizing Training example, which now trains almost instantly instead of taking a few minutes to train. But the Addition RNN example仍然只使用CPU. 这可能是因为@edkeveked 指出缺少后端声明。