torchloop
Lightweight PyTorch utility library for training, evaluation, and TFLite export — without the framework lock-in.
The Problem
You write the same PyTorch training loop in every project. Same checkpoint logic. Same metric assembly. Same TFLite export steps. It's tedious and inconsistent.
torchloop abstracts exactly that — nothing more.
Install
# Base installation
pip install torchloop
# With TFLite export support
pip install torchloop[export]
# With edge deployment support
pip install torchloop[edge]
# Development setup
pip install torchloop[dev]
Usage
Training
from torchloop import EarlyStopping, ModelCheckpoint, Trainer
trainer = Trainer(
model,
optimizer=torch.optim.Adam(model.parameters()),
criterion=torch.nn.CrossEntropyLoss(),
device="cuda",
use_amp=True,
accumulate_steps=4,
patience=5,
)
trainer.add_callback(EarlyStopping(patience=5))
trainer.add_callback(ModelCheckpoint(filepath="best.pt"))
history = trainer.fit(train_loader, val_loader, epochs=30)
trainer.save("best.pt")
Evaluation
from torchloop import Evaluator
ev = Evaluator(model, device="cuda")
results = ev.report(val_loader, class_names=["No Damage", "Minor", "Major", "Destroyed"])
# prints sklearn classification report
fig = ev.confusion_matrix(val_loader)
fig.savefig("cm.png")
per_class = ev.f1_per_class(val_loader)
# {'No Damage': 0.91, 'Minor': 0.78, ...}
Export
from torchloop.exporter import Exporter
exp = Exporter(model, input_shape=(1, 3, 224, 224))
exp.to_onnx("model.onnx")
exp.to_tflite("model.tflite", quantize=True)
Edge Deployment
from torchloop.edge import deploy_to_edge, estimate_model
stats = estimate_model(model, (1, 3, 224, 224), target_device="esp32")
print(f"RAM: {stats['estimated_ram_mb']} MB")
print(f"Latency: {stats['estimated_latency_ms']} ms")
deploy_to_edge(
model,
target="esp32",
input_shape=(1, 3, 224, 224),
output_path="model.tflite",
quantize=True,
quantize_type="int8",
)
Design Principles
- No lock-in: Works with any nn.Module. No subclassing required.
- Minimal surface area: Three modules. That's it.
- You own the model: torchloop wraps your loop, doesn't replace your architecture.
Roadmap
-
v0.1.0— Trainer, Evaluator, Exporter -
v0.2.0— LR scheduler support, mixed precision (AMP) -
v0.2.1— Gradient accumulation + callbacks -
v0.2.2— Edge submodule -
v0.3.0— W&B / MLflow hooks + CoreML export -
v0.3.1— Model pruning utilities
License
MIT
Metadata
Release files for torchloop 0.3.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| torchloop-0.3.0.tar.gz | 19.7 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| torchloop-0.3.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 37.3 kB
Release files / torchloop-0.3.0.tar.gz
| Download URL | torchloop-0.3.0.tar.gz |
|---|---|
| Size | 19.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
49ccfdfae7942b259a07a8eb1a395e4256a58af7f5cf53f7262e29e588c5c509
|
|
BLAKE2b-256 checksum How to use checksums |
0b6b98941fe280062eaba323eefe253b3332a6541f9a04fe175b2bf257748948
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Mar 27, 2026.
Transparency logRelease files / torchloop-0.3.0-py3-none-any.whl
| Download URL | torchloop-0.3.0-py3-none-any.whl |
|---|---|
| Size | 17.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
22dbe0adbeff9765f740dc9754a62d6f2e4c3443506ef49fb67de5e13a2e1e98
|
|
BLAKE2b-256 checksum How to use checksums |
d9d297918f46b91f67d603eca651c1586a37de444b89902cb2395b163bab7733
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Mar 27, 2026.
Transparency log