Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/henripal/labnotebook
LabNotebook is a tool that allows you to flexibly monitor, record, save, and query all your machine learning experiments.
https://github.com/henripal/labnotebook
experiment-manager experimental-data machine-learning postgres postgresql python reproducibility reproducible-research vuejs webapp
Last synced: 2 months ago
JSON representation
LabNotebook is a tool that allows you to flexibly monitor, record, save, and query all your machine learning experiments.
- Host: GitHub
- URL: https://github.com/henripal/labnotebook
- Owner: henripal
- License: mit
- Created: 2018-02-20T20:17:48.000Z (almost 7 years ago)
- Default Branch: master
- Last Pushed: 2018-03-31T02:06:31.000Z (almost 7 years ago)
- Last Synced: 2024-08-01T23:31:12.125Z (6 months ago)
- Topics: experiment-manager, experimental-data, machine-learning, postgres, postgresql, python, reproducibility, reproducible-research, vuejs, webapp
- Language: Jupyter Notebook
- Homepage:
- Size: 3.84 MB
- Stars: 534
- Watchers: 19
- Forks: 40
- Open Issues: 4
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- awesome-llmops - LabNotebook - square) | (Training / Experiment Tracking)
README
# LabNotebook
## A simple experiment manager for deep learning experiments`labnotebook` allows you to:
- flexibly save **all** your experimental data in a postgres database through a very simple interface, including configuration, models, results, and training curves.
- monitor **any** indicators from your running experiments by streaming them through a web application:
![](./nbs/img/labnotebook.gif)
- access all this data forever through the web app, through [sqlalchemy](https://www.sqlalchemy.org/), or through traditional sql text queries.All 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()`.
You can see a very simple example notebook [here](./nbs/basic_usage.ipynb).
Another example of how to log while training a ConvNet in PyTorch is [here](./nbs/mnist.ipynb).
## Why labnotebook?
In 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:
- 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.- 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.
For a quick read on the tech stack choices I made, check out my [blog post](https://henripal.github.io/blog/labnotebook).
# Installation
### Set up a postgres database:
Follow 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://:@localhost/`.
Note you need version 9.4+.
### Install labnotebook:
Clone the repository:
```
git clone https://github.com/henripal/labnotebook.git
```Enter the directory and install labnotebook locally:
```
cd labnotebook
pip install .
```### Start the API:
Once you've installed the package, you can run the following command on your database url to start the API:
```
start_backend
```### Start the webapp:
Navigate to the `frontend` directory and serve it; for example using python 3's http.server:
```
cd frontend
python -m http.server
```Then open the serving address and port, typically `http//localhost:8000` if you're using the python server.
# Usage and Documentation:
A simple example notebook is available [here](./nbs/basic_usage.ipynb).
A more realstic example, training a convolutional neural network on MNIST in PyTorch and logging with `labnotebook` is available [here](./nbs/mnist.ipynb).
# Limitations and To Dos:
This 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.
For now I've tested this only on Ubuntu, with PyTorch-style experiments, using chromium.
I'm happy to get any feedback of how this runs on other platforms!## Contribution!
I'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!
# Attribution:
The front-end of this project uses [VueJS](https://vuejs.org/), [Vuetify](https://vuetifyjs.com/en/) and [Highcharts](https://www.highcharts.com/).
---
If you like this and want to be updated on what I'm doing, [follow me on twitter?](https://twitter.com/henripal)