WebNN Polyfill
A JavaScript implementation of the Web Neural Network API.
Backends
The implementation of this webnn-polyfill is based on TensorFlow.js that supports following 3 backends.
- TensorFlow.js CPU Backend, pure-JS backend for Node.js and the browser.
- TensorFlow.js WebGL Backend, WebGL backend for the browser.
- TensorFlow.js WASM Backend, WebAssembly backend for the browser.
If not set, tests under the webnn-polyfill use CPU as default backend, as which has higher numerical precision than other backends. Tests may fail under WASM backend as some ops have not been implemented/supported in WASM backend.
- For node test, we only support CPU backend.
- For browser test, you can set backend by passing a URL parameter:
backend
, it acceptscpu
,webgl
andwasm
. e.g.?backend=webgl
.
If not set, the built webnn-polyfill.js
uses WebGL as default backend, you can set backend by referring to following code snippet:
const backend = 'cpu';
const tf = navigator.ml.createContext().tf;
await tf.setBackend(backend);
await tf.ready();
Build and Test
Setup
> git clone --recurse-submodules https://github.com/webmachinelearning/webnn-polyfill
> cd webnn-polyfill & npm install
Build
Development build
> npm run build
Production build
> npm run build-production
Test
Run tests in node.js.
> npm test
Run tests in web browser.
> npm start
Open the web browser and navigate to http://localhost:8080/test
Run only CTS tests in node.js.
> npm run test-cts
Run only CTS tests in web browser.
> npm start
Open the web browser and navigate to http://localhost:8080/test/cts.html
Other scripts
Build docs
> npm run build-docs
Lint
> npm run lint
Format
> npm run format
Start dev server
> npm run dev
Watch files
> npm run watch
License
This project is following Apache License Version 2.0.