summaryrefslogtreecommitdiff
path: root/docs/release/release_note_1.0.0.md
blob: e5f58d1fa75092278fc2feff2ee49d34624b9844 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
# NNAS 1.0.0 Release Note
Welcome to the first release of NNAS !

## Feature Highlights

- `nnpackage` : package format for NNAS 
- `nncc` : compiler collection for converting neural network model to `nnpackage`
    - Currently supports 28 operations and 3 models
    - Model optimization
- `nnfw` : on-device runtime for runnning `nnpackage` on multiple devices
    - Currently supports 63 operations
    - Heterogeneous Execution
    - (Experimental) Support custom operation

## nnpackage
`nnpackage` is our new package format for handling various formats easily in NNAS.

Please refer to `nnpackage`'s [spec documentation](https://github.sec.samsung.net/STAR/nnfw/blob/master/nnpackage/spec) for the details.

## nncc

### Guide
- Compilation tutorial : [inception_v3 compilation](https://github.sec.samsung.net/STAR/nnfw/blob/master/docs/nncc/v1.0.0/tutorial.md)
- Detailed compilation guide : [getting started](https://github.sec.samsung.net/STAR/nnfw/blob/master/docs/nncc/v1.0.0/getting_started.md)

### Supported Operations and Models

#### Operations
Compiler supports total [28 operations](https://github.sec.samsung.net/STAR/nnfw/blob/master/docs/nncc/v1.0.0/operation-list.md).

#### Models
_Note that compiler does not support quantized model(e.g. QASYMM8) yet._

Officially, compiler supports the following models : 
- Inception V3 (FLOAT32 model)
- MobileNet V1 (FLOAT32 model)
- Style Transfer (FLOAT32 model)


### Model Optimizations
- Constant Folding
- Remove dead operation
- Remove `Identity`
- Resolve duplicate `Reshape`
- Resolve redundant `Reshape`
- Merge `Concat`
- Fuse some fusible operations

## nnfw

### Guide
- User can run own app with nnpackage via [nnfw API](https://github.sec.samsung.net/STAR/nnfw/blob/master/runtime/neurun/api/include/nnfw.h). You can find a guide in [Usage guide](https://github.sec.samsung.net/STAR/nnfw/blob/master/docs/nnfw/howto). 
- For building an app with nnfw API, a minimal sample app is also provided at [minimal app](https://github.sec.samsung.net/STAR/nnfw/blob/master/runtime/neurun/sample/minimal). 

### Target Devices
Runtime does not restrict which target devices your app can run on as far as our backends support the target devices. However, dev team uses [odroid-xu4](https://www.hardkernel.com/shop/odroid-xu4-special-price/) as a reference target. For setting odroid-xu4 board, you can find a guide on [arm Ubuntu guide](https://github.sec.samsung.net/STAR/nnfw/blob/master/docs/nnfw/howto/device/xu4_ubuntu.md) and [arm Tizen guide](https://github.sec.samsung.net/STAR/nnfw/blob/master/docs/nnfw/howto/device/xu4_tizen.md).

### Supported Operations
Runtime supports 63 NN operations. Note that operation coverage differs per backend. Please refer to [Runtime OP table](https://github.sec.samsung.net/STAR/nnfw/blob/master/docs/nnfw/op_list.md) for full list.

### Heterogeneous Execution
Runtime provides 4 backends : CPU, Compute Library OpenCL(acl_cl), Compute Library NEON(acl_neon), SRCN. Each backend has their own characteristic. In order to exploit the characteristic, runtime provides a way to assign specific backend at operation level. Please see `nnfw_set_op_backend` function of [nnfw API](https://github.sec.samsung.net/STAR/nnfw/blob/master/runtime/neurun/api/include/nnfw.h) for details. For concrete example, refer to [minimal app](https://github.sec.samsung.net/STAR/nnfw/blob/master/runtime/neurun/sample/minimal), please.

### (Experimental) Custom Operator
If your model has unsupported operation by runtime, you can still run this model with custom operator. Custom operator allows for users to provide your own implementation of such operations. For more details, refer to [custom operator documentation](https://github.sec.samsung.net/STAR/nnfw/blob/master/nnpackage/spec/30_custom_op.md). Note that this feature is experimental and subject to change.