kitsudaiki / OpenHanami

OpenHanami contains an experimental artificial neural network, which can work on unnormalized input-data in a cloud native environment.
https://docs.openhanami.com
Apache License 2.0
9 stars 0 forks source link
ai ai-as-a-service cpp dashboard energy-efficiency experimental kubernetes-deployment multi-tenants neural-network openapi-documentation

OpenHanami

Latest Release License Platform Architecture

Github workflow status CodeQL OpenSSF Scorecard

IMPORTANT: This project is still an experimental prototype and NOT ready for any productive usage. There are still many missing tests, input-validations and so on. Beside this there is also still quite a lot of evaluation and improving of the current features necessary.

IMPORTANT: The repository was renamed after version 0.5.0, so all versions from 0.5.0 and below should still work like before, but there are major differences to newer versions.

Intro

OpenHanami contains in its core a custom experimental artificial neural network, which can work on unnormalized and unfiltered input-data, like sensor measurement data. The network growth over time by creating new nodes and connections between the nodes while learning new data. The base concept was created by myself and the code was written from scratch without any frameworks. The goal behind OpenHanami is to create something unique, which works more like the human brain. It wasn't targeted to get a higher accuracy than classical artificial neural networks like Tensorflow, but to be more flexible and easier to use and more efficient in resource-consumption for big amounts of inputs and users. Additionally it also provides an as-a-Service architecture within a cloud native environment and multi-tenancy.

Supported Environment

Backend SDK Deployment
![ubuntu-2204_clang-13][img_ubuntu-2204_clang-13] ![python-3_9][img_python-3_9] ![kubernetes-1_26][img_kubernetes-1_26]
![ubuntu-2204_clang-14][img_ubuntu-2204_clang-14] ![python-3_10][img_python-3_10] ![kubernetes-1_27][img_kubernetes-1_27]
![ubuntu-2204_clang-15][img_ubuntu-2204_clang-15] ![python-3_11][img_python-3_11] ![kubernetes-1_28][img_kubernetes-1_28]
![ubuntu-2404_clang-15][img_ubuntu-2404_clang-15] ![python-3_12][img_python-3_12] ![kubernetes-1_29][img_kubernetes-1_29]
![ubuntu-2404_clang-16][img_ubuntu-2404_clang-16] ![kubernetes-1_30][img_kubernetes-1_30]
![ubuntu-2404_clang-17][img_ubuntu-2404_clang-17]
![ubuntu-2404_clang-18][img_ubuntu-2404_clang-18]
![ubuntu-2204_gcc-10][img_ubuntu-2204_gcc-10]
![ubuntu-2204_gcc-11][img_ubuntu-2204_gcc-11]
![ubuntu-2204_gcc-12][img_ubuntu-2204_gcc-12]
![ubuntu-2404_gcc-12][img_ubuntu-2404_gcc-12]
![ubuntu-2404_gcc-13][img_ubuntu-2404_gcc-13]
![ubuntu-2404_gcc-14][img_ubuntu-2404_gcc-14]

[img_ubuntu-2204_clang-13]: https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/kitsudaiki/OpenHanami-badges/develop/compiler_version/ubuntu-2204_clang-13/shields.json&style=flat-square [img_ubuntu-2204_clang-14]: https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/kitsudaiki/OpenHanami-badges/develop/compiler_version/ubuntu-2204_clang-14/shields.json&style=flat-square [img_ubuntu-2204_clang-15]: https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/kitsudaiki/OpenHanami-badges/develop/compiler_version/ubuntu-2204_clang-15/shields.json&style=flat-square [img_ubuntu-2404_clang-15]: https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/kitsudaiki/OpenHanami-badges/develop/compiler_version/ubuntu-2404_clang-15/shields.json&style=flat-square [img_ubuntu-2404_clang-16]: https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/kitsudaiki/OpenHanami-badges/develop/compiler_version/ubuntu-2404_clang-16/shields.json&style=flat-square [img_ubuntu-2404_clang-17]: https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/kitsudaiki/OpenHanami-badges/develop/compiler_version/ubuntu-2404_clang-17/shields.json&style=flat-square [img_ubuntu-2404_clang-18]: https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/kitsudaiki/OpenHanami-badges/develop/compiler_version/ubuntu-2404_clang-18/shields.json&style=flat-square [img_ubuntu-2204_gcc-10]: https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/kitsudaiki/OpenHanami-badges/develop/compiler_version/ubuntu-2204_gcc-10/shields.json&style=flat-square [img_ubuntu-2204_gcc-11]: https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/kitsudaiki/OpenHanami-badges/develop/compiler_version/ubuntu-2204_gcc-11/shields.json&style=flat-square [img_ubuntu-2204_gcc-12]: https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/kitsudaiki/OpenHanami-badges/develop/compiler_version/ubuntu-2204_gcc-12/shields.json&style=flat-square [img_ubuntu-2404_gcc-12]: https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/kitsudaiki/OpenHanami-badges/develop/compiler_version/ubuntu-2404_gcc-12/shields.json&style=flat-square [img_ubuntu-2404_gcc-13]: https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/kitsudaiki/OpenHanami-badges/develop/compiler_version/ubuntu-2404_gcc-13/shields.json&style=flat-square [img_ubuntu-2404_gcc-14]: https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/kitsudaiki/OpenHanami-badges/develop/compiler_version/ubuntu-2404_gcc-14/shields.json&style=flat-square [img_python-3_9]: https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/kitsudaiki/OpenHanami-badges/develop/python_version/python-3_9/shields.json&style=flat-square [img_python-3_10]: https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/kitsudaiki/OpenHanami-badges/develop/python_version/python-3_10/shields.json&style=flat-square [img_python-3_11]: https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/kitsudaiki/OpenHanami-badges/develop/python_version/python-3_11/shields.json&style=flat-square [img_python-3_12]: https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/kitsudaiki/OpenHanami-badges/develop/python_version/python-3_12/shields.json&style=flat-square [img_kubernetes-1_26]: https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/kitsudaiki/OpenHanami-badges/develop/kubernetes_version/kubernetes-1_26/shields.json&style=flat-square [img_kubernetes-1_27]: https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/kitsudaiki/OpenHanami-badges/develop/kubernetes_version/kubernetes-1_27/shields.json&style=flat-square [img_kubernetes-1_28]: https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/kitsudaiki/OpenHanami-badges/develop/kubernetes_version/kubernetes-1_28/shields.json&style=flat-square [img_kubernetes-1_29]: https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/kitsudaiki/OpenHanami-badges/develop/kubernetes_version/kubernetes-1_29/shields.json&style=flat-square [img_kubernetes-1_30]: https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/kitsudaiki/OpenHanami-badges/develop/kubernetes_version/kubernetes-1_30/shields.json&style=flat-square

Current prototypically implemented features

Further experimental features

Known disadvantages

The concept is not perfect and also has some disadvantages, which are the result of the architecture itself:

Getting started

Development

Pre-build objects

All objects are automatically build and uploaded by the CI-pipeline for each merge on develop-branch and for each tag.

Currently disabled features

There are some features, which existed in the past, were disabled temporary and will be added/enabled again in the near future:

  1. Dashboard

    As a PoC a first dashboard was created, without any framework. It is planned to refactor this old version in v0.9.0 and re-write it again with Typescript and some additional frameworks. Until then, it is temporary disabled, because it would current cost too much time to keep this unused and prototypical version up-to-data. As reference see the example-workflow of the PoC-dashboard: Dashboard-docu

  2. Regulation of CPU-speed

    Also in older version there also was the function available to regulate the speed of the CPU based on the workload. The dashboard was used to visualize the CPU metrics like the speed. Since the dashboard was disabled, there is at the moment not feedback available, so for usability reasons the feature was not further maintained and disabled for now. It is planned again for version v0.8.0.

  3. GPU-support

    There already were some attempts in the past to add GPU-support with CUDA and OpenCL in the past. Some version like 0.4.0 also had a working version implemented. The problem was disappointing performance and some restrictions for the CPU-version too. There will be some further attempts in the future, to fix this issue and bring GPU support back into the project, but because there is no definite solution now, it is unknown when this happens.

Roadmap

see Roadmap

Author

Tobias Anker

eMail: tobias.anker@kitsunemimi.moe

License

The complete project is under Apache 2 license.