Skip to content

scixor/Scions_cpp_lib_fail

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

10 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Scions : A cpp ML library because why not

ci codecov CodeQL

🚧 WIP : Scions is in build phase, not indented to be used (rather it can't be used because basic requirements haven't met)

Scions aims to be a refreshingly fast and optimised way of writing which is very simple to understand and extend. While being designed to build and deploy ML models in edge friendly way where the focus is on local execution.

Why another ml library in cpp ?

So there are two part answers for this, 1st being "why another ML library?" the answer is

  • I wanted to learn more about how the theoretical and implementation level machine learning works. The best way of doing it is to make a ML library itself because you get to actually read and implement the details rather than just relying on other frameworks to make the Magic Happen. Also, I would get to learn how to build actual low level library for executing parallel and and performant ops in different accelerator environments.
  • There are certain limitation in different runtimes provided by big frameworks like Tensorflow, Pytorch and (Although to a less extent) Onnx Runtime which are hard to overcome in a normal setting which I am trying to achieve.

Next par is "why a library in cpp""

  • that is rather good question because while it is true that most of the current ml work is being done in python but there is a massive incentive to use low level language if much of optimisation can be done. Most python libraries are implemented in low level languages like cpp because its simply not possible to do it in other language efficiently for different reasons.
  • Scions uses compile time properties of C++ to build a static (in future dynamic) graph which can be optimised to much farther extent than anything. Which will enable it to do more with how each EP executes the graph.

Who is this library for ?

To be honest at this point I don't know other than me but hopefully overtime it gets enough features that most usecases can be possible.

  • This library is not intented to be used as actual general purpose ML library, as it is developed to meet my use case.
  • For people who do try the devil's path it will be very hard to overcome the missing supporting libraries like for visualisation and data processing that is very easily available in python.
  • Pure Speed and portability

Intended Architecture of Scions

This is the current plan, Onnx Runtime is the biggest inspiration while building this.

ScionsArchitecturev1.png

Scions aims to be a refreshingly fast and optimised way of writing which is very simple to understand and extend. While being designed to build and deploy ML models in edge friendly way where the focus is on local execution.

Why another ml library in cpp ?

So there are two part answers for this, 1st being "why another ML library?" the answer is

  • I wanted to learn more about how the theoretical and implementation level machine learning works. The best way of doing it is to make a ML library itself because you get to actually read and implement the details rather than just relying on other frameworks to make the Magic Happen. Also, I would get to learn how to build actual low level library for executing parallel and and performant ops in different accelerator environments.
  • There are certain limitation in different runtimes provided by big frameworks like Tensorflow, Pytorch and (Although to a less extent) Onnx Runtime which are hard to overcome in a normal setting which I am trying to achieve.

Next par is "why a library in cpp""

  • that is rather good question because while it is true that most of the current ml work is being done in python but there is a massive incentive to use low level language if much of optimisation can be done. Most python libraries are implemented in low level languages like cpp because its simply not possible to do it in other language efficiently for different reasons.
  • Scions uses compile time properties of C++ to build a static (in future dynamic) graph which can be optimised to much farther extent than anything. Which will enable it to do more with how each EP executes the graph.

Who is this library for ?

To be honest at this point I don't know other than me but hopefully overtime it gets enough features that most usecases can be possible.

  • This library is not intented to be used as actual general purpose ML library, as it is developed to meet my use case.
  • For people who do try the devil's path it will be very hard to overcome the missing supporting libraries like for visualisation and data processing that is very easily available in python.
  • Pure Speed and portability

Intended Architecture of Scions

This is the current plan, Onnx Runtime is the biggest inspiration while building this.

ScionsArchitecturev1.png

More Details

About

A small, fast and easy to use Machine Learning framework for edge

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors