Skip to main content

Highly optimized inference engine for binarized neural networks.

Project description

Larq Compute Engine

Larq Compute Engine (LCE) is a highly optimized inference engine for deploying extremely quantized neural networks, such as Binarized Neural Networks (BNNs). It currently supports various mobile platforms and has been benchmarked on a Pixel 1 phone and a Raspberry Pi. LCE provides a collection of hand-optimized TensorFlow Lite custom Ops for supported instruction sets, developed in inline assembly or in C++ using compiler intrinsics. LCE leverages optimization techniques such as tiling to maximize the number of cache hits, vectorization to maximize the computational throughput, and multi-threading parallelization to take advantage of multi-core modern desktop and mobile CPUs.

Key Features

  • Effortless end-to-end integration from training to deployment:

    • Tight integration of LCE with Larq and TensorFlow provides a smooth end-to-end training and deployment experience.

    • A collection of Larq pre-trained BNN models for common machine learning tasks is available in Larq Zoo and can be used out-of-the-box with LCE.

    • LCE provides a custom MLIR-based model converter which is fully compatible with TensorFlow Lite and performs additional network level optimizations for Larq models.

  • Lightning fast deployment on a variety of mobile platforms:

    • LCE enables high performance, on-device machine learning inference by providing hand-optimized kernels and network level optimizations for BNN models.

    • LCE currently supports ARM64-based mobile platforms such as Android phones and Raspberry Pi boards.

    • Thread parallelism support in LCE is essential for modern mobile devices with multi-core CPUs.

Performance

The table below presents single-threaded performance of Larq Compute Engine on multiple generations of Larq BNN models on the Pixel phone (2016) and (Raspberry Pi 4 BCM2711) board:

Model Accuracy Pixel, ms RPi 4 (BCM2711), ms
TODO TODO TODO TODO
TODO TODO TODO TODO
TODO TODO TODO TODO
TODO TODO TODO TODO

The following table presents multi-threaded performance of Larq Compute Engine on a Pixel 1 phone and a Raspberry Pi 4 board:

Model Accuracy Pixel, ms RPi 4 (BCM2711), ms
TODO TODO TODO TODO
TODO TODO TODO TODO
TODO TODO TODO TODO
TODO TODO TODO TODO

Benchmarked on February, TODO with LCE custom TFLite Model Benchmark Tool (see here) and BNN models with randomized weights and inputs.

Getting started

Follow these steps to deploy a BNN with LCE:

  1. Pick a Larq model

    You can use Larq to build and train your own model or pick a pre-trained model from Larq Zoo.

  2. Convert the Larq model

    LCE is built on top of TensorFlow Lite and uses TensorFlow Lite FlatBuffer format to convert and serialize Larq models for inference. We provide a LCE Converter with additional optimization passes to increase the speed of execution of Larq models on supported target platforms.

  3. Build LCE

    The LCE documentation provides the build instructions for Android and ARM64-based boards such as Raspberry Pi. Please follow the provided instructions to create a native LCE build or cross-compile for one of the supported targets.

  4. Run inference

    LCE uses the TensorFlow Lite Interpreter to perform an inference. In addition to the already available built-in TensorFlow Lite Ops, optimized LCE Ops are registered to the interpreter to execute the Larq specific subgraphs of the model. An example to create and build LCE compatible TensorFlow Lite interpreter in user's applications is provided here.

Next steps

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

larq_compute_engine-0.1.0rc1-cp37-cp37m-manylinux2010_x86_64.whl (5.2 MB view hashes)

Uploaded CPython 3.7m manylinux: glibc 2.12+ x86-64

larq_compute_engine-0.1.0rc1-cp37-cp37m-macosx_10_15_x86_64.whl (8.6 MB view hashes)

Uploaded CPython 3.7m macOS 10.15+ x86-64

larq_compute_engine-0.1.0rc1-cp36-cp36m-manylinux2010_x86_64.whl (5.2 MB view hashes)

Uploaded CPython 3.6m manylinux: glibc 2.12+ x86-64

larq_compute_engine-0.1.0rc1-cp36-cp36m-macosx_10_15_x86_64.whl (8.6 MB view hashes)

Uploaded CPython 3.6m macOS 10.15+ x86-64

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page