Metadata-Version: 2.4
Name: echelon3
Version: 0.4.1
Summary: Config-driven PyTorch training framework: assemble nets, data, losses and trainers from YAML
Project-URL: Homepage, https://github.com/veryviolet/echelon3
Project-URL: Repository, https://github.com/veryviolet/echelon3
Project-URL: Issues, https://github.com/veryviolet/echelon3/issues
Project-URL: Documentation, https://veryviolet.github.io/echelon3/
Author-email: Kirill Groshenkov <kir.groshenkov@gmail.com>
License-Expression: Apache-2.0
License-File: LICENSE
Keywords: computer-vision,config-driven,deep-learning,hydra,pytorch,training
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: Science/Research
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
Classifier: Topic :: Software Development :: Libraries
Requires-Python: >=3.10
Requires-Dist: albumentations>=1.4
Requires-Dist: colorama>=0.4
Requires-Dist: hydra-core>=1.3
Requires-Dist: numpy>=1.24
Requires-Dist: omegaconf>=2.3
Requires-Dist: opencv-python>=4.8
Requires-Dist: pandas>=2.0
Requires-Dist: scikit-learn>=1.3
Requires-Dist: scipy>=1.10
Requires-Dist: tensorboard>=2.14
Requires-Dist: timm>=1.0
Requires-Dist: torch>=2.1
Requires-Dist: torchmetrics>=1.2
Requires-Dist: torchvision>=0.16
Requires-Dist: tqdm>=4.65
Provides-Extra: detection
Requires-Dist: faster-coco-eval>=1.5; extra == 'detection'
Provides-Extra: docs
Requires-Dist: mkdocs-material<10,>=9.7; extra == 'docs'
Requires-Dist: mkdocs<2,>=1.6.1; extra == 'docs'
Provides-Extra: export
Requires-Dist: onnx>=1.15; extra == 'export'
Requires-Dist: onnxruntime>=1.16; extra == 'export'
Provides-Extra: sam
Requires-Dist: mosaicml>=0.3.1; extra == 'sam'
Provides-Extra: smp
Requires-Dist: segmentation-models-pytorch>=0.3.3; extra == 'smp'
Description-Content-Type: text/markdown

# Echelon3

Config-driven PyTorch training framework. Every component of a training run —
network, dataset, augmentations, losses, metrics, optimizer, scheduler, trainer,
export — is described in a YAML config as a `module` / `type` / `config` triple
and instantiated dynamically:

```yaml
net:
  module: echelon3.nets.classifier   # import path (or a path to a .py file)
  type: ClassifierNet                # class or factory function in that module
  config: { ... }                    # constructor kwargs
```

There is no component registry: anything importable can be plugged in — classes
from `echelon3`, from `torch`/`timm`/`torchmetrics`/`albumentations`, or from
your own project code living next to your configs.

**Documentation: <https://veryviolet.github.io/echelon3/>**

## Install

```
pip install echelon3
```

## Train

```
echelon3-train --config-dir ./configs --config-name my_experiment
```

Multi-GPU (DDP):

```
CUDA_VISIBLE_DEVICES=0,1,2,3 torchrun --nproc_per_node=4 \
    $(which echelon3-train) --config-dir ./configs --config-name my_experiment
```

`dataloaders.train.config.batch_size` is the global batch size; under DDP it is
split across ranks automatically. Without `torchrun` the trainer falls back to
`DataParallel` (`device` / `device_ids` config keys).

## Quick start

See `examples/` for a self-contained smoke run: synthetic dataset generation and
a minimal classifier config.
