This is a very simple project to show diffirent build systems applied to a python project with focus on machine learning. It is a fork of https://github.com/artofai/overcome-the-chaos. Differences between build systems are highlighted in the blog post.
One can find files for various build systems (and task schedulers) inside the project. Here is the list of tested systems:
- CMake configuration is in CMakeLists.txt.
- Pynt configuration is in build.py.
- Paver configuration is in pavement.py.
- pydoit configuration is in dodo.py.
- Luigi configuration is in luigitasks.py.
I checked how these systems can do the following:
- Allow user to describe tasks and dependencies between tasks.
- Support incremental builds, i.e. build only targets that have been changed.
- Support incremental builds if source code has been changed.
- Keep track of all the artifacts created during the build process in order to delete them with
clean
command.
The results are summariezed in the table below.
+-----------------------------------+-------+------------+------+-------+
| | CMake | Pynt/Paver | doit | Luigi |
+===================================+=======+============+======+=======+
| Targets with dependencies | yes | yes | yes | yes |
| Incremental builds | yes | no | yes | no |
| Incremental builds on code change | yes | no | yes | no |
| Auto-generated clean command | yes | no | yes | no |
+-----------------------------------+-------+------------+------+-------+
This is a very simple sample project written to be an example for series of my posts on medium. It does not do anyting cool but it pretends to ;) The idea is to show how to prepare your ML project for production environment, not to explore bleeding-edge algorithms ;) Please refer my blog:
- Structure and automated workflow for a machine learning project — part 1
- Structure and automated workflow for a machine learning project — part 2
OTS is a project aimed to provide REST like API for classifying between various iris classes.
TBD
TBD