Skip to main content

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 hotpath is used by an unrelated project. This project publishes as hotpath-ai, while the command remains hotpath.

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

  • DataLoader with num_workers=0 or no num_workers
  • DataLoader missing pin_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() missing set_to_none=True
  • torch.cuda.empty_cache() inside hot loops
  • evaluation code that calls eval() without no_grad() or inference_mode()
  • torch.tensor(existing_value) copies
  • DataLoader workers missing persistent_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


Download files

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

Source Distribution

hotpath_ai-0.1.0.tar.gz (16.6 kB view details)

Uploaded Source

Built Distribution

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

hotpath_ai-0.1.0-py3-none-any.whl (15.0 kB view details)

Uploaded Python 3

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

Hashes for hotpath_ai-0.1.0.tar.gz
Algorithm Hash digest
SHA256 96af9315eeba5629ba0cb5fc2b747e6df07a09ba72c0f62345b228c4f760fb17
MD5 7b62c797b1ccb429c31d30b61e7b42ca
BLAKE2b-256 1e3ab3494059501961c7f39a646c0e546abe0335183a36796a728aeba379fee2

See more details on using hashes here.

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

Hashes for hotpath_ai-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 9c9e88097ffc7282f47dac307b3d4111bf6938aaeda39c6ebd28acfb122e3f32
MD5 c6af806a3b43c88cfa1db29c65119cfc
BLAKE2b-256 df89a0b9089f0fec15152ec8f3422f75643fc62bf9c9a693a79b15dbdb59e541

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