2019-06-10 20:24:57 +00:00
# TRAINS
2019-06-13 22:07:02 +00:00
## Auto-Magical Experiment Manager & Version Control for AI
2019-06-10 17:00:28 +00:00
2019-07-08 20:29:09 +00:00
"Because it’ s a jungle out there"
2019-06-10 17:00:28 +00:00
2019-06-11 15:11:28 +00:00
[![GitHub license ](https://img.shields.io/github/license/allegroai/trains.svg )](https://img.shields.io/github/license/allegroai/trains.svg)
2019-06-11 11:36:36 +00:00
[![PyPI pyversions ](https://img.shields.io/pypi/pyversions/trains.svg )](https://img.shields.io/pypi/pyversions/trains.svg)
[![PyPI version shields.io ](https://img.shields.io/pypi/v/trains.svg )](https://img.shields.io/pypi/v/trains.svg)
[![PyPI status ](https://img.shields.io/pypi/status/trains.svg )](https://pypi.python.org/pypi/trains/)
2019-07-08 20:29:09 +00:00
TRAINS is our solution to a problem we share with countless other researchers and developers in the machine
learning/deep learning universe: Training production-grade deep learning models is a glorious but messy process.
TRAINS tracks and controls the process by associating code version control, research projects,
performance metrics, and model provenance.
2019-06-10 17:00:28 +00:00
2019-06-13 22:08:08 +00:00
We designed TRAINS specifically to require effortless integration so that teams can preserve their existing methods
and practices. Use it on a daily basis to boost collaboration and visibility, or use it to automatically collect
2019-06-13 22:07:02 +00:00
your experimentation logs, outputs, and data to one centralized server.
2019-06-10 17:00:28 +00:00
2019-07-08 20:29:09 +00:00
(Experience TRAINS live at [https://demoapp.trainsai.io ](https://demoapp.trainsai.io ))
2019-06-11 12:16:20 +00:00
![Alt Text ](https://github.com/allegroai/trains/blob/master/docs/webapp_screenshots.gif?raw=true )
2019-06-10 17:00:28 +00:00
2019-07-15 08:30:46 +00:00
## TRAINS Automatically Logs Everything
**With only two lines of code, this is what you are getting:**
2019-08-03 00:04:48 +00:00
* Git repository, branch, commit id, entry point and local git diff
* Python packages (including specific version)
* StdOut and StdErr
* Support for *Jupyter Notebook* (see [trains-jupyter-plugin ](https://github.com/allegroai/trains-jupyter-plugin ))
and *PyCharm* remote debugging (see [trains-pycharm-plugin ](https://github.com/allegroai/trains-pycharm-plugin ))
* Hyper-parameters
2019-07-15 08:30:46 +00:00
* ArgParser for command line parameters with currently used values
2019-08-03 00:04:48 +00:00
* Explicit parameters dictionary
* Tensorflow Defines (absl-py)
2019-07-15 08:30:46 +00:00
* Initial model weights file
* Model snapshots
* Tensorboard/TensorboardX scalars, metrics, histograms, images (with audio coming soon)
* Matplotlib & Seaborn
2019-08-03 00:04:48 +00:00
* Tensorflow, PyTorch, Keras, XGBoost and Scikit-Learn are supported (MxNet is coming soon)
2019-07-08 20:29:09 +00:00
**Detailed overview of TRAINS offering and system design can be found [Here ](https://github.com/allegroai/trains/blob/master/docs/brief.md ).**
## Using TRAINS
2019-06-10 17:00:28 +00:00
2019-07-15 08:30:46 +00:00
TRAINS is a two part solution:
2019-06-11 12:10:16 +00:00
2019-07-15 08:30:46 +00:00
1. TRAINS [python package ](https://pypi.org/project/trains/ ) (auto-magically connects your code, see [Using TRAINS ](https://github.com/allegroai/trains#using-trains ))
2019-08-03 00:04:48 +00:00
2019-07-15 08:30:46 +00:00
**TRAINS requires only two lines of code for full integration.**
2019-07-08 20:29:09 +00:00
2019-07-15 08:30:46 +00:00
To connect your code with TRAINS:
2019-07-08 20:29:09 +00:00
2019-07-15 08:30:46 +00:00
- Install TRAINS
2019-06-10 17:00:28 +00:00
2019-07-15 08:30:46 +00:00
pip install trains
2019-06-10 17:00:28 +00:00
2019-07-15 08:30:46 +00:00
- Add the following lines to your code
2019-06-10 17:00:28 +00:00
2019-07-15 08:30:46 +00:00
from trains import Task
task = Task.init(project_name="my project", task_name="my task")
2019-06-10 17:00:28 +00:00
2019-07-15 08:30:46 +00:00
* If project_name is not provided, the repository name will be used instead
* If task_name (experiment) is not provided, the current filename will be used instead
2019-06-10 17:00:28 +00:00
2019-07-15 08:30:46 +00:00
- Run your code. When TRAINS connects to the server, a link is printed. For example
2019-07-08 20:29:09 +00:00
2019-07-15 08:30:46 +00:00
TRAINS Results page:
https://demoapp.trainsai.io/projects/76e5e2d45e914f52880621fe64601e85/experiments/241f06ae0f5c4b27b8ce8b64890ce152/output/log
2019-06-11 12:10:16 +00:00
2019-07-15 08:30:46 +00:00
- Open the link and view your experiment parameters, model and tensorboard metrics
2019-08-03 00:04:48 +00:00
2019-08-03 00:09:58 +00:00
**See examples [here](https://github.com/allegroai/trains/tree/master/examples)**
2019-06-10 17:00:28 +00:00
2019-07-15 08:30:46 +00:00
2. [TRAINS-server ](https://github.com/allegroai/trains-server ) for logging, querying, control and UI ([Web-App](https://github.com/allegroai/trains-web))
2019-06-10 17:00:28 +00:00
2019-07-15 08:30:46 +00:00
We have a demo server up and running at [https://demoapp.trainsai.io ](https://demoapp.trainsai.io ). You can try out TRAINS and test your code with it.
Note that it resets every 24 hours and all of the data is deleted.
2019-07-16 14:20:43 +00:00
When you are ready to use your own TRAINS server, go ahead and [install *TRAINS-server* ](https://github.com/allegroai/trains-server ).
2019-07-15 08:30:46 +00:00
2019-07-16 14:20:43 +00:00
System diagram of TRAINS in action
2019-07-15 08:30:46 +00:00
< img src = "https://github.com/allegroai/trains/blob/master/docs/system_diagram.png?raw=true" width = "30%" >
## Configuring Your Own TRAINS server
2019-06-13 22:07:02 +00:00
2019-07-08 20:29:09 +00:00
1. Install and run *TRAINS-server* (see [Installing the TRAINS Server ](https://github.com/allegroai/trains-server ))
2019-06-13 22:07:02 +00:00
2019-07-08 20:29:09 +00:00
2. Run the initial configuration wizard for your TRAINS installation and follow the instructions to setup TRAINS package
(http://**_trains-server-ip_**:__port__ and user credentials)
2019-06-10 17:00:28 +00:00
trains-init
2019-06-13 22:27:25 +00:00
After installing and configuring, you can access your configuration file at `~/trains.conf`
Sample configuration file available [here ](https://github.com/allegroai/trains/blob/master/docs/trains.conf ).
2019-06-10 17:00:28 +00:00
2019-07-08 20:29:09 +00:00
## Who We Are
2019-06-10 17:00:28 +00:00
2019-06-13 22:08:08 +00:00
TRAINS is supported by the same team behind *allegro.ai* ,
2019-06-13 22:07:02 +00:00
where we build deep learning pipelines and infrastructure for enterprise companies.
2019-06-13 22:08:08 +00:00
We built TRAINS to track and control the glorious but messy process of training production-grade deep learning models.
We are committed to vigorously supporting and expanding the capabilities of TRAINS.
2019-06-10 17:00:28 +00:00
## Why Are We Releasing TRAINS?
2019-06-13 22:08:08 +00:00
We believe TRAINS is ground-breaking. We wish to establish new standards of experiment management in
2019-06-13 22:07:02 +00:00
deep-learning and ML. Only the greater community can help us do that.
2019-06-10 17:00:28 +00:00
2019-06-13 22:08:08 +00:00
We promise to always be backwardly compatible. If you start working with TRAINS today,
2019-06-13 22:07:02 +00:00
even though this project is currently in the beta stage, your logs and data will always upgrade with you.
2019-06-10 17:00:28 +00:00
## License
Apache License, Version 2.0 (see the [LICENSE ](https://www.apache.org/licenses/LICENSE-2.0.html ) for more information)
2019-07-16 18:15:27 +00:00
## Community & Support
For more examples and use cases, check [examples ](https://github.com/allegroai/trains/blob/master/docs/trains_examples.md ).
2019-06-10 17:00:28 +00:00
2019-07-08 20:29:09 +00:00
If you have any questions, look to the TRAINS [FAQ ](https://github.com/allegroai/trains/blob/master/docs/faq.md ), or
2019-07-09 08:17:50 +00:00
tag your questions on [stackoverflow ](https://stackoverflow.com/questions/tagged/trains ) with '**trains**' tag.
2019-06-10 17:00:28 +00:00
2019-07-08 20:29:09 +00:00
For feature requests or bug reports, please use [GitHub issues ](https://github.com/allegroai/trains/issues ).
2019-07-09 09:12:50 +00:00
Additionally, you can always find us at *trains@allegro.ai*
2019-07-08 20:29:09 +00:00
## Contributing
See the TRAINS [Guidelines for Contributing ](https://github.com/allegroai/trains/blob/master/docs/contributing.md ).
2019-06-10 17:00:28 +00:00
2019-07-08 20:29:09 +00:00
_May the force (and the goddess of learning rates) be with you!_