使用TensorFlow.js调用WebGPU时出现的问题
-
问题背景
各位大佬,我目前在尝试使用TensorFlow.js在浏览器上实现神经网络的inference。希望使用TensorFlow.js调用其实现的WebGPU backend来使用WebGPU做神经网络的inference。
问题复现
软件
我使用TensorFlow.js的官方MobileNet example (源码) 来尝试。
由于原版的example没有使用WebGPU backend,因此我将其index.js
的前几句改为import * as tf from '@tensorflow/tfjs'; import '@tensorflow/tfjs-backend-webgpu' import { IMAGENET_CLASSES } from './imagenet_classes'; tf.setBackend('webgpu');
硬件
MacBook Pro M1 Max (with built-in GPU) + Google Chrome Canary (106.0.5205.0)
问题
我本地使用npm构建并本地serve来运行上述案例。
正常的运行没有问题,但是在命令行中有如下提示:This device doesn't support timestamp-query extension. Start Chrome browser with flag --disable-dawn-features=disallow_unsafe_apis then try again. Or zero will shown for the kernel time when profiling mode isenabled. Using performance.now is not workable for webgpu since it doesn't support synchronously to read data from GPU.
即使我按照其说明的,在启动Google Chrome Canary时使用
./Google Chrome Canary --args --disable-dawn-features=disallow_unsafe_apis
来启动,仍然会有如上提示。请问大家是否能够遇到同样的问题?是否有解决的方法?
-
-
这个问题,可以去 tf.js github 的 issue 里提
-
据我们所知,tf.js 正在进行基于 webgpu 的 backend 的开发,因为 webgpu 完全异步的架构,基本上是重构了整个 tf.js,大概率会有很多 API 或 用法上的区别,所以肯定不是简单
setBackEnd('webgpu')
就可以解决的,最好等他们发布官方版本后再尝试
另外,确实 WebGPU API 本身变化很大,好多功能还没有支持,像
timestamp-query
我不确定 chrome 是否加入了,目前应该是没有支持,即使加了参数也不行 -