https://github.com/liuzuxin/easy-runner
⭐ A lightweight tool for efficiently managing and executing parallel experiments.
https://github.com/liuzuxin/easy-runner
commandline-tool deep-learning-toolbox efficient-experiment experiment-management hyperparameter-optimization hyperparameter-tuning machine-learning parallel parallel-processing python
Last synced: 6 months ago
JSON representation
⭐ A lightweight tool for efficiently managing and executing parallel experiments.
- Host: GitHub
- URL: https://github.com/liuzuxin/easy-runner
- Owner: liuzuxin
- License: mit
- Created: 2023-05-07T02:44:41.000Z (almost 3 years ago)
- Default Branch: main
- Last Pushed: 2024-11-25T03:12:27.000Z (over 1 year ago)
- Last Synced: 2025-01-02T00:10:45.731Z (about 1 year ago)
- Topics: commandline-tool, deep-learning-toolbox, efficient-experiment, experiment-management, hyperparameter-optimization, hyperparameter-tuning, machine-learning, parallel, parallel-processing, python
- Language: Python
- Homepage:
- Size: 396 KB
- Stars: 9
- Watchers: 2
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
EasyRunner: Smoother Parallel Experiments

[](#license)
[](https://pypi.org/project/easy-runner)
EasyRunner is a lightweight tool for managing and executing multiple parallel experiments with minimum dependencies. It simplifies the process of running multiple experiments with different configurations or hyperparameters, while monitoring system resources.
## Features
- Run multiple experiments in parallel
- Simple dependencies. It only depends on `prettytable` and `psutil` library. So you can basically use this for any platforms.
- Monitor system resources (CPU and memory usage) during experiments
- Early termination of experiments by inputting the experiment number
- Colorized display of experiment status and resource usage
- Generate a list of instructions from a template and arguments
## Installation
The simpliest way is to install via [PyPI](https://pypi.org/project/easy-runner).
```
pip install easy_runner
```
Alternatively, you can also install from source, simply download or clone this repository and then:
```
git clone https://github.com/liuzuxin/easy-runner.git
cd easy-runner
pip install -e .
```
## Usage
1. Initialize an `EasyRunner` object with the required parameters.
2. Specificy a list of commandline instructions to run.
3. Use the `start` method to run experiments. You can specify a list of GPU IDs for running experiments (or `None` by default).
3. Optionally, use the `compose` method to generate a list of instructions from a template and arguments.
A simple example for running a list of instructions (2 parallel) on cuda 0, 1:
```python
from easy_runner import EasyRunner
# Initialize the EasyRunner
runner = EasyRunner(log_name="experiment_logs")
# Create a list of instructions
instructions = [
"python script1.py --param1 0.1 --param2 100",
"python script1.py --param1 0.2 --param2 200",
"python script2.py --param1 0.3 --param2 300",
"python script2.py --param1 0.4 --param2 400",
"python script3.py --param1 0.5 --param2 500"
]
# Run experiments
runner.start(instructions, gpus=[0, 1], max_parallel=2)
```
Anoter example of how to use the `compose` feature to perform grid search:
```python
from easy_runner import EasyRunner
# Initialize the EasyRunner
runner = EasyRunner(log_name="experiment_logs")
# List of seeds, and tasks
seeds = [0, 10, 20]
tasks = ["TaskA-v0 --epoch 30", "TaskB-v0 --epoch 150", "TaskC-v0 --epoch 80"]
# Define the command template
template = "nohup python train_script.py --project my_project --seed {} --task {} "
# Generate a list of instructions using the compose method
instructions = runner.compose(template, [agents, seeds, tasks])
# Run the experiments
runner.start(instructions, max_parallel=4)
```
You can try the example scripts in the `examples` folder:
```bash
cd examples
python test_easy_runner.py
```
Demo video:
## License
This project is licensed under the MIT License. See the [LICENSE](LICENSE) file for details.
## Contributing
There are still a lot of improvements could be done for this tool.
We welcome any contributions to this project. Please open an issue or submit a pull request on the GitHub repository.
Feel free to customize this template according to your specific requirements or add any additional information you think would be helpful for users.