{"id":15158070,"url":"https://github.com/jaidevd/kepler","last_synced_at":"2025-09-30T07:30:58.533Z","repository":{"id":32915175,"uuid":"146073154","full_name":"jaidevd/kepler","owner":"jaidevd","description":"Smart journal for ML experiments.","archived":true,"fork":false,"pushed_at":"2023-03-24T22:38:32.000Z","size":155,"stargazers_count":7,"open_issues_count":3,"forks_count":1,"subscribers_count":3,"default_branch":"master","last_synced_at":"2024-12-15T11:08:03.925Z","etag":null,"topics":["deep-learning","keras","machine-learning","python","scientific-workflows","scikit-learn","tensorflow"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jaidevd.png","metadata":{"files":{"readme":"README.rst","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2018-08-25T06:56:10.000Z","updated_at":"2023-03-27T04:43:34.000Z","dependencies_parsed_at":"2023-09-27T03:39:17.711Z","dependency_job_id":null,"html_url":"https://github.com/jaidevd/kepler","commit_stats":{"total_commits":29,"total_committers":2,"mean_commits":14.5,"dds":0.03448275862068961,"last_synced_commit":"9b8de57dd85d706fc9aa707d02810403ff39bfd6"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jaidevd%2Fkepler","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jaidevd%2Fkepler/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jaidevd%2Fkepler/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jaidevd%2Fkepler/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jaidevd","download_url":"https://codeload.github.com/jaidevd/kepler/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":234712891,"owners_count":18875527,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["deep-learning","keras","machine-learning","python","scientific-workflows","scikit-learn","tensorflow"],"created_at":"2024-09-26T20:22:46.565Z","updated_at":"2025-09-30T07:30:58.150Z","avatar_url":"https://github.com/jaidevd.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"Kepler\n======\n\n.. image:: https://travis-ci.com/jaidevd/kepler.svg?branch=master\n    :target: https://travis-ci.com/jaidevd/kepler\n\nKepler is a monitoring system for machine learning experiments. It allows users to perform efficient bookkeeping, logging and auditing on ML models and experiments. It rests on the idea that machine learning is cheap, but not cheap enough for repetitive mistakes.\n\nKepler empowers developers and data scientists to apply the DRY principle in machine learning practice by:\n\n1. Applying sanity checks to models and continuously monitoring model activity\n\n   It is easy to spin up a model that works (a model \"works\" or \"learns\" when it satisfactorily optimizes some metric), but unless carefully examined, it is quite likely that the model is acting against itself. It is very easy to throw together model components that are inherently contradictory or less than optimal. This sub-optimal design can manifest itself in many ways - from something as simple as not shuffling training samples to as complex as having a deep network with an internally incompatible set of layers. Kepler uses a set of `checks \u003cdoc/checks.rst\u003e`_ to search for such inconsistencies or bad practices.\n\n2. Enabling efficient bookkeeping with a searchable interface\n\n   Kepler installs a sqlite DB which stores almost everything done within the Kepler instance. Kepler organizes every model under a \"project\". The definition and metadata associated with each model under a project is saved under that projects. Multiple projects may share a model. Each training / validation / testing action on a model is interpreted as an \"experiment\", and the results of all such experimens are stored in the DB. The projects, models and experiments are all searchable - allowing for better code reuse and more efficient grid search.\n\n\nInstallation\n------------\n\nTo install Kepler, download or clone this repository and run:\n\n.. code-block:: bash\n\n   $ pip install -e .\n\nAfter the installation, run the initialization script as follows:\n\n.. code-block:: bash\n\n   $ kepler setup\n   Welcome to Kepler!\n\nThis means that the Kepler database has been successfully installed on your system.\n\n\nUsage\n-----\n\nThe main entry point into Kepler is the ``kepler.ModelInspector`` class. It is a context manager which wraps a model during training or evaluation.\n\n.. code-block:: python\n\n   \u003e\u003e\u003e from kepler import ModelInspector\n   \u003e\u003e\u003e from kepler.sample_models import mnist_shallow  # A 3 layer keras NN intended for MNIST\n   \u003e\u003e\u003e from sklearn.datasets import load_digits\n   \u003e\u003e\u003e digits = load_digits()\n   \u003e\u003e\u003e X, y = digits['data'], digits['target']\n   \u003e\u003e\u003e with ModelInspector(model=mnist_shallow()) as mi:\n   ...      mi.fit(X, y)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjaidevd%2Fkepler","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjaidevd%2Fkepler","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjaidevd%2Fkepler/lists"}