Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 4 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,13 +1,11 @@
<img src="./assets/logo_transparent.png" alt="Hyperoptax Logo" style="width:80%;"/>
<img src="./assets/logo-transparent.png" alt="Hyperoptax Logo" style="width:100%;"/>

# Hyperoptax: Parallel hyperparameter tuning with JAX

[![PyPI version](https://img.shields.io/pypi/v/hyperoptax)](https://pypi.org/project/hyperoptax)
![CI status](https://github.com/TheodoreWolf/hyperoptax/actions/workflows/test.yml/badge.svg?branch=main)
[![codecov](https://codecov.io/gh/TheodoreWolf/hyperoptax/graph/badge.svg?token=Y582MZ25GG)](https://codecov.io/gh/TheodoreWolf/hyperoptax)

>[!WARNING]
> Hyperoptax is still a WIP and the API is subject to change. There are _many_ rough edges to smooth out. It is recommended to download specific versions or to download from source if you want to use it in a large scale project.

## ⛰️ Introduction

Expand All @@ -33,7 +31,7 @@ pip install --upgrade "jax[cpu]"
```
## 🥜 In a nutshell

All optimizers follow the same stateless pattern: `Optimizer.init` returns a `(state, optimizer)` pair, and `optimizer.optimize` runs the search loop. Your objective function must have the signature `fn(key, params) -> scalar`. `params` can be any PyTree.
All optimizers follow the same stateless pattern: `Optimizer.init` returns a `(state, optimizer)` pair, and `optimizer.optimize` runs the search loop. Your objective function must have the signature `fn(key, params) -> scalar`. Importantly, `params` can be _any_ PyTree.

```python
import jax
Expand Down Expand Up @@ -117,7 +115,7 @@ Since we are working in pure JAX the same [sharp bits](https://docs.jax.dev/en/l
We welcome pull requests! To get started:

1. Open an issue describing the bug or feature.
2. Fork the repository and create a feature branch (`git checkout -b my-feature`).
2. Fork the repository and create a feature branch (`git checkout -b user/my-feature`).
3. Clone and install dependencies. We recommend [uv](https://docs.astral.sh/uv/) for environment management:

```bash
Expand All @@ -140,6 +138,7 @@ I'm developing this both as a passion project and for my work in my PhD. I have
- Callbacks!
- Reduce redundant kernel recomputation — currently the full K matrix is rebuilt each iteration when only the new row/column is needed.
- Length scale tuning currently uses a fixed Adam step count; smarter convergence criteria could help.
- Tree Parzen Estimator (TPE), this is essentially SOTA for hyperparameter search, implementing this would be super cool!

## 📝 Citation

Expand Down
Binary file added assets/logo-transparent.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified assets/logo.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file removed assets/logo_transparent.png
Binary file not shown.
2 changes: 1 addition & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ dev = [

# Complete development environment
all = [
"hyperoptax[notebooks,testing,dev]"
"hyperoptax[notebooks,testing,dev,docs]"
]

[tool.setuptools.packages.find]
Expand Down
Loading