A PyTorch GPU performance linter that finds expensive CUDA anti-patterns before they burn GPU hours.
Project description
PerfForge
Find slow PyTorch code before it burns GPU hours.
PerfForge is a small rule-based CLI for detecting common PyTorch performance anti-patterns before expensive training runs, CI jobs, or experiments start.
Package note: the PyPI name
hotpathis used by an unrelated project. This project publishes ashotpath-ai, while the command remainshotpath.
Why HotPath
GPU profilers are powerful, but they often show you traces after money has already been spent. HotPath catches common PyTorch performance mistakes before long training runs, CI jobs, or expensive experiments start.
Use it when you want to spot:
- CPU/GPU synchronization traps like
.item()in hot loops - slow input pipelines from underconfigured
DataLoaders - blocking device transfers
- missing mixed precision or
torch.compile - checkpointing and conversion work inside training loops
Quick Start
python -m hotpath analyze examples/slow_training.py
Install from PyPI:
pip install hotpath-ai
hotpath analyze examples/slow_training.py
Or after installing locally from this repo:
pip install -e .
hotpath analyze examples/slow_training.py
Scan a whole project:
hotpath analyze path/to/project
Emit JSON for CI, scripts, or a future dashboard:
hotpath analyze path/to/project --format json
Fail CI when warnings are present:
hotpath analyze path/to/project --fail-on warning
Current Checks
DataLoaderwithnum_workers=0or nonum_workersDataLoadermissingpin_memory=True.item()inside loops, which can force GPU synchronization.cpu(),.cuda(), or.to(...)calls inside loops- CPU tensor creation inside loops without a
device=... - manual attention patterns that may be replaced with
torch.nn.functional.scaled_dot_product_attention - training scripts that never call
torch.compile - training scripts that appear to use full precision without autocast
- Python loops over tensors or batches that may block vectorization
optimizer.zero_grad()missingset_to_none=Truetorch.cuda.empty_cache()inside hot loops- evaluation code that calls
eval()withoutno_grad()orinference_mode() torch.tensor(existing_value)copiesDataLoaderworkers missingpersistent_workers=True- loop transfers missing
non_blocking=True torch.save(...)inside hot loops.numpy()conversion inside hot loops
Example Output
[WARNING] KP003 line 31: .item() inside loop can synchronize the GPU
Accumulate tensors on-device and call .item() only for occasional logging.
[INFO] KP010 line 29: zero_grad missing set_to_none=True
Try optimizer.zero_grad(set_to_none=True).
GitHub Topics
Recommended repository topics:
pytorch, cuda, gpu, gpu-optimization, performance, profiling,
static-analysis, linting, machine-learning, deep-learning, mlops,
ai-tools, developer-tools, training, torch, triton
Philosophy
HotPath is intentionally not a magic kernel generator yet. The first product is the GPU performance linter experts wish existed: clear detections, plain-English explanations, and copy-pasteable fixes.
PyPI Name
The installable package name is hotpath-ai because hotpath is already used
by an unrelated PyPI project. The Python import package and command-line entry
point are still hotpath:
pip install hotpath-ai
hotpath analyze path/to/project
Roadmap
See PRODUCT_PLAN.md.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file hotpath_ai-0.1.0.tar.gz.
File metadata
- Download URL: hotpath_ai-0.1.0.tar.gz
- Upload date:
- Size: 16.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
96af9315eeba5629ba0cb5fc2b747e6df07a09ba72c0f62345b228c4f760fb17
|
|
| MD5 |
7b62c797b1ccb429c31d30b61e7b42ca
|
|
| BLAKE2b-256 |
1e3ab3494059501961c7f39a646c0e546abe0335183a36796a728aeba379fee2
|
File details
Details for the file hotpath_ai-0.1.0-py3-none-any.whl.
File metadata
- Download URL: hotpath_ai-0.1.0-py3-none-any.whl
- Upload date:
- Size: 15.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9c9e88097ffc7282f47dac307b3d4111bf6938aaeda39c6ebd28acfb122e3f32
|
|
| MD5 |
c6af806a3b43c88cfa1db29c65119cfc
|
|
| BLAKE2b-256 |
df89a0b9089f0fec15152ec8f3422f75643fc62bf9c9a693a79b15dbdb59e541
|