Build neural networks with PuzzleLib

Open Source high level Deep Learning framework with NVIDIA & AMD support

Decorative cloud illustration for puzzlelib page - sova.aiDecorative brain illustration for puzzlelib page - sova.ai

What is PuzzleLib

PuzzleLib is a Deep Learning framework. The framework allows you to collect neural networks, visualize its architecture, train and export it for use on a phone or server application.

PuzzleLib is an analogue to TensorFlow (Google), Torch (Facebook), CNTK (Microsoft).

CPU & GPU Support

Training is better with GPUs, but CPU support can be crucial when t is not possible to use expensive GPUs. PuzzleLib framework supports:

  • NVIDIA GPU (CUDA backend)
  • AMD GPU (ROCm backend)
  • Intel CPU (mkl-dnn backend)
  • AMD CPU (numpy backend)
  • Elbrus CPU (numpy backend)
Puzzlelib support Illustration for puzzlelib page - SOVA.AI

Why PuzzleLib

SOVA Illustration for puzzlelib page - SOVA.AI

Cross-platform

SOVA Illustration for puzzlelib page - SOVA.AIIt is crucial to have an ability to use Deep Learning on various operation systems. PuzzleLib framework supports all of the most popular operating systems: the Linux family, Windows, Mac OS, iOS and Android.

High Speed

SOVA Illustration for puzzlelib page - SOVA.AINeural network training can take several days. Speeding up calculations, even 1.5 to 2 times, significantly affects the entire workflow. In addition, fast data processing is extremely important in real-time applications (for example, speech analysis on a smartphone).

The computational speed in PuzzleLib is comparable to the speed of Facebook Torch and other frameworks. Such a high speed is achieved by:

  • GPU support
  • parallel computing on multiple GPUs
  • use of low-level computing libraries from NVIDIA
  • efficient use of processor resources
  • the availability of modules for converting neural networks in the TensorRT Engine

Available modules

Any neural network is a computational graph: every node is a PuzzleLib module that performs specific operations with the data provided. Below is the list of currently supported modules. The modules make it possible to construct any modern Deep Learning architecture.

ActivationAddAvgPool1DAvgPool2DAvgPool3DBatchNormBatchNorm1DBatchNorm2DBatchNorm3DConcat
BatchNormNDConv1DConv2DConv3DConvNDCrossMapLRNDeconv1DDeconv2DDeconv3DDeconvND
DepthConcatDropoutDropout2DEmbedderFlattenGlueGroupLinearIdentityInstanceNorKMaxPool
LCNLRNLinearMapLRNMaxPool1DMaxPool2DMaxPool3DMoveAxisMaxUnpool2DMul
MulAddConstNoiseInjectPReluPenaltyPool1DPool2DPool3DRNNReplicateSlice
ReshapeSoftMaxSpatialTfSplitSubtractMeanSumSwapAxesTileToList
TransposeUpsample2DUpsample3D

To train a neural network, it is necessary to iteratively update its weights using an algorithm called “optimizer”. Different optimizers are needed for different tasks (for example, regression, texts or image classification).

AdaGradAdaDeltaAdamMomentumSGDNesterovSGDRMSPropRMSPropGravesSGDSMORMS3