# Hydra Slurm Rich Launcher
<p align="center">
<img src="https://github.com/creinders/hydra-slurm-rich-launcher/assets/8905380/b34924df-7b94-4e20-bf54-7592e432ab74">
</p>
> A rich, visual interface for easily starting and monitoring your [Hydra](https://hydra.cc) applications on [SLURM](https://slurm.schedmd.com/documentation.html) clusters.
- **Ease of Use**: Streamline your workflow with a simplified process for submitting jobs to SLURM
- **Rich Visualization**: A clear and beautiful visual overview of your jobs
- **Integration**: Seamlessly integrates with Hydra-powered CLIs
- **Real-Time Updates**: Monitor the status of your jobs in real-time
## Installation
The Hydra Slurm Rich Launcher can be installed via pip:
```
pip install hydra-slurm-rich-launcher --upgrade
```
<details>
<summary>Alternative installation methods</summary>
### Locally
```
git clone git@github.com:creinders/hydra-slurm-rich-launcher.git
cd hydra-slurm-rich-launcher
poetry install
```
</details>
## Quick Start
Define your configuration in `config.yaml`:
```yaml
defaults:
- override hydra/launcher: slurm_rich
hydra:
launcher:
partition: <SLURM_PARTITION>
task: 1
```
Implement your Hydra app in `my_app.py`:
```python
import hydra
@hydra.main(config_path=".", config_name="config", version_base="1.3")
def my_app(cfg) -> None:
print(f"Task: {cfg.task}")
if __name__ == "__main__":
my_app()
```
Starting the app with `task=1,2,4` will launch three jobs with different configurations:
```bash
python my_app.py task=1,2,4 --multirun
```
![example](https://github.com/creinders/hydra-slurm-rich-launcher/assets/8905380/9ed7e585-573b-4982-8c6b-97365d2c410e)
Please see the [Hydra documentation](https://hydra.cc/docs/intro/) for details regarding the configuration and multi-run.
## Scalability
Lots of run? No problem! Hydra Slurm Rich Launcher smartly organizes all of your runs.
![Scalability](https://github.com/creinders/hydra-slurm-rich-launcher/assets/8905380/47fc4916-a3aa-41da-8ef1-97422c90e999)
## Restarts
Easily monitor the status of your jobs and swiftly restart any failed runs.
![Restarts](https://github.com/creinders/hydra-slurm-rich-launcher/assets/8905380/105764f5-55ef-486c-aa8e-3f5dba52d110)
## Parameters
The Hydra Slurm Rich Launcher has the following parameters.
```yaml
slurm_query_interval_s: 15 # Query update interval from SLURM controller
filter_job_ids: null # Filter specific jobs from the job array, separated by comma (e.g., "1,4"), that should not be executed
retry_strategy: 'prompt' # Defines job retry strategy. 'prompt': will ask the user, 'never': never restarts, and 'always': restarts the runs automatically
max_retries: 3 # Maximum retry attempts
le_mode: 'auto' # Low energy mode settings. The low energy mode disables all animations and can be turned on if the cpu-usage must be minimized. Values are: 'on', 'off', and 'auto'. 'auto' will turn on the low energy mode if the environment variable HYDRA_SLURM_PROGRESS_LE_MODE is set.
submitit_folder: ${hydra.sweep.dir}/.submitit/%j
timeout_min: 60
cpus_per_task: null
gpus_per_node: null
tasks_per_node: 1
mem_gb: null
nodes: 1
name: ${hydra.job.name}
partition: null
qos: null
comment: null
constraint: null
exclude: null
gres: null
cpus_per_gpu: null
gpus_per_task: null
mem_per_gpu: null
mem_per_cpu: null
account: null
signal_delay_s: 120
max_num_timeout: 0
additional_parameters: {}
array_parallelism: 256
setup: null
```
## License
Hydra Slurm Rich Launcher is licensed under [MIT License](./LICENSE).
## Credits
This package was inspired by and extends the capabilities of the `hydra-submitit-launcher`. We gratefully acknowledge the developers of [hydra-submitit-launcher](https://hydra.cc/docs/plugins/submitit_launcher/) and [Hydra](https://hydra.cc) for their contributions to the open-source community.
Raw data
{
"_id": null,
"home_page": "https://github.com/creinders/hydra-slurm-rich-launcher",
"name": "hydra-slurm-rich-launcher",
"maintainer": null,
"docs_url": null,
"requires_python": "<4.0,>=3.9",
"maintainer_email": null,
"keywords": "hydra, slurm, rich, launcher, command-line, cli, scheduler, monitoring, visualization",
"author": "Christoph Reinders",
"author_email": "reinders@tnt.uni-hannover.de",
"download_url": "https://files.pythonhosted.org/packages/8f/82/28bd1962b8841d6d86adbff07dfef673d545c534ee5207ad0cce52e3d2ee/hydra_slurm_rich_launcher-1.1.0.tar.gz",
"platform": null,
"description": "# Hydra Slurm Rich Launcher\n\n<p align=\"center\">\n <img src=\"https://github.com/creinders/hydra-slurm-rich-launcher/assets/8905380/b34924df-7b94-4e20-bf54-7592e432ab74\">\n</p>\n\n> A rich, visual interface for easily starting and monitoring your [Hydra](https://hydra.cc) applications on [SLURM](https://slurm.schedmd.com/documentation.html) clusters.\n\n- **Ease of Use**: Streamline your workflow with a simplified process for submitting jobs to SLURM\n- **Rich Visualization**: A clear and beautiful visual overview of your jobs\n- **Integration**: Seamlessly integrates with Hydra-powered CLIs\n- **Real-Time Updates**: Monitor the status of your jobs in real-time\n\n## Installation\n\nThe Hydra Slurm Rich Launcher can be installed via pip:\n```\npip install hydra-slurm-rich-launcher --upgrade\n```\n<details>\n <summary>Alternative installation methods</summary>\n \n ### Locally\n ```\n git clone git@github.com:creinders/hydra-slurm-rich-launcher.git\n cd hydra-slurm-rich-launcher\n poetry install\n ```\n</details>\n\n## Quick Start\n\nDefine your configuration in `config.yaml`:\n\n```yaml\ndefaults:\n - override hydra/launcher: slurm_rich\nhydra:\n launcher:\n partition: <SLURM_PARTITION>\n\ntask: 1\n```\n\nImplement your Hydra app in `my_app.py`:\n```python\nimport hydra\n\n@hydra.main(config_path=\".\", config_name=\"config\", version_base=\"1.3\")\ndef my_app(cfg) -> None:\n print(f\"Task: {cfg.task}\")\n\nif __name__ == \"__main__\":\n my_app()\n```\n\nStarting the app with `task=1,2,4` will launch three jobs with different configurations:\n```bash\npython my_app.py task=1,2,4 --multirun\n```\n![example](https://github.com/creinders/hydra-slurm-rich-launcher/assets/8905380/9ed7e585-573b-4982-8c6b-97365d2c410e)\n\nPlease see the [Hydra documentation](https://hydra.cc/docs/intro/) for details regarding the configuration and multi-run.\n\n## Scalability\n\nLots of run? No problem! Hydra Slurm Rich Launcher smartly organizes all of your runs.\n\n![Scalability](https://github.com/creinders/hydra-slurm-rich-launcher/assets/8905380/47fc4916-a3aa-41da-8ef1-97422c90e999)\n\n## Restarts\n\nEasily monitor the status of your jobs and swiftly restart any failed runs.\n\n![Restarts](https://github.com/creinders/hydra-slurm-rich-launcher/assets/8905380/105764f5-55ef-486c-aa8e-3f5dba52d110)\n\n## Parameters\n\nThe Hydra Slurm Rich Launcher has the following parameters.\n```yaml\nslurm_query_interval_s: 15 # Query update interval from SLURM controller\nfilter_job_ids: null # Filter specific jobs from the job array, separated by comma (e.g., \"1,4\"), that should not be executed\nretry_strategy: 'prompt' # Defines job retry strategy. 'prompt': will ask the user, 'never': never restarts, and 'always': restarts the runs automatically\nmax_retries: 3 # Maximum retry attempts\nle_mode: 'auto' # Low energy mode settings. The low energy mode disables all animations and can be turned on if the cpu-usage must be minimized. Values are: 'on', 'off', and 'auto'. 'auto' will turn on the low energy mode if the environment variable HYDRA_SLURM_PROGRESS_LE_MODE is set.\n\nsubmitit_folder: ${hydra.sweep.dir}/.submitit/%j\ntimeout_min: 60\ncpus_per_task: null\ngpus_per_node: null\ntasks_per_node: 1\nmem_gb: null\nnodes: 1\nname: ${hydra.job.name}\npartition: null\nqos: null\ncomment: null\nconstraint: null\nexclude: null\ngres: null\ncpus_per_gpu: null\ngpus_per_task: null\nmem_per_gpu: null\nmem_per_cpu: null\naccount: null\nsignal_delay_s: 120\nmax_num_timeout: 0\nadditional_parameters: {}\narray_parallelism: 256\nsetup: null\n```\n\n## License\n\nHydra Slurm Rich Launcher is licensed under [MIT License](./LICENSE).\n\n## Credits\n\nThis package was inspired by and extends the capabilities of the `hydra-submitit-launcher`. We gratefully acknowledge the developers of [hydra-submitit-launcher](https://hydra.cc/docs/plugins/submitit_launcher/) and [Hydra](https://hydra.cc) for their contributions to the open-source community.\n\n",
"bugtrack_url": null,
"license": "MIT",
"summary": "A rich, visual interface for easily starting and monitoring your Hydra applications on SLURM clusters",
"version": "1.1.0",
"project_urls": {
"Homepage": "https://github.com/creinders/hydra-slurm-rich-launcher"
},
"split_keywords": [
"hydra",
" slurm",
" rich",
" launcher",
" command-line",
" cli",
" scheduler",
" monitoring",
" visualization"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "270a6f2b0d7c6dd68bcc61a99226cd293830c26ff8869d6a02b0999e4a3eafee",
"md5": "a8b63e3f516042bd0f4ecfca310ab2c5",
"sha256": "04120b7ed2fcff8469c054cbf2888b5cdf4cf693af8aad162c8178fe84f1af52"
},
"downloads": -1,
"filename": "hydra_slurm_rich_launcher-1.1.0-py3-none-any.whl",
"has_sig": false,
"md5_digest": "a8b63e3f516042bd0f4ecfca310ab2c5",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": "<4.0,>=3.9",
"size": 14299,
"upload_time": "2024-07-01T14:24:24",
"upload_time_iso_8601": "2024-07-01T14:24:24.452425Z",
"url": "https://files.pythonhosted.org/packages/27/0a/6f2b0d7c6dd68bcc61a99226cd293830c26ff8869d6a02b0999e4a3eafee/hydra_slurm_rich_launcher-1.1.0-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "8f8228bd1962b8841d6d86adbff07dfef673d545c534ee5207ad0cce52e3d2ee",
"md5": "f50efa9217f9590b79739bb902eb99b5",
"sha256": "ac32e03d82d5daa480117228a2897382b70180c90c003a01b884b8a6f812858e"
},
"downloads": -1,
"filename": "hydra_slurm_rich_launcher-1.1.0.tar.gz",
"has_sig": false,
"md5_digest": "f50efa9217f9590b79739bb902eb99b5",
"packagetype": "sdist",
"python_version": "source",
"requires_python": "<4.0,>=3.9",
"size": 13156,
"upload_time": "2024-07-01T14:24:26",
"upload_time_iso_8601": "2024-07-01T14:24:26.403150Z",
"url": "https://files.pythonhosted.org/packages/8f/82/28bd1962b8841d6d86adbff07dfef673d545c534ee5207ad0cce52e3d2ee/hydra_slurm_rich_launcher-1.1.0.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-07-01 14:24:26",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "creinders",
"github_project": "hydra-slurm-rich-launcher",
"travis_ci": false,
"coveralls": false,
"github_actions": false,
"lcname": "hydra-slurm-rich-launcher"
}