/webml-polyfill

A polyfill for Web Neural Network (WebNN) API

Primary LanguagePythonApache License 2.0Apache-2.0

Web Machine Learning

Web Neural Network (WebNN) API polyfill and examples

A polyfill for Web Neural Network (WebNN) API with computer vision and natural language processing examples.

The Web Neural Network (WebNN) API is a dedicated low-level API for neural network inference hardware acceleration. It is worked on in the W3C Machine Learning for the Web Community Group.

Project Build Status

MacOS Linux Windows
Build Status CircleCI Build status

Examples

WebNN API Examples QR Code

Supported Backends

  • Polyfill
    • WASM: TensorFlow.js WebAssembly backend builds on top of the XNNPACK library
    • WebGL: TensorFlow.js GPU accelerated WebGL backend
    • WebGPU: WIP
  • WebNN: Web Neural Network (WebNN) API

Run example with hardware accelerated WebNN backend

If you are interested, please refer to WebNN Chromium build repo and WIKI:

Benchmarks

  • Web AI Workload Use this tool to collect the performance-related metrics (inference time, etc) of various models and kernels on your local device with Wasm, WebGL, or WebNN backends. The Web AI Workload also supports to measure the OpenCV.js DNN performance with Wasm, Wasm Threads and Wasm SIMD.
  • OpenCV.js Performance Test Use this tool to collect the OpenCV.js performance for image processing with Wasm, Wasm Threads and Wasm SIMD.

Building & Testing

Install

$ npm install

Start

$ npm start

# Start an HTTPS server
$ HTTPS=true npm start

Build

$ npm run build

# Production build
$ NODE_ENV=production npm run build

# WASM backend build:
$ npm run build-wasm

Test

$ npm start

Open browser and navigate to http://localhost:8080/test

Watch

$ npm run watch

License

This project is following Apache License Version 2.0.

Documents in test/wpt/resources are licensed by the W3C 3-clause BSD License.