Skip to main content

A collection of usefull hydra callbacks for hydra configuration

Project description

Hydra Callbacks

style framework codecov CD CI Release

A collection of usefulls and simple to use callbacks for the https://hydra.cc/ configuration framework.

Installation

pip install hydra-callbacks

Development version

pip install git+https://github.com/paquiteau/hydra-callbacks

Usage

In your hydra root config file add the following, or analoguous:

hydra:
  callbacks:
    git_infos:
      _target_: hydra_callbacks.GitInfo
      clean: true
    latest_run:
      _target_: hydra_callbacks.LatestRunLink
    resource_monitor:
      _target_: hydra_callbacks.ResourceMonitor
      sample_interval: 0.5
    runtime_perf:
      _target_: hydra_callbacks.RuntimePerformance      

This will enrich your script output with:

paquiteau@laptop$ python my_app.py
[hydra] Git sha: 844b9ca1a74d8307ef5331351897cebb18f71b88, dirty: False

## All your app log and outputs ##

[hydra][INFO] - Total runtime: 0.51 seconds
[hydra][INFO] - Writing monitoring data to [...]/outputs/2023-04-06/16-02-46/resource_monitoring.csv
[hydra][INFO] - Latest run is at: [...]/outputs/latest

Detailled configuration for each callback is available in the tests/test_app/ folder.

Available Callbacks

Name Action
GitInfo Check status of Repository
LatestRunLink Get a link to the latest run
MultiRunGatherer Gather results json file in a single table
RuntimePerformance Get Execution time for each run
ResourceMonitor Monitor resources of running jobs (CPU and Memory)

And more to come !

Also Available

  • PerfLogger : A simple to use performance logger
  
from hydra_callbacks import PerfLogger 
import logging

log = logging.getLogger(__name__)
def main_app(cfg):
    with PerfLogger(log, "step1"):
        sleep(1)

    with PerfLogger(log, "step2"):
        sleep(2)
    PerfLogger.recap(log)
  • RessourceMonitorService : A simple CPU and GPU usage and memory sampler. It launches an extra process to monitor everything.
from hydra_callbacks.monitor import RessourceMonitorService
import os 

monitor = RessourceMonitorService(interval=0.2, gpu_monit=True)

monitor.start()
# Launch heavy stuff 
metrics = monitor.stop()

# Or use it as a context manager
with RessourceMonitorService(interval=0.2, gpu_monit=True) as monitor: 
   # launch heavy stuff
   
metrics_values = monitor.get_values()

You too, have cool Callbacks, or idea for one ?

Open a PR or an issue !

Possible Ideas

  • A callback that summarize log from multiple runs
  • Monitoring of GPU using nvitop

:star2: If you like this work, don't forget to star it and share it 🌟

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

hydra_callbacks-0.6.1.tar.gz (18.5 kB view details)

Uploaded Source

Built Distribution

hydra_callbacks-0.6.1-py3-none-any.whl (11.9 kB view details)

Uploaded Python 3

File details

Details for the file hydra_callbacks-0.6.1.tar.gz.

File metadata

  • Download URL: hydra_callbacks-0.6.1.tar.gz
  • Upload date:
  • Size: 18.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.0.0 CPython/3.12.3

File hashes

Hashes for hydra_callbacks-0.6.1.tar.gz
Algorithm Hash digest
SHA256 24bc3adaf6d328966b8baa0fc5ea22357c86ea332a57408858ddca068e2e0f99
MD5 88ae12ebd55d2d438b25e8500b2966c4
BLAKE2b-256 59812c73ffba354d5aa9144431033a548d497586f71c631254a4883fb498c787

See more details on using hashes here.

File details

Details for the file hydra_callbacks-0.6.1-py3-none-any.whl.

File metadata

File hashes

Hashes for hydra_callbacks-0.6.1-py3-none-any.whl
Algorithm Hash digest
SHA256 90cdb8f0e9cea500a6f0b25d86af46d65606f5b20138aea259b1fc58cf615db3
MD5 7d2e8b1743ae56583c50ed51fc94b4b2
BLAKE2b-256 c7897d39bb3349ebbf944eceb94410314c24f14b8adcff0c5aeebd671ad848f0

See more details on using hashes here.

Supported by

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