Skip to main content

No more excuses for bad models. >70 Optimizers. All explained. All pre-configured.

Project description

🔥 pyrodigy 🔥

ATTENTION - WORK IN PROGRESS - TEST DEPLOYMENT - NOT COMPLETE

pyrodigy is a Python wrapper around more than 70 optimizers from pytorch_optimizer, along with some additional custom optimizers. Designed for flexibility, pyrodigy offers easy configuration management, history tracking, and a CLI for convenience.

Features

  • Access to 70+ Optimizers: Use a variety of optimizers, from well-known ones to niche algorithms.
  • Config Management: View, add, set, or remove optimizer configurations directly from the CLI.
  • History Tracking: Track optimizer instantiations with detailed history, including timestamps, parameters, and caller information.
  • Customizable TTL: Automatically clear history entries older than a specified time-to-live (TTL).
  • Rich CLI Interface: Manage configurations, view documentation, and explore history—all from the command line.

Installation

With pip

pip install pyrodigy

or

Clone the repo and install pyrodigy using Poetry:

poetry install

Dependencies

Note: Pyrodigy requires PyTorch to be installed separately. You can install it based on your specific environment (CPU or GPU) and operating system. Follow the PyTorch installation guide for instructions.

Usage

CLI Commands

The CLI commands allow you to list optimizers, manage configurations, and handle history entries.

List Available Optimizers

Displays a list of optimizers with both config and documentation:

pyrodigy list

Show Optimizer Documentation

Prints the Markdown documentation for the specified optimizer:

pyrodigy show <optimizer_name>

Configuration Management

Manage optimizer configurations using the config command with get, set, add, and rm actions.

  • View Configuration:
    pyrodigy config <optimizer_name> get
    
  • Set Configuration: Update an existing configuration with new values (JSON format).
    pyrodigy config <optimizer_name> set '{"default": {"lr": 0.01, "beta": 0.9}}'
    
  • Add New Configuration: Add a new named configuration (JSON format).
    pyrodigy config <optimizer_name> add <config_name> '{"lr": 0.02, "beta": 0.95}'
    
  • Remove Configuration: Remove a named configuration.
    pyrodigy config <optimizer_name> rm <config_name>
    

History Management

Each time an optimizer is instantiated, an entry is created in its history. You can review or clear history and apply a TTL to automatically remove old entries.

  • Show History: View the history for an optimizer. Specify a TTL to filter entries within a certain timeframe.
    pyrodigy history <optimizer_name> show --TTL 30d
    
    Example with TTL:
    pyrodigy history a2grad show --TTL 60d
    
  • Clear History: Remove all history entries for the optimizer.
    pyrodigy history <optimizer_name> clear
    

Example: Using pyrodigy in Code

Instantiate an optimizer with pyrodigy’s Wrapper, which logs the creation details to the optimizer's history.

from pyrodigy.wrapper import Wrapper

# Define model parameters and optimizer configuration
params = model.parameters()
optimizer_name = "AdamP"
config_name = "default"
lr = 0.001

# Initialize the optimizer
optimizer = Wrapper(params, optimizer_name=optimizer_name, config_name=config_name, lr=lr)

History Entries

Every time you create an optimizer instance, the following details are saved:

  • Optimizer Name: The name of the optimizer.
  • Config Name: The configuration used, if provided.
  • Parameters: Any additional parameters such as learning rate.
  • Caller Information: File, line number, and function name where the optimizer was instantiated.

License

Licensed under the Apache License 2.0. See the LICENSE file for details.

Contributing

Contributions are welcome! If you find any issues or have suggestions, feel free to open an issue or submit a pull request.

Support

For questions or support, please open an issue on GitHub.

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

pyrodigy-0.1.3.tar.gz (7.2 kB view details)

Uploaded Source

Built Distribution

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

pyrodigy-0.1.3-py3-none-any.whl (8.4 kB view details)

Uploaded Python 3

File details

Details for the file pyrodigy-0.1.3.tar.gz.

File metadata

  • Download URL: pyrodigy-0.1.3.tar.gz
  • Upload date:
  • Size: 7.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.8.3 CPython/3.12.7 Linux/6.5.0-1025-azure

File hashes

Hashes for pyrodigy-0.1.3.tar.gz
Algorithm Hash digest
SHA256 b9bf86dbb2a520a4d55ea2c165586ea84ab2744790fbaf8e0c194cd6b6273971
MD5 6f22b4c02a1dc90ceb94beedb513076d
BLAKE2b-256 ca6056f3b9c038f1cea9ae865242574d4322780fa1f4b615f8d2319f31075bc6

See more details on using hashes here.

File details

Details for the file pyrodigy-0.1.3-py3-none-any.whl.

File metadata

  • Download URL: pyrodigy-0.1.3-py3-none-any.whl
  • Upload date:
  • Size: 8.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.8.3 CPython/3.12.7 Linux/6.5.0-1025-azure

File hashes

Hashes for pyrodigy-0.1.3-py3-none-any.whl
Algorithm Hash digest
SHA256 2a154caba997e9bf6a00702d6a2d1f5650bdc3d0ce3576630d844d9b7c81bc23
MD5 2ec778886728dff0fbe49a0ae846d300
BLAKE2b-256 a286900ebd39cb581f95b67314b9423ac4bdc16db45972c2f2df64dfab373d20

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