Monitor deep learning model training and hardware usage from mobile.
[![PyPI - Python Version](https://badge.fury.io/py/labml.svg)](https://badge.fury.io/py/labml)
[![PyPI Status](https://pepy.tech/badge/labml)](https://pepy.tech/project/labml)
[![Docs](https://img.shields.io/badge/labml-docs-blue)](https://docs.labml.ai/)
[![Twitter](https://img.shields.io/twitter/follow/labmlai?style=social)](https://twitter.com/labmlai?ref_src=twsrc%5Etfw)
### 🔥 Features
* Monitor running experiments from mobile phone or laptop
* Monitor hardware usage on any computer
with a single command
* Integrate with just 2 lines of code (see examples below)
* Keeps track of experiments including infomation like git commit, configurations and hyper-parameters
* API for custom visualizations
[![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/labmlai/labml/blob/master/samples/stocks/analysis.ipynb)
[![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/vpj/poker/blob/master/kuhn_cfr/kuhn_cfr.ipynb)
* Pretty logs of training progress
* Open source!
### Hosting the experiments server
#### Prerequisites
To install `MongoDB`, refer to the official
documentation [here](https://www.mongodb.com/docs/manual/tutorial/install-mongodb-on-ubuntu/).
#### Installation
Install the package using pip:
```bash
pip install labml-app
```
#### Starting the server
```sh
# Start the server on the default port (5005)
labml app-server
# To start the server on a different port, use the following command
labml app-server --port PORT
```
***Optional: to setup and configure Nginx in your server, please refer
to [this](https://github.com/labmlai/labml/blob/master/guides/server-setup.md).***
You can access the user interface either by visiting `http://localhost:{port}` or, if configured on a separate machine,
by navigating to `http://{server-ip}:{port}`.
### Monitor Experiments
#### Installation
1. Install the package using pip.
```bash
pip install labml
```
2. Create a file named `.labml.yaml` at the top level of your project folder, and add the following line to the file:
```yaml
app_url: http://localhost:{port}/api/v1/default
# If you are setting up the project on a different machine, include the following line instead,
app_url: http://{server-ip}:{port}/api/v1/default
```
#### PyTorch example
```python
from labml import tracker, experiment
with experiment.record(name='sample', exp_conf=conf):
for i in range(50):
loss, accuracy = train()
tracker.save(i, {'loss': loss, 'accuracy': accuracy})
```
#### Distributed training example
```python
from labml import tracker, experiment
uuid = experiment.generate_uuid() # make sure to sync this in every machine
experiment.create(uuid=uuid,
name='distributed training sample',
distributed_rank=0,
distributed_world_size=8,
)
with experiment.start():
for i in range(50):
loss, accuracy = train()
tracker.save(i, {'loss': loss, 'accuracy': accuracy})
```
### 📚 Documentation
* [Python API Reference](https://docs.labml.ai)
* [Samples](https://github.com/labmlai/labml/tree/master/samples)
##### Guides
* [API to create experiments](https://colab.research.google.com/github/labmlai/labml/blob/master/guides/experiment.ipynb)
* [Track training metrics](https://colab.research.google.com/github/labmlai/labml/blob/master/guides/tracker.ipynb)
* [Monitored training loop and other iterators](https://colab.research.google.com/github/labmlai/labml/blob/master/guides/monitor.ipynb)
* [API for custom visualizations](https://colab.research.google.com/github/labmlai/labml/blob/master/guides/analytics.ipynb)
* [Configurations management API](https://colab.research.google.com/github/labmlai/labml/blob/master/guides/configs.ipynb)
* [Logger for stylized logging](https://colab.research.google.com/github/labmlai/labml/blob/master/guides/logger.ipynb)
### 🖥 Screenshots
#### Formatted training loop output