summaryrefslogtreecommitdiff
path: root/docs/nnfw/roadmap.md
diff options
context:
space:
mode:
Diffstat (limited to 'docs/nnfw/roadmap.md')
-rw-r--r--docs/nnfw/roadmap.md76
1 files changed, 76 insertions, 0 deletions
diff --git a/docs/nnfw/roadmap.md b/docs/nnfw/roadmap.md
new file mode 100644
index 000000000..c04bab66b
--- /dev/null
+++ b/docs/nnfw/roadmap.md
@@ -0,0 +1,76 @@
+This document describes roadmap of 2019 NN Runtime (or _nnfw_) project.
+
+# Goal
+
+This project _nnfw_ aims at providing a high-performance, on-device neural network (NN) inference
+framework that performs inference of a given NN model on processors, such as CPU, GPU, or NPU, in
+the target platform, such as Tizen and Android.
+
+Last year in 2018, we already saw significant gains in accelerating with a single CPU or GPU
+back-end. Now we want to gain more benefits by using a mixture of CPU and GPU according to each
+operation characteristic. It could give us an opportunity to have a high degree of freedom in terms
+of operator coverage, and possibly provide better performance compared to single back-end
+acceleration.
+
+On the other hand, we are going to introduce a new compiler to the front-end. This will support a
+variety of deep learning frameworks in relatively spacious host PC environments, while the runtime
+running on the target device is intended to take a smaller burden. In this process, the compiler and
+the runtime will effectively share information among themselves by the Common IR, which is referred
+to as the NN Package.
+
+# Architecture
+
+![nnfw_architecture](./fig/nnfw_architecture.png)
+
+The figure above illustrates the overall architecture and scope of _nnfw_, along with _nncc_, a
+sibling project, to help understand. In this document, we will deal specifically with _nnfw_.
+
+The _nnfw_ can be divided into three parts which is NN API and NN Runtime, as well as NN Compute
+that is provided by the platform.
+
+1. NN API
+ - Provide a common interface to application.
+ - Last year, Android NN API was selected for seamless integration with TF Lite. As long as our
+ NN runtime provides Android NN API as an interface, TF Lite can link to our NN runtime without
+ any modification.
+ - In choosing Android NN API, we expected standardization and rapid adoption. But the results
+ were far less than that. We could not control its specifications, and its growth rate was too
+ slow to accommodate our needs. So we try to define our own new one, NN Runtime API, in this
+ year. (Once the new API is stable, we provide a way to replace the Android NN API and it will
+ naturally be deprecated.)
+1. NN Runtime
+ - It already provides significant performance improvements using CPU or GPU acceleration. Now we
+ want to add the flexibility to this by providing various functions suitable to specific device
+ configuration.
+ - Mixed back-end acceleration enables various usage scenarios according to device-specific CPU
+ or GPU configurations and usage conditions.
+ - By introducing an interpreter, it will respond to dynamic conditions that the compiler can not
+ handle, and will effectively utilize the memory through the memory manager.
+1. NN Compute
+ - Provide computation acceleration library, such as ACL, or device driver for NPU.
+ - This layer will be provided by OS platform, and we will use the library or device driver as it
+ is. We may request a specific version to the Platform team, but we don't expect we will be
+ modifying the library.
+ - In this year, we will also introduce an extension mechanism to support custom operations on
+ this part.
+
+# Deliverables
+
+- On-Device AI SW stack for Tizen
+ + Advanced runtime support with interpreter, memory manager, and execution planner.
+ + Provides back-end flexibility, such as CPU/GPU mixed acceleration
+ + Well designed custom op support.
+ + Basic infrastructure for NPU support.
+- Specification and implementation of Common IR and Runtime API
+
+# Milestones
+
+- [Project Milestones](https://github.sec.samsung.net/orgs/STAR/projects/1)
+- [Monthly Milestones](https://github.sec.samsung.net/STAR/nnfw/projects/25)
+
+# Workgroups (WGs)
+
+- We organize WGs for major topics, and each WG will be working on its own major topic by breaking
+ it into small tasks/issues, performing them inside WG, and collaborating between WGs.
+- The WG information can be found [here](workgroups.md).
+