Skip to main content

Carbon-aware PyTorch training plugin (multi-region via Electricity Maps/WattTime).

Project description

Carbon Aware ML

Carbon-aware training for PyTorch that pauses or schedules training based on real-time grid carbon intensity (and optionally electricity prices). Works in any region supported by Electricity Maps or WattTime. Each user supplies their own API credentials and region.

Installation

pip install 'carbonaware-ml[all]'         # includes scheduler + tensorboard extras
# or minimal
pip install carbonaware-ml

# zsh users: extras must be quoted

Configure environment

export CARBONAWARE_REGION="CA-ON"                 # your authorized zone (e.g., US-CAL-CISO, DE)
export ELECTRICITYMAPS_API_TOKEN="<your_token>"   # required for Electricity Maps
# Optional if your plan requires Basic Auth
export ELECTRICITYMAPS_EMAIL="you@example.com"

# Optional WattTime instead of Electricity Maps
# export WATTTIME_USERNAME="<user>"
# export WATTTIME_PASSWORD="<pass>"

Quickstart (Python)

import os
from carbonaware_ml import CarbonAwareTrainer, providers

# model/optimizer/dataloader are your own objects
trainer = CarbonAwareTrainer(
    model=my_model,
    optimizer=my_optimizer,
    dataloader=my_dataloader,
    region=os.environ.get("CARBONAWARE_REGION"),
    carbon_provider=providers.ElectricityMapsProvider(),
)

# Start only when favorable
trainer.train_until_green(threshold=200, num_epochs=3)

# Or train now, pausing when conditions exceed thresholds
trainer.train(num_epochs=3, threshold=200, check_interval_s=300)

Providers:

  • Electricity Maps (real-time/forecast carbon intensity)
    • Env: ELECTRICITYMAPS_API_TOKEN (required), ELECTRICITYMAPS_EMAIL (optional for Basic Auth)
  • WattTime (alternative intensity source via WATTTIME_USERNAME/WATTTIME_PASSWORD)

If no external provider is configured, the trainer defaults to an "always-allow" mode.

CLI

# Use env region or pass explicitly
carbonaware intensity --region "$CARBONAWARE_REGION"
carbonaware price --region "$CARBONAWARE_REGION"

TensorBoard (optional)

trainer = CarbonAwareTrainer(..., tb_log_dir="runs/demo")

Scheduler (optional)

from carbonaware_ml.scheduler import run_when_favorable
sched = run_when_favorable(trainer, num_epochs=1, threshold=150, price_threshold_cents=12.0, check_interval_s=300)

Author

License

MIT

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

carbonaware_ml-0.1.1.tar.gz (8.9 kB view details)

Uploaded Source

Built Distribution

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

carbonaware_ml-0.1.1-py3-none-any.whl (12.1 kB view details)

Uploaded Python 3

File details

Details for the file carbonaware_ml-0.1.1.tar.gz.

File metadata

  • Download URL: carbonaware_ml-0.1.1.tar.gz
  • Upload date:
  • Size: 8.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.1.4 CPython/3.13.7 Darwin/22.6.0

File hashes

Hashes for carbonaware_ml-0.1.1.tar.gz
Algorithm Hash digest
SHA256 1832e3a9d451fa8ce5dad39e945f88cb81d9625add9d37cb56955366e1eb6b01
MD5 23cbbfeaadae391bffed480625bc65c6
BLAKE2b-256 f1828e5d4e5de0de1b21920e10b3e5fd9c0053106c83530ee4dd1ee69a2e4677

See more details on using hashes here.

File details

Details for the file carbonaware_ml-0.1.1-py3-none-any.whl.

File metadata

  • Download URL: carbonaware_ml-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 12.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.1.4 CPython/3.13.7 Darwin/22.6.0

File hashes

Hashes for carbonaware_ml-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 481f87d18e2251a9e45b117e20aa14c66150019c436a703a4d501f80dcef5873
MD5 51a7985a8ae013d44add96078ffe59db
BLAKE2b-256 8f580cb5aaf2c50e9850a929608ecb97e8be6f23d6f356bcc4dcde65f0dd033a

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