Skip to main content

Engineer-first training calibration: estimate VRAM fit, profile short runs, and pick GPU configs under real budget constraints.

Project description

alloc

Find and fix training bottlenecks. Zero code changes.

PyPI Python License

pip install alloc
alloc run python train.py
alloc v0.0.2 — Calibrate

 Run Summary
  Peak VRAM       31.2 GB / 40.0 GB (A100)
  VRAM used       78.0%
  Avg GPU util    72.3%
  Avg power       287 W
  Duration        24.1s (auto-stopped: metrics stable at 18.2s)
  Step time       148.5 ms (p50) / 152.1 ms (p90)
  Throughput      42.3 samples/sec

  Artifact: alloc_artifact.json.gz

That's it. No decorators, no config files, no code changes. Alloc wraps your command, profiles GPU usage, and tells you what's wrong.


What you get

alloc diagnose reads your training script and tells you exactly what to change:

alloc diagnose train.py
alloc diagnose — 3 findings in train.py

 CRITICAL  DL005 — DataLoader running in main thread
   train.py:47   num_workers=0 → num_workers=8
   num_workers=0 loads data in the main thread, blocking GPU computation entirely.
   Expected impact: ~30-50% faster training with parallel data loading

 WARNING   PREC002 — Using fp16, consider bf16
   train.py:56   dtype: float16 → dtype: bfloat16
   H100 supports bf16 natively — eliminates loss scaling overhead.
   Expected impact: ~5-10% speedup, eliminates GradScaler complexity

 INFO      THRU001 — cudnn.benchmark not enabled
   Add: torch.backends.cudnn.benchmark = True
   Expected impact: ~5-10% speedup for fixed-size inputs

Summary: 1 critical, 1 warning, 1 info
Run with --diff to generate patches | --json for CI output

alloc ghost estimates VRAM before you launch:

alloc ghost train.py --dtype bf16
 Ghost Scan — 7.0B params (bf16)

  Model weights       13.04 GB
  Gradients           13.04 GB
  Optimizer (Adam)    78.23 GB
  Activations (est.)   0.50 GB
  Buffer (10%)        10.48 GB

  Total VRAM         115.28 GB

alloc scan ranks GPU configs without a GPU:

alloc scan --model llama-3-70b --gpu H100-80GB --num-gpus 8

Works with everything

Alloc wraps your launch command. No framework-specific setup required.

alloc run python train.py
alloc run torchrun --nproc_per_node=4 train.py
alloc run accelerate launch train.py
alloc run srun python train.py           # Slurm
alloc run ray job submit -- python train.py

Multi-GPU detection is automatic (discovers all GPUs in the process tree).


Deeper signals (optional)

Add a one-line callback for step-level timing:

# HuggingFace
from alloc import HuggingFaceCallback
trainer = Trainer(..., callbacks=[HuggingFaceCallback()])

# Lightning
from alloc import LightningCallback
trainer = Trainer(..., callbacks=[LightningCallback()])

This unlocks step time p50/p90, throughput, and dataloader bottleneck detection.


All commands

Command What it does
alloc run <cmd> Profile a training run (auto-stops when stable)
alloc diagnose <script> AST analysis with specific fix suggestions
alloc ghost <script> Estimate VRAM before launching
alloc scan --model <name> Rank GPU configs remotely (no GPU needed)
alloc catalog list Browse 13 GPUs with specs and pricing
alloc init Configure GPU fleet and budget (.alloc.yaml)
alloc login Authenticate for dashboard + auto-upload

Every command supports --json for CI/CD integration.


Dashboard

Log in to get team visibility, budget tracking, and optimization proposals:

alloc login --browser
alloc run python train.py    # auto-uploads when logged in

Dashboard at alloclabs.com


Design principles

  1. Zero configalloc run python train.py works out of the box
  2. Never crash training — all Alloc failures are caught silently
  3. No monkey-patching — external monitoring only, deeper signals opt-in
  4. Local-first — works in air-gapped environments, no internet required

Links

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

alloc-0.0.8.tar.gz (165.3 kB view details)

Uploaded Source

Built Distribution

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

alloc-0.0.8-py3-none-any.whl (120.5 kB view details)

Uploaded Python 3

File details

Details for the file alloc-0.0.8.tar.gz.

File metadata

  • Download URL: alloc-0.0.8.tar.gz
  • Upload date:
  • Size: 165.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for alloc-0.0.8.tar.gz
Algorithm Hash digest
SHA256 803135fe23f26bc9e3d46845802530a132058bc449243c1ce8b21d8e9d9c7838
MD5 b6a76ed05f51b6dd3f60cf2706fbd4f2
BLAKE2b-256 94b07161e0a01a7a6c50e8d03e0ec81e3a88964ba3546a872d2419cc3627491c

See more details on using hashes here.

Provenance

The following attestation bundles were made for alloc-0.0.8.tar.gz:

Publisher: publish-pypi.yml on alloc-labs/platform

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file alloc-0.0.8-py3-none-any.whl.

File metadata

  • Download URL: alloc-0.0.8-py3-none-any.whl
  • Upload date:
  • Size: 120.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for alloc-0.0.8-py3-none-any.whl
Algorithm Hash digest
SHA256 00213a8dc3f6cddb0edfd08b85e3a863f268c2c74574053556acb0edaf766d9f
MD5 4f7d0bd6e7a588f7251ff2fe1cf23542
BLAKE2b-256 faac090e0b73b53040c7a96e96de44bc9b7831d48ff407d047e4c4adea2f622f

See more details on using hashes here.

Provenance

The following attestation bundles were made for alloc-0.0.8-py3-none-any.whl:

Publisher: publish-pypi.yml on alloc-labs/platform

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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