Deepc

vendor independent TinyML deep learning library, compiler and inference framework microcomputers and micro-controllers
Alternatives To Deepc
Project NameStarsDownloadsRepos Using ThisPackages Using ThisMost Recent CommitTotal ReleasesLatest ReleaseOpen IssuesLicenseLanguage
Tensorflow175,3873277713 hours ago46October 23, 20192,131apache-2.0C++
An Open Source Machine Learning Framework for Everyone
Transformers103,3776491113 hours ago91June 21, 2022747apache-2.0Python
🤗 Transformers: State-of-the-art Machine Learning for Pytorch, TensorFlow, and JAX.
Pytorch67,67014613 hours ago23August 10, 202212,257otherPython
Tensors and Dynamic neural networks in Python with strong GPU acceleration
Keras58,557330a day ago68May 13, 2022386apache-2.0Python
Deep Learning for humans
Cs Video Courses56,273
9 days ago17
List of Computer Science courses with video lectures.
Faceswap45,692
15 hours ago27gpl-3.0Python
Deepfakes Software For All
D2l Zh44,160
14 days ago45March 25, 202234apache-2.0Python
《动手学深度学习》:面向中文读者、能运行、可讨论。中英文版被60多个国家的400多所大学用于教学。
Tensorflow Examples42,312
8 months ago218otherJupyter Notebook
TensorFlow Tutorial and Examples for Beginners (support TF v1 & v2)
100 Days Of Ml Code40,344
3 months ago61mit
100 Days of ML Coding
Deepfacelab40,302
3 days ago534gpl-3.0Python
DeepFaceLab is the leading software for creating deepfakes.
Alternatives To Deepc
Select To Compare


Alternative Project Comparisons
Readme

deepC

Build Status PyPI version Downloads Apache2.0 License Contributors Chat

The deepC is a vendor independent deep learning library, compiler and inference framework designed for small form-factor devices including Controllers, IoT and Edge devices

Using deepC

Here are few of many ways.

  1. Try deepC with Colab Noteboook
  2. Install it on Ubuntu, raspbian (or any other debian derivatives) using pip install deepC
  3. Compile onnx model- read this article or watch this video
  4. Use deepC with a Docker File

See more examples in tutorial dir.

what is deepC?

deepC library, compiler and inference framework is designed to enable and perform deep learning neural networks by focussing on features of small form-factor devices like micro-controllers, eFPGAs, cpus and other embedded devices like raspberry-pi, odroid, arduino, SparkFun Edge, risc-V, mobile phones, x86 and arm laptops among others.

edge Devices

deepC also offers ahead of time compiler producing optimized executable based on LLVM compiler tool chain specialized for deep neural networks with ONNX as front end.

Design

Main components of deepC have been designed to represent and optimize the common deep learning networks in high level graph IR and to transform the computation graph to minimize memory utilization, optimize data layout and fuse computation patterns for different hardware backends.

Architecture

Read more at high level design document

PreRequisites

Development

Build and start modifying deepC locally from source code with following steps

Ubuntu 18.04

Follow the steps to install pre-requisites

sudo apt-get update
sudo apt-get install build-essential python3.6-dev python3-pip swig doxygen clang-format clang clang-8 llvm-8 llvm-8-dev protobuf-compiler libprotoc-dev
sudo pip3 install numpy==1.15.0 onnx==1.5.0

Once you are done, build deepC

git clone https://github.com/ai-techsystems/deepC.git
cd deepC
make

Mac OS / Windows 10

Make sure you have the below pre-requisites

Mac OS:

Windows 10:

Once you are done, build deepC inside docker container

git clone https://github.com/ai-techsystems/deepC.git
cd deepC
python buildDocker.py

Output

find include src swig -name \*.h -print0 -o -name \*.cpp -print0 | xargs -0 -P8 -n1 clang-format -i
make -C src
make[1]: Entering directory 'deepC/src'
make -C core
make[2]: Entering directory 'deepC/src/core'
compiling broadcast.cpp
/usr/bin/g++ -O3 -Wall -std=c++14 -fPIC -march=native -msse2 \
    -isystem ./packages/eigen-eigen-323c052e1731 -I./include \
    -c broadcast.cpp -o obj/broadcast.o
compiling tensor.cpp
...
...
/usr/bin/g++ -shared  ./obj/dnnc_swig.o ./obj/dnnc_pyutils.o ./obj/dnnc_api.o -o lib/libdnnc.so
ln -s -f lib/libdnnc.so _dnnc.so
/usr/bin/python3 ../test/swig/basic.py

Current Support

Supported Architectures Status
Arm
Armv7
Arm64
AMD64
ppc64le
Supported OS Distributions Status
Linux Ubuntu 18.04
Linux CentOS 6
Linux Arch Linux
Linux Manjaro
Windows 1803 and above
Mac OS Sierra and above

Contribute

dnn Compiler adopts apache committer model, we aim to create an open source project that is maintained and owned by the community. Checkout the Contributor Guide.

Acknowledgement

We acknowledge the efforts predecessor projects like LLVM, ONNX etc. to make this project a reality.


Why compiler

deepC is targeted towards devices with small formfactor like microcontrollers, which are part of all sorts of household devices: think appliances, cars, and toys. In fact, there are around 30 billion microcontroller-powered devices produced each year. They're cheap, require very little energy, and are very reliable.

By bringing deep learning models to tiny microcontrollers, we can boost the intelligence of billions of devices that we use in our lives, without relying on expensive hardware or reliable internet connections. Imagine smart appliances that can adapt to your daily routine, intelligent industrial sensors that understand the difference between problems and normal operation, and magical toys that can help kids learn in fun and delightful ways.

Organizations

Support this project with your organization. Your logo will show up here with a link to your website. [Contribute]


Built on/with deepC

Products

  1. No code TinyML platform, built with deepC technology.
  2. No code TinyML Book, with a chapter on deepC.

Papers

Paper Citations

Book Chapter

  1. deepC Chapter in book Introduction to TinyML, available on Amazon and other retailers
Popular Machine Learning Projects
Popular Deep Learning Projects
Popular Machine Learning Categories
Related Searches

Get A Weekly Email With Trending Projects For These Categories
No Spam. Unsubscribe easily at any time.
Machine Learning
Deep Learning
Arduino
Raspberry Pi
Esp8266
Esp32
Microcontroller
Stm32
Onnx
Arm64