Skip to main content

Tiny DDP training toolkit for quick-launch distributed training loops.

Project description

torchlitex

Tiny DDP launcher + trainer that exists because PyTorch 2.x still thinks we enjoy 400 lines of torchrun boilerplate and cryptic NCCL errors. This trims it to ~20 lines and keeps fork happy on Vast.

Why not just torchrun?

  • You like your code more than the 17 environment variables PyTorch asks you to memorize.
  • torchrun still feels like a 2010 MPI cosplay.
  • You want fork-based spawn that doesn’t randomly faceplant on Vast.
  • You want a one-function launcher + trainer, not a CLI maze.

Install

pip install -e .
# or with wandb logging
pip install -e .[wandb]

Quick start

from torchlitex.launcher import launch, DistributedConfig
from torchlitex.trainer import Trainer
from torch import nn, optim
import torch

def train_fn(rank, world_size, batch_size, epochs):
    dataset = MyDataset(...)
    model = MyModel(...)
    loss_fn = nn.CrossEntropyLoss()
    optimizer = optim.AdamW(model.parameters(), lr=3e-4)

    trainer = Trainer(
        model=model,
        dataset=dataset,
        loss_fn=loss_fn,
        optimizer=optimizer,
        grad_clip_norm=1.0,
        log_every=10,
    )
    trainer.ddp_train_loop(rank, world_size, batch_size=batch_size, epochs=epochs, ckpt_path="ckpt.pt")

if __name__ == "__main__":
    cfg = DistributedConfig(gpus=8)  # backend auto-switches nccl/gloo
    launch(train_fn, cfg, batch_size=64, epochs=20)

Features

  • Fork-first DDP launcher (no torchrun, no elastic).
  • Auto backend: nccl when CUDA exists, gloo when you’re on a laptop/CI.
  • Trainer: AMP toggle, grad clipping, gradient accumulation, microbatching, optional schedulers, eval hook, callbacks, and EMA support.
  • Optional wandb init + logging on rank0 (install with .[wandb]).
  • DistributedSampler + DataLoader defaults that just work.
  • Checkpoint utilities that handle optimizer/scaler safely.
  • Rank-aware logging that doesn’t spam.

Testing levels

  • Level 1: CPU unit tests (no dist).
  • Level 2: CPU DDP (backend="gloo", world_size=2) to validate spawn/env/sampler.
  • Level 3: Single GPU (gpus=1) for end-to-end DDP path.
  • Level 4: Real multi-GPU (same code, just crank gpus).

PyTorch 2.x roast (lightly toasted)

  • DDP config still feels like “choose your own adventure” but every page ends with NCCL complaining.
  • torch.distributed docs read like a treasure map; the treasure is another flag.
  • “Just use torchrun” is 2020’s “have you tried turning it off and on again?”

torchlitex keeps the good bits of torch 2.x (SDPA, compile, etc.) and sidesteps the distributed busywork. Use it, ship models, spend less time appeasing the NCCL spirits.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

torchlitex-0.1.2.tar.gz (10.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

torchlitex-0.1.2-py3-none-any.whl (9.8 kB view details)

Uploaded Python 3

File details

Details for the file torchlitex-0.1.2.tar.gz.

File metadata

  • Download URL: torchlitex-0.1.2.tar.gz
  • Upload date:
  • Size: 10.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.13

File hashes

Hashes for torchlitex-0.1.2.tar.gz
Algorithm Hash digest
SHA256 ebf852d36519e18bbd537c59365fcb3e7f66904d5353ef1a447980c432aee503
MD5 532db93453648581b93eafab6758017c
BLAKE2b-256 be66ce19b6ab7f6636825892dd4fba52bcbabb5c2fc25c92fc6e37902376e180

See more details on using hashes here.

File details

Details for the file torchlitex-0.1.2-py3-none-any.whl.

File metadata

  • Download URL: torchlitex-0.1.2-py3-none-any.whl
  • Upload date:
  • Size: 9.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.13

File hashes

Hashes for torchlitex-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 7ee2cfdfa7169ebf9889d05fc42e89515de417c2a73434d2bce729f40f7bcdb0
MD5 248cc752a66be146fe731abcb4ed5802
BLAKE2b-256 ff9822536218925915fadd69889e22154a8e9e1131251b5b8971c88ef370c4e7

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page