{"id":13633352,"url":"https://github.com/henripal/labnotebook","last_synced_at":"2025-04-18T10:34:34.986Z","repository":{"id":139091185,"uuid":"122250958","full_name":"henripal/labnotebook","owner":"henripal","description":"LabNotebook is a tool that allows you to flexibly monitor, record, save, and query all your machine learning experiments.","archived":false,"fork":false,"pushed_at":"2018-03-31T02:06:31.000Z","size":4028,"stargazers_count":534,"open_issues_count":4,"forks_count":40,"subscribers_count":19,"default_branch":"master","last_synced_at":"2024-08-01T23:31:12.125Z","etag":null,"topics":["experiment-manager","experimental-data","machine-learning","postgres","postgresql","python","reproducibility","reproducible-research","vuejs","webapp"],"latest_commit_sha":null,"homepage":"","language":"Jupyter Notebook","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/henripal.png","metadata":{"files":{"readme":"README.md","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,"roadmap":null,"authors":null}},"created_at":"2018-02-20T20:17:48.000Z","updated_at":"2024-04-22T02:54:21.000Z","dependencies_parsed_at":"2023-03-31T11:33:53.898Z","dependency_job_id":null,"html_url":"https://github.com/henripal/labnotebook","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/henripal%2Flabnotebook","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/henripal%2Flabnotebook/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/henripal%2Flabnotebook/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/henripal%2Flabnotebook/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/henripal","download_url":"https://codeload.github.com/henripal/labnotebook/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":223779679,"owners_count":17201216,"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":["experiment-manager","experimental-data","machine-learning","postgres","postgresql","python","reproducibility","reproducible-research","vuejs","webapp"],"created_at":"2024-08-01T23:00:34.367Z","updated_at":"2024-11-09T02:31:52.882Z","avatar_url":"https://github.com/henripal.png","language":"Jupyter Notebook","readme":"# LabNotebook\n## A simple experiment manager for deep learning experiments\n\n`labnotebook` allows you to:\n- flexibly save **all** your experimental data in a postgres database through a very simple interface, including configuration, models, results, and training curves.\n- monitor **any** indicators from your running experiments by streaming them through a web application:\n![](./nbs/img/labnotebook.gif)\n- access all this data forever through the web app, through [sqlalchemy](https://www.sqlalchemy.org/), or through traditional sql text queries.\n\nAll you need to do is to modify your code to include `labnotebook.start_experiment()` and `labnotebook.stop_experiment()` and pass the info you would like to save to the database as arguments. As an option, you can save information for each training step by using `labnotebook.step_experiment()`.\n\nYou can see a very simple example notebook [here](./nbs/basic_usage.ipynb).\n\nAnother example of how to log while training a ConvNet in PyTorch is [here](./nbs/mnist.ipynb).\n\n## Why labnotebook?\n\nIn the life sciences, scientists write everything in their [lab notebooks](https://en.wikipedia.org/wiki/Lab_notebook). I wanted a similar permanent store for my PyTorch experiments that allowed me to:\n- asynchronously look at what was going on. [TensorBoard](https://www.tensorflow.org/programmers_guide/summaries_and_tensorboard) obviously provides excellent functionality, albeit with an interface and storage system that I didn't especially like. It's very hard to keep track of all the indicators of old experiments and to compare them to newer experiments.\n\n- store everything forever in a queryable database. [Sacred](https://github.com/IDSIA/sacred) provides some of this functionality, but the interface is complex and inflexible. In addition, I think experimental data is relational data intermixed with nosql data, and postgres is better adapted to the type of queries for this kind of experimental data.\n\nFor a quick read on the tech stack choices I made, check out my [blog post](https://henripal.github.io/blog/labnotebook).\n\n# Installation\n\n### Set up a postgres database:\n\nFollow the [detailed installation guides](https://wiki.postgresql.org/wiki/Detailed_installation_guides), create your database, and make a note of your database's url. It's usually of the form `postgres://\u003cusername\u003e:\u003cpassword\u003e@localhost/\u003cdatabasename\u003e`.\n\nNote you need version 9.4+.\n\n### Install labnotebook:\n\nClone the repository:\n\n```\ngit clone https://github.com/henripal/labnotebook.git\n```\n\nEnter the directory and install labnotebook locally:\n```\ncd labnotebook\npip install .\n```\n\n### Start the API:\n\nOnce you've installed the package, you can run the following command on your database url to start the API:\n```\nstart_backend \u003cdatabase_url\u003e\n```\n\n### Start the webapp:\n\nNavigate to the `frontend` directory and serve it; for example using python 3's http.server:\n```\ncd frontend\npython -m http.server\n```\n\nThen open the serving address and port, typically `http//localhost:8000` if you're using the python server.\n\n# Usage and Documentation:\n\nA simple example notebook is available [here](./nbs/basic_usage.ipynb).\n\nA more realstic example, training a convolutional neural network on MNIST in PyTorch and logging with `labnotebook` is available [here](./nbs/mnist.ipynb).\n\n# Limitations and To Dos:\n\nThis is a very early alpha version of the tool that I'd thought some people might enjoy. I haven't tested it on older browsers or frameworks. \nFor now I've tested this only on Ubuntu, with PyTorch-style experiments, using chromium.\nI'm happy to get any feedback of how this runs on other platforms! \n\n## Contribution!\n\nI'm by myself working on this and there are bugs galore. Any contributions are welcome; let me know if you would like to contribute but not sure how to go about doing it, and I'll walk you through it!\n\n\n# Attribution:\n\nThe front-end of this project uses [VueJS](https://vuejs.org/), [Vuetify](https://vuetifyjs.com/en/) and [Highcharts](https://www.highcharts.com/).\n\n---\n\nIf you like this and want to be updated on what I'm doing, [follow me on twitter?](https://twitter.com/henripal)\n","funding_links":[],"categories":["Experiment Tracking","Jupyter Notebook","Training"],"sub_categories":["Experiment Tracking"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhenripal%2Flabnotebook","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhenripal%2Flabnotebook","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhenripal%2Flabnotebook/lists"}