C++ lightweight library enabling the creation of Machine Learning models using configuration files
- Create Playground, a benchmarker to measure correctness and performance of ML frameworks vs
PyTorch. - Support cross-compatible serialization of weights between
PyTorchandDL-CPP - Provide framework for modular creation of Deep Learning models, and ablility to represent with simple
cfg(libconfig++) files. -
PerceptronandMLPcfgsupport pre-packaged - Support for lightweight automatic differentiation engine. Reverse mode autodiff library for general usage as well as specifically backpropogation in
DL-Cpp
- Use
pybind11to exposePlaygroundtoDL-CPPfor graphing purposes - Support for
CUDAin addition to scalar code for forward and backpropagation - pre-packaged
cfgsupport forCNNandRNNarchitectures
The major working parts that need to be puzzled together to design and create a model and test/train workflow using DL-CPP are as listed:
Model: The architecture of the model created. The template.Dataset: Wrapper for raw dataDataLoader: Wrapper for obtaining train/test batches or "loading" fromdatasetConfig: Design the parameters required and how they are read. This needs to be provided when creating amodel
Perceptron workflow using Playground
Model:PerceptronDataset:PlaygroundDatasetDataLoader:PlaygroundDataLoaderConfig: CFG
Ensure libconfig++ and catch2 are installed in your system
DL-CPP
cmake --build . --target clean; make;
Autodiff Tests
cd units/autodiff/tests && cmake --build . --target clean; make; cd ../../../
DL-CPP Suggested run command
./dl_cpp <cfg> > log 2> debug
Autodiff Tests
./units/autodiff/tests/test_autodiff