-
Try out the new Jake: AI Coding Assistant for LabVIEW (beta)!
Get answers to questions about LabVIEW and discuss your code.
DeepLTK FPGA Addon by Ngene - Toolkit for LabVIEW Download
Version | 8.1.1.94 |
Released | Dec 20, 2024 |
Publisher | Ngene |
License | Not Specified |
LabVIEW Version | LabVIEW>=20.0 |
Operating System | Windows |
Project links | Homepage Repository Discussion |
Description
The DeepLTK FPGA Addon, an extension of the DeepLTK framework, is a high-performance neural network accelerator designed to deploy and accelerate pretrained models, including Convolutional Neural Networks (CNNs) and Multi-Layer Perceptrons (MLPs), on FPGA platforms. It supports a wide range of applications, including image classification, object detection, waveform classification, and other CNN- and MLP-based models. By leveraging the flexibility of FPGAs, the addon enables the implementation of low-precision accelerators that maximize performance and power efficiency. Utilizing 8-bit precision for computations, it significantly speeds up execution (by up to 100 times) while ensuring minimal drop in accuracy.
Release Notes
V8.1.1
Backward Compatibility
This is a major update which breaks backward compatibility with previous versions of the toolkit.
New Features
1. Made the addon compatible with the latest version of DeepLTK (>=8.0.1.252).
2. Added support for FC(Fully Connected) layers.
3. Added possibility to customize FPGA engine which allows to:
a. Incorporate FPGA engine into custom FPGA designs.
b. Possibility to compile the engine for other FPGA targets.
c. Specify number of cores (4 or 8) of the FPGA engine.
d. Specify resources required for the FPGA engine (BRAM buffer sizes, engine’s clock).
4. Redesigned the toolkit to simplify host API and provide custom FPGA bitfiles.
5. Added possibility to provide input data with different formats with help of new Polymorphic VI named “NNF_Set_Input.vi” with the following instances:
a. NNF_Set_Input(1D_I8).vi - Accepts input as 1D I8 array.
b. NNF_Set_Input(2D_I8).vi - Accepts input as 2D I8 array.
c. NNF_Set_Input(2D_U8).vi - Accepts input as 2D U8 array.
d. NNF_Set_Input(2D_U32).vi - Accepts input as 2D U32 array, which will be recognized as 3-channel 3D array of U8 (RGB).
e. NNF_Set_Input(3D_I8).vi - Accepts input as 3D I8 array.
6. Now the model conversion is provided as a reference example which allows to convert pretrained model for any datasets with help of “NNF_Model_Conveter.vi” API (located in the "Utils" subpalette).
7. Added possibility to specify weights and layer outputs percentiles during model conversion, which helps to reduce quantization error and increase accuracy.
8. Added option to force specific layers or the whole network to be executed on the CPU during deployment.
Optimizations
1. Optimized FPGA engine’s resource utilization.
2. Optimized initialization and inference speeds.
3. Removed intermediate file generation from the model conversion process.
4. Improved Batch Normalization layer merging process by incorporating epsilon into the calculations.
5. Added functionality to remove Dropout layers during model conversion.
Bug Fixes
1. Fixed incorrect weight value handling during deployment.
2. Fixed an issue with handling 2D inputs with non-square dimensions.
3. Increase data representation format for storing statistical information (weight and output ranges/scalers).
4. Resolved an issue with incorrect results for layers producing data with small width.
5. Resolved data loss issue when data received from FPGA was larger than the input.
6. Fixed a bug in the "Variant to Data" conversion introduced in LabVIEW 2024.
7. Other minor fixes.