Deep-learning Designer: Deep-Learning Training Optimization & Layers API(like Keras)
Project description
[DDesigner API] Deep-learning Designer API
1. About
1.1. DDesignerAPI?
It is a API for deep-learning learning and inference, and an API for application development using multi-platform
1.2. Functions
1.2.1. Layers and Blocks
- Accelerator enabled layers and the ability to define special layers that are not defined in Keras and others
- A function that defines a combination of layers as a block and easily composes a block (ex. CONV + BN + ACT + DROPOUT= ConvBlock)
1.2.2. Optimization for Accelerator Usage (XWN)
- Optimized function to use accelerator
2. Support
2.1. Platforms
- Tensorflow 2.6.0
- PyTorch 1.13.1
2.2. Components of Network
2.2.1. Layers
- Accelerator enabled layers and Custom layers that perform specific functions
2.2.1.1. Summary
Operation | Support Train Platform | Support TACHY Accelerator |
---|---|---|
Convolution | TF/Keras/PyTorch | O |
TransposeConvolution | TF/Keras/PyTorch | O |
FullyConnected | TF/Keras/PyTorch | O |
CascadeConvolution | TF/Keras/PyTorch | O |
SqeezeAndExcitation | Keras | X |
SubPixelConv | Keras | X |
2.2.1.2. Detail
- Convolution : 1D, 2D with XWN optimization
- TransposeConvolution : 1D, 2D with XWN optimization
- FullyConnected : Dense or matmul operation
- CascadeConvolution : A Layer that decomposes a layer with large kernel into multiple layers with smaller kernels to lighten the model
- SqeezeAndExcitation : [arXiv:1709.01507], support 1D, 2D
- SubPixelConv : Layer with scale-up function. support 2D only. (CONV + Depth2Space)
2.2.2. Blocks
- A set of defined layers for user convenience
2.2.2.1. Summary
Platform | ConvBlock | TConvBlock | FCBlock |
---|---|---|---|
TF-Keras | 1D/2D | 2D | O |
2.2.2.2. Detail
- ConvBlock : Convolution N-D Block (CONV + BN + ACT + DROPOUT), support Conv1DBlock, Conv2DBlock
- TConvBlock : Transpose Convolution 2D Block (TCONV + BN + ACT + DROPOUT), support TConv2DBlock
- FCBlock : FullyConnected Block (FC + BN + ACT + DROPOUT)
2.3. XWN (Applies only to convolution operations)
2.3.1. Transform Configuration (data type / default value / description)
- transform : bool / False / Choose whether to use
- bit : int / 4 / Quantization range (bit-1 ** 2)
- max_scale : float / 4.0 / Max value
2.3.2. Pruning Configuration
- pruning : bool / False / Choose whether to use
- prun_weight : float / 0.5 / Weights for puning edge generation
2.3.3. Summary
Platform | Conv | TransposeConv |
---|---|---|
TF | 1D/2D | 1D/2D |
TF-Keras | 1D/2D | 1D/2D |
PyTorch | 1D/2D | 1D/2D |
3. Command Usage
3.1. Blocks
3.1.1. Keras
3.1.1.1. Conv1DBlock
>>> from ddesigner_api.tensorflow import dpi_blocks as db
>>> dtype='mixed_float16'
>>> db.Conv1DBlock(
64, 3, strides=1, padding='SAME', use_bias=False,
activation=tf.keras.layers.ReLU(dtype=dtype),
batchnormalization=tf.keras.layers.BatchNormalization(dtype=dtype),
dtype=dtype,
transform=4, max_scale=4.0,
pruning=0.5
)
3.1.1.2. Conv2DBlock
>>> from ddesigner_api.tensorflow import dpi_blocks as db
>>> dtype='mixed_float16'
>>> db.Conv2DBlock(
64, (3,3), strides=(1,1), padding='SAME', use_bias=False,
activation=tf.keras.layers.ReLU(dtype=dtype),
batchnormalization=tf.keras.layers.BatchNormalization(dtype=dtype),
dtype=dtype,
transform=4, max_scale=4.0,
pruning=0.5
)
3.1.1.3. FCBlock
>>> from ddesigner_api.tensorflow import dpi_blocks as db
>>> dtype='mixed_float16'
>>> db.FCBlock(
64, use_bias=False,
activation=tf.keras.layers.ReLU(dtype=dtype),
dtype=dtype,
)
3.1.1.4. TConv2DBlock
>>> from ddesigner_api.tensorflow import dpi_blocks as db
>>> dtype='mixed_float16'
>>> db.TConv2DBlock(
64, (3,3), strides=(2,2), padding='SAME', use_bias=False,
activation=tf.keras.layers.ReLU(dtype=dtype),
batchnormalization=tf.keras.layers.BatchNormalization(dtype=dtype),
dtype=dtype,
transform=4, max_scale=4.0,
pruning=0.5
)
3.2. XWN
3.2.1. Tensorflow
>>> from ddesigner_api.tensorflow.xwn import tf_nn as nn
>>> nn.conv2d(
x,
kernel,
...
use_transform=True,
bit=4,
max_scale=4.0,
use_pruning=False
)
3.2.2. Keras
>>> from ddesigner_api.tensorflow.xwn import keras_layers as klayers
>>> klayers.Conv2D(
2, 3,
...
use_transform=True,
bit=4,
max_scale=4.0
use_pruning=True,
prun_weight=0.5
)
3.2.3. PyTorch
>>> from ddesigner_api.pytorch.xwn import torch_nn as nn
>>> nn.Conv2d(
in_channels=1,
out_channels=2,
...
use_transform=True,
bit=4,
max_scale=4.0,
use_pruning=False
)
3.3. Examples
- An example of comparing and printing results before optimization(XWN) and after XWN for the same input on a supported platform.
3.3.1. Tensorflow
>>> import ddesigner_api.tensorflow.examples.examples_tensorflow as ex
>>> ex.main()
>>> ====== TENSORFLOW Examples======
>>> 1: Fixed Float32 Input Conv2D
>>> q: Quit
>>> Select Case: ...
3.3.2. Keras
>>> import ddesigner_api.tensorflow.examples.examples_keras as ex
>>> ex.main()
>>> ====== KERAS Examples======
>>> 1: Fixed Float32 Input Conv2D
>>> 2: Random Float32 Input Conv2D
>>> 3: Random Float32 Input Conv2DTranspose
>>> 4: Random Float16 Input Conv2D
>>> q: Quit
>>> Select Case: ...
3.3.3. PyTorch
>>> import ddesigner_api.pytorch.examples.examples_pytorch as ex
>>> ex.main()
>>> ====== PYTORCH Examples======
>>> 1: Fixed Float32 Input Conv2D
>>> 2: Random Float32 Input Conv2D
>>> 3: Fixed Float32 Input Conv1D
>>> q: Quit
>>> Select Case: ...
3.3.4. Numpy
>>> import ddesigner_api.numpy.examples.examples_numpy as ex
>>> ex.main()
>>> ====== NUMPY Examples======
>>> 1: XWN Transform
>>> 2: XWN Transform and Pruning
>>> q: Quit
>>> Select Case: ...
Project details
Release history Release notifications | RSS feed
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 Distribution
File details
Details for the file DDesignerAPI-0.0.3.5-py3-none-any.whl
.
File metadata
- Download URL: DDesignerAPI-0.0.3.5-py3-none-any.whl
- Upload date:
- Size: 58.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.7.10
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1e747f827dd2375c45966a2c9bac62ed46378da4deb52c1f437b27701f9f212c |
|
MD5 | b83920d82447c995ce1db5dc59f566e4 |
|
BLAKE2b-256 | 6afee0925a56f01c7a12538c4c8537f29b346f91cc19722af3e3c87efb55257c |