Changelog¶
[Unreleased]¶
BREAKING-CHANGES¶
API-Breaking¶
- the input definition for the tasks was changes to removed the naming restriction between dataset-column and hexagon-name
- the external REST-API endpoint to validate a token was removed and replaced by an internal function, which is used instead for all incoming api-requests
- changed password to passphrase, which is now required to be base64 encoded
Checkpoint-breaking¶
- added axons to be able to connect hexagons of the entire cluster with each other
- the synapse-block-links were moved into its own vector for cleaner separation and better sizes of the objects within the memory
Template-Breaking¶
- removed
target
-keyword from cluster-templates - removed number of nodes from inputs and outputs from the cluster-templates
Database-Breaking¶
- the base64-representation of the passphrases is now used for the pw-hash inside the database, which makes all old hashes in the database invalid
Added¶
- added new workaround to be able to handle binary input-data
- added new output-modi to provide more output-options to combine multiple outputs bitwise into a bigger value
- added metrics for number of blocks and number of sections to cluster get output
Changed¶
- renamed repo from
Hanami
toOpenHanami
- tls-termination in kubernetes setup was moved from the ingress into a container within the same pod like the hanami-process
- number of input- and output-neurons now scales with the given data, so defining them hard inside of the cluster-template is not longer necessary
- moved converting user-context from the endpoints to a central position to avoid unnecessary redundant code
- moved cluster io-functions internally into the processing and backpropagarion files for the cpu-code
- item-buffer was internally changed to be more compatible for further attempts of GPU-support
- made internal processing more generic, to have the same worker-workflow for all coming backends
- use debug builds with ASan-check for tests of the CI (unit-, functional-, memory-leak-, sdk-api- and cli-api-tests)
- default-values for initial admin-credentials and token-key were removed from the helm-chart and are now marked as required
- synapse-tolerance was changed to static values
Fixed¶
- fixed memory-leak in DataSetFileHandle
- fixed memory violations found by the new added ASan-memory-check
- some cases of invalid http-requests had returned an 200 reponse with empty body, which was fixed
- changed token-key in helm-chart from configmap to secret
- fixed memory-corruption in cluster-resize, because a pointer was used after free
- fixed missing drawio-images in documentation when generating in CI
Removed¶
- the ansible-playbook was moved ot the archive and removed from the documentation and CI
v0.5.0¶
Release-Date: 2024-08-11
BREAKING-CHANGES¶
API-breaking¶
- tasks were updated to a more generic way
- request-results were removed from the databases and api, because results are now also stored as data-sets again
- renamed REST-API endpoints after removing the dashboard, because there is no separation between dashboard and commands anymore
- added version-numbers to the REST-API endpoints
Checkpoint-Breaking¶
- number of neurons per brick now grows dynamically and doesn't have to be defined in the cluster-templates anymore
- changed output-bricks to modifiy the size of the output-brick independently from the number of output-neurons
- updated buffer in clusters to remove the old byte-arrays
- new implementation for the checkpoints for the new data-structure of the clusters and for more and better error-handling
- header of checkpoint-files was changed from 512 byte to 4096 byte to have more space for additional configs
Dataset-Breaking¶
- new implementation for the datasets for a more generic handling of data and read-function to allow get specific sections from the data-set file
- header of dataset--files was changed from 512 byte to 4096 byte to have more space for additional configs
Template-Breaking¶
- cluster-templates were modified for the new dynamic neuron-allocation and the new output
- renamed bricks into hexagons
Database-Breaking¶
- database-tables now have a
created_at
-timestamp for the entry - entries of the database-tables are now deleted anymore, but instead are only marked as deleted with a
deleted_at
-timestamp
Added¶
- added base64-type database-entries to easier store and get more complex strings from the database
- added documentation of the CLI-commands
- added function to download content of datasets
- added flag to the CLI to get every output as json-string
- added flag to the CLI to disable the TLS-check, when necessary
- database-tables now have proper functions to add and get structs from/to the database instead of only json-objects, which makes the code more explizit
- added new approach for time-series for input-data of csv-files
- added unit-tests for:
- clusters
- ckeckpoint create and restore
- data-sets read and write
- all database-tables
- improved CI-pipeline:
- added commit-linter
- added check for binary executables within the commited code
- added secret-scan
- build, use and upload helm-package
- build, use and upload python-package of sdk
- build, use and upload client
- added CLI tests
- automatic versioning of python- and helm-package
- added compile-tests for different C++ compiler
- added sdk-api-test with different Python versions
- added integration-tests with different Kubernetes versions
- added CodeQL-check as additional workflow
- added OpenSSF-checks as additional workflow
- added dependabot-bot to repository
Changed¶
- datasets are now streamed internally and not fully loaded into the memory anymore, when creating a task, which is a massive reductions in the memory-consumption
- the registration of new endpoints within the code were updated by removing old leftovers
- the registration of new database-columns within the code were updated to look like the style of config-registrations and so on
- internal handling of tasks was updated for cleaner code
- endpoint to list projects of a user, were moved within the code
- renamed src-subdirectory
Hanami
tohanami
to be more consistent to the rest - split CUDA-kernel into multiple files
- replace the json submodule by the apt-package
Fixed¶
- fixed build of ARM64 docker-images, where were completely broken...
- fixed compiling of the C++ code under Ubuntu 24.04
- fixed csv-upload in python-sdk-lib
- fixed a value-limitation of 16bit, where it was not necessary
- fixed multiple commands within the CLI while adding automatic tests to the CI-pipeline
- fixed security-issues found by the new added CodeQL:
- tls-check in CLI is not disabled be default anymore
- fixed clear-text-logging of the password-input in the CLI
- fixed a range-check in a for-loop within the backend
Removed¶
- the
common
-directory in Hanami was removed and most of the functions were moved to thehanami_common
-lib - disabled CUDA-kernel, because at the moment it doesn't brings a performance increasement, but only slows down the development (will be added in the future again, after finding a better use-case for the GPU)
- disabled dashboard and moved it to the archive subdirectory (will be added in the future again, after a complete refactoring of the code)
- removed old OpenCL-kernel
v0.4.1¶
Release-Date: 2024-03-25
Added¶
- provide docker-images also for arm64 architecture
- new steps were added to the CI-pipeline:
- added automatic build and push of amd64 and arm64 docker-images to docker hub
- added automatic build and push for the documentation to docker hub
- added SDK-API-Test
- added integration-tests for kubernetes- and ansible-setup with amd64 docker-images
- added flake8 to lint python-code
- added ansible-lint to lint ansible-code
Changed¶
- reduce cpu usage in idle state by blocking inactive threads
- use earthly as new build-script and replace old pre-build docker-images in CI
- use random instead of static salt-value for password-hashes
- websocket-connections in SDK use now async-functions
Fixed¶
- fixed linting-errors in python- and ansbile-scripts
- fixes to run code in virtual machines, where reading system information had broke the setup
v0.4.0¶
Release-Date: 2024-01-21
BREAKING-CHANGES¶
Checkpoint-Breaking¶
- Complete restructure of the core to improve the performance of the CUDA-kernel by enabling more capabilities for parallel processing.
- Synapse-blocks are not limited to a single cluster-scoped buffer, but instead are stored in a global buffer, which is shared by multiple cluster.
- The number of used synapse-blocks is now independed from the number of neuron-blocks of a brick. They scale now better over time. This way the number of neurons in the clsuter-template are only a maximum value. This way it is easier to too high values in the cluster-template are no pain-point anymore.
API-Breaking¶
- removed c++ version of the SDK
Added¶
- multi-threading, so now multiple cpu-threads can process the same cluster at the same time
- new endpoint to list logical hosts (cpu's and gpu's)
- new endpoint to move a cluster between cpu and gpu
- re-added the spiking neural network-feature for future testing-purpose
- re-added a connection-distance of more the one for future testing-purpose
- python version of the SDK
- basic cli-client in go
- new entry in config to define a location for temporary files while uploading
- new cleanup-loop for tempfiles, which deleted incative temporary files after a certain amount of time, to remove file of a broken upload-process
- the reduction-process was re-added to limit the amount of used memory while learning.
Changed¶
- physical host is now separated into logical hosts (a cpu and a gpu are handled as 2 different logical hosts)
- replaced old api-test-tool by a new python-script, which use and test the new python version of the SDK
- moved from
qmake
tocmake
as build-tool for the c++ code
Removed¶
- removed GET-requests from audit-log
- removed c++ version of the SDK
v0.3.3¶
Release-Date: 2023-11-17
Fixed¶
- fixed broken login to dashboard
- fixed broken internal error-log and the error-log API-endpoint
v0.3.2¶
Release-Date: 2023-11-10
Added¶
- basic Ansible-playbook was added in order to deploy the project without kubernetes
- in kubernetes-setup:
- now use cert-manager to generate certificates
- ingress was added for ssl-termination of https-connections
- persistent volume was added to persist data like database within the kuberntes-setup
- node label was added to define the node, where hanami should be deployed by kubernetes
clang-format
file was added with a git pre-commit hookclang-format
check and basiccppcheck
were added to the ci-pipeline- first contribution-guide and code-styling guide was added
- example-configs for testing purpose and guide to setup local test-environment
- at start there is now a check if the directories for the checkpoints and dataset, defined by the config, even exist
Fixed¶
- fixed compile-error when trying to build on ARM64 architecture
- fixed compile-error in cude-code with the standard nvidia-toolkit in ubuntu 22.04
- fixed broken json-strings in javascript-sdk
- fixed false error response-codes in API
Changed¶
- moved old readme files into the normal documentation
- use clang++ instead of g++ as compiler
- non-critical API-errors, like for example a 404 (not found) when searching for an unknown id, doesn't produce an internal error-output anymore
Removed¶
- ssl-termination was removed from backend-API, because it will be done by another service in front of the API, like nginx
v0.3.1¶
Release-Date: 2023-09-24
Changed¶
- replaced json-parser by third-party library https://github.com/nlohmann/json
- updated internal registration of config-values
- updated internal registration of cli-arguments
Fixed¶
- fixed bug in synapse-segmentation, which had impact in samller tests
Removed¶
- Removed unused and deprecated checkpoint create and finalize endpoints
v0.3.0¶
Release-Date: 2023-09-05
BREAKING-CHANGES¶
All breaking¶
- Move the entire project from a micro-service architecture to a more monolithic architecture with only one executable but still multiple libraries, to reduce unnecessary complexity and increase performance and reliability of the program. Also it makes the developing process easier and faster, with is necessary in regard of my limited time-resources.
- Removed entire segment-layer between the clusters and bricks from core structure. This layer was originally intended for the separation of multiple threads, but now there is another strategy planed
API-Breaking¶
- REST-API endpoint for the generation of the documentation was removed
- Renamed
snapshot
tocheckpoint
andlearn
totrain
Database-Breaking¶
- fixed sizes of some database-columns for user- and project-id's
Checkpoint-Breaking¶
- Bigger rework of the core structs to get rid of the update-positions struct
Added¶
- documentation of config-entries and database-schemas can now also be generated as marddown-documents
- error-codes are now also written into the REST-API documentation
- new config-entry to enable the extremely experimental CUDA-processing
- more then one thread is now created for the core-processing, to be able to process multiple clusters in parallel
- the CUDA-version now also works with Checkpoints (create and read)
Changed¶
- Rename repository/project from
Hanami-AI
toHanami
- Renamed libraries to
hanami_...
and namespaces of the libraries toHanami
, because the originally naming and structure was from the time, when they were separate repositores and desired also for other projects. The new naming makes the names shorter and easier. - replace custom jwt lib by
jwt-cpp
(https://github.com/Thalhammer/jwt-cpp) - REST-API documentation is now generated as OpenAPI-specification and added to the documentation via swagger-ui
- merged networking-libraries in context of the renaming
- config-handler was internally restructured for the new generator of the config-documentation
- registration of fields in API-endpoints was updated for cleaner code
- Button in dashboard for the geneartion of the Documentation was removed and is now done by a new CLI flag.
- merged entire code into one single docker-image
- better segmentation of the synapses
Fixed¶
- solved all compiler-warnings (disabled libraries not included)
- fixed stupid memory leaks in API and task-handling
- fixed handling in database-requests to separate correctly between an internal-error and a not-found to give the correct HTTP response to the user
- after a restart of the backend, all clusters are not removed from database at the start to avoid broken clusters, because cluster are in-memory and don't survive a restart
- positioning of header-texts in dashboard was fixed
Removed¶
- Removed OpenCL-kernel for the moment. The CUDA-variant is enough for testing and easier to update.
v0.2.0¶
Release-Date: 2023-03-15
Breaking-Changes¶
API-Breaking¶
- use now custom syntax for cluster- and segment-templates instead of json
- use protobuf-messages to send payload of files
- merge endpoints to create train- and request-tasks for csv- and mnist-files into one endpoint
- creating a task doesn't require the explicit selecting of the data-set type. This is now read from the data-set metadata
Checkpoint-Breaking¶
- changed internal data-structure of the core in order to make GPU-support possible without race-conditions
Changed¶
- merged all repositories (source-code, documentation, build, deploy) into this main-repository here
- made token-key and registry in helm-chart configurable
- made token expire-time configurable in Misaki
- core-internal renamings of structs and functions
- use dropdown-menu instead of single buttons in table-entries within the dashboard
- use nested namespaces in sakura- and hanami-layer
- changed a huge amount of map-iterators to c++17 style
Added¶
- Added experimental GPU-support with CUDA and OpenCL (per default hard in source-code disbabled at the moment)
- internal tokens requestable form Misaki
- API-endpoints and database-table to request logs with page-selector
- print audit-logs in dashboard
Fixed¶
- fix random breaks of the websocket under high load in the Torii
- fixed memory-corruption in segment-header of the clusters in Kyouko
- solved uninitialized warning in item-buffer
- fixed stupid memory-leak when sending internal messages
Removed¶
- Removed additional namespaces of the libraries in the common-layer
- Disabled reduction-process of the neural-networkds for the moment.
v0.1.0¶
Release-Date: 2022-10-18
Added¶
- First experimental prototype version with very basic implementation of following features:
- first incomplete implementation of the core-concept of a dynamic network with:
- creates connections while learning
- has nearly no upper limit for inputs
- capable to train MNIST-Datasets and basic CSV-files
- creating neuronal networks based on templates in json-format
- authentication with username + password and JWT-token
- creating multiple user and multiple projects in one system
- basic role-system
- automatic creation of REST-API-documentation in PDF-, RST- or Markdown-format
- creating checkpoints of neuronal networks and restore them again
- thread-binding for all components for more optimal usage of the CPU
- PoC to change CPU-frequency based on load
- measuring of power consumption, thermal production and frequency of the CPU
- Dashboard with HTML, Javasript and CSS with rendering on client-side
- sdk-library in C++ and Javascript (incomplete)
- Build-scripts to build docker-images for all components
- basic Helm-chart to deploy all components on a kubernetes
- first incomplete implementation of the core-concept of a dynamic network with:
Repositories¶
Repository-Name | Version-Tag | Download-Path |
---|---|---|
Hanami-AI-Documentation | v0.1.0 | https://github.com/kitsudaiki/Hanami-AI-Documentation.git |
Hanami-AI-Dockerbuilder | v0.1.0 | https://github.com/kitsudaiki/Hanami-AI-Dockerbuilder.git |
Hanami-AI-Dashboard | v0.2.0 | https://github.com/kitsudaiki/Hanami-AI-Dashboard.git |
Hanami-AI-Dashboard-Dependencies | v0.1.0 | https://github.com/kitsudaiki/anamiAI-Dashboard-Dependencies.git |
Hanami-AI-K8s | v0.1.0 | https://github.com/kitsudaiki/Hanami-AI-K8s.git |
libHanamiAiSdk | v0.4.0 | https://github.com/kitsudaiki/libHanamiAiSdk.git |
KyoukoMind | v0.9.1 | https://github.com/kitsudaiki/KyoukoMind.git |
MisakiGuard | v0.3.0 | https://github.com/kitsudaiki/MisakiGuard.git |
ShioriArchive | v0.4.0 | https://github.com/kitsudaiki/ShioriArchive.git |
AzukiHeart | v0.3.1 | https://github.com/kitsudaiki/AzukiHeart.git |
ToriiGateway | v0.7.0 | https://github.com/kitsudaiki/ToriiGateway.git |
TsugumiTester | v0.4.0 | https://github.com/kitsudaiki/TsugumiTester.git |
libAzukiHeart | v0.3.0 | https://github.com/kitsudaiki/libAzukiHeart.git |
libMisakiGuard | v0.2.0 | https://github.com/kitsudaiki/libMisakiGuard.git |
ibShioriArchive | v0.3.0 | https://github.com/kitsudaiki/ibShioriArchive.git |
libKitsunemimiHanamiMessages | v0.1.0 | https://github.com/kitsudaiki/libKitsunemimiHanamiMessages.git |
libKitsunemimiHanamiNetwork | v0.5.0 | https://github.com/kitsudaiki/libKitsunemimiHanamiNetwork.git |
libKitsunemimiHanamiPolicies | v0.2.0 | https://github.com/kitsudaiki/libKitsunemimiHanamiPolicies.git |
libKitsunemimiHanamiEndpoints | v0.2.0 | https://github.com/kitsudaiki/libKitsunemimiHanamiEndpoints.git |
libKitsunemimiHanamiDatabase | v0.4.0 | https://github.com/kitsudaiki/libKitsunemimiHanamiDatabase.git |
libKitsunemimiHanamiCommon | v0.3.0 | https://github.com/kitsudaiki/libKitsunemimiHanamiCommon.git |
libKitsunemimiSakuraNetwork | v0.9.0 | https://github.com/kitsudaiki/libKitsunemimiSakuraNetwork.git |
libKitsunemimiSakuraLang | v0.13.0 | https://github.com/kitsudaiki/libKitsunemimiSakuraLang.git |
libKitsunemimiSakuraDatabase | v0.6.1 | https://github.com/kitsudaiki/libKitsunemimiSakuraDatabase.git |
libKitsunemimiSakuraHardware | v0.2.0 | https://github.com/kitsudaiki/libKitsunemimiSakuraHardware.git |
libKitsunemimiArgs | v0.5.0 | https://github.com/kitsudaiki/libKitsunemimiArgs.git |
libKitsunemimiConfig | v0.5.0 | https://github.com/kitsudaiki/libKitsunemimiConfig.git |
libKitsunemimiCrypto | v0.3.0 | https://github.com/kitsudaiki/libKitsunemimiCrypto.git |
libKitsunemimiCpu | v0.4.1 | https://github.com/kitsudaiki/libKitsunemimiCpu.git |
libKitsunemimiJwt | v0.5.1 | https://github.com/kitsudaiki/libKitsunemimiJwt.git |
libKitsunemimiSqlite | v0.4.0 | https://github.com/kitsudaiki/libKitsunemimiSqlite.git |
libKitsunemimiJson | v0.12.0 | https://github.com/kitsudaiki/libKitsunemimiJson.git |
libKitsunemimiJinja2 | v0.10.0 | https://github.com/kitsudaiki/libKitsunemimiJinja2.git |
libKitsunemimiIni | v0.6.0 | https://github.com/kitsudaiki/libKitsunemimiIni.git |
libKitsunemimiNetwork | v0.9.0 | https://github.com/kitsudaiki/libKitsunemimiNetwork.git |
libKitsunemimiCommon | v0.27.1 | https://github.com/kitsudaiki/libKitsunemimiCommon.git |