Metadata-Version: 2.4
Name: idr_torch
Version: 2.5.0
Summary: Distribution initialization util tool
Author-email: Nathan Cassereau <nathan@cassereau.fr>
License: MIT
Project-URL: Homepage, https://github.com/ncassereau/idr_torch
Project-URL: Source, https://github.com/ncassereau/idr_torch
Classifier: Development Status :: 5 - Production/Stable
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3 :: Only
Requires-Python: >=3.8
Description-Content-Type: text/markdown
Provides-Extra: notebook
Requires-Dist: ipyparallel; extra == "notebook"
Provides-Extra: dev
Requires-Dist: ruff>=0.1.0; extra == "dev"
Requires-Dist: torch; extra == "dev"
Requires-Dist: python-hostlist; extra == "dev"
Requires-Dist: ipyparallel; extra == "dev"

# idr_torch

## Description

Permet de récupérer les variables SLURM afin de gérér le multi-GPU/multi-noeuds pour le parallélisme sur Pytorch.

```python
import torch.distributed as dist
import idr_torch

if idr_torch.rank == 0:
    print(">>> Training on ", len(idr_torch.nodelist), " nodes and ", idr_torch.world_size, " processes") 

dist.init_process_group(backend='nccl', 
                        init_method='env://', 
                        world_size=idr_torch.world_size, 
                        rank=idr_torch.rank)
```


Si on veut rajouter une nouvelle API, on peut la mettre dans le dossier `api` et l'importer dans le `__init__.py`. Ou alors on peut la coder n'importe où, et après appeler `idr_torch.register_api(nouvelle_api)`.
Les nouvelles APIs doivent hériter de `idr_torch.API`. Si on veut faire en sorte que la MASTER_ADDR et le MASTER_PORT soit mis automatiquement (dans le cas où le lanceur ne le fait pas comme SLURM), alors il faut utiliser `idr_torch.AutoMasterAddressPort` comme décorateur de notre nouvelle API.

On patche aussi le profiler. Il suffit de remplacer `from torch.profiler import ...` par `from idr_torch.profiler import ...`.

Note : idr_torch est compatible avec submitit.
