Skip to content

TFLite Support is a toolkit that helps users to develop ML and deploy TFLite models onto mobile / ioT devices.

License

Notifications You must be signed in to change notification settings

zesongw/tflite-support

 
 

Repository files navigation

This repo is a fork of the tflite-support repo, with the addition of the tflite_model_runner related code to show how it is built using bazel and emsdk.

  1. Add emscripten toolchain to the WORKSPACE file. This will set up emsdk and provide a useful build rule wasm_cc_binary that can be used to build WASM module from a cc_binary (see below).
  2. I also added a small patch for the com_google_glog library. Without it, the emscripten build will fail on Mac/Linux. The glog v0.5.0 release has a fix for this issue, but it requires some TFLite code refactoring. I will talk to the TFLite team about this. For now we will just use the patch.
  3. The cpp code is here.
    • tflite_model_runner.* implement the model runner.
    • tflite_model_runner_wasm.cc sets up the WASM related bindings.
    • The BUILD file uses the wasm_cc_binary rule to build the WASM module. It is currently linking with XNNPACK, with WASM SIMD and multi-threading turned on.
  4. The demo code is here. To run the demo:
    • Run yarn && yarn build in the demo directory. yarn build runs build.sh where you can see how the bazel build command is used and how to extract the output files.
    • Run yarn start to start the demo locally. It creates a model runner instance with the MobilenetV2 model and classfies an image. See the script.js file for details about how things are used from the JS side.
    • Since this build configuration is for SIMD+multi-threading, please make sure Chrome has these two features turned on from chrome://flags.
    • Run yarn run electron to start the demo in electron.js.
    • Run yarn run electron-packager to build an electron.js app of this demo.
  5. The WebNN delegate support
    • tensorflow_lite_webnn_delegate.patch: the WebNN delegate implementation.
    • emscripten_webnn_support.patch: WebNN support of emscripten.
    • emsdk.patch: workaround the frozen cache setting of emscripten so WebNN support can be regenerated. As the cache is cleared, the first yarn build would fail. Please rerun, it would succeed.
    • Add TFLiteWebModelRunnerOptions.enableWebNNDelegate to enable or disable WebNN delegate.
    • Demo in browser is using webnn-polyfill.
    • Demo in electron.js could use WebNN-native node.js binding for more details.

About

TFLite Support is a toolkit that helps users to develop ML and deploy TFLite models onto mobile / ioT devices.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • C++ 51.3%
  • Java 20.5%
  • Python 11.2%
  • Starlark 8.9%
  • Shell 2.5%
  • JavaScript 1.8%
  • Other 3.8%