Skip to content

Releases: xingjian-bai/opal

OPAL 0.3.8

Choose a tag to compare

@xingjian-bai xingjian-bai released this 24 Oct 17:54

Two new read-only commands (#7, #8, thanks @mvanhorn) and one fix for the ssh mailbox. The optimizer, the agent prompt and the agent's tools are unchanged.

pip install --upgrade opal-optimizer
  • opal watch <run> prints a run's events as they are written and returns when the run finishes. --timeout 0 prints what is already there; a positive --timeout is idle seconds after the last new event. A run killed without close() (SIGTERM, SIGKILL, out of memory) never writes its end, so it needs --timeout; watch then exits with 1.
  • opal compare a b prints two run folders, or two result.json files, side by side: metric, command, decision counts, cost, waiting, last training loss, and the decisions that differ, matched by the update they were asked at.
  • The ssh mailbox lists its folder in sh rather than the remote login shell, so an empty mailbox on a host whose login shell is zsh (such as macOS) no longer fails with "no matches found: */".
  • SiT-B/2 is also scored with the ADM evaluator, the one the SiT paper uses: FID-50K 35.70 (AdamW), 30.39 (Muon), 23.55 (OPAL).

The full list is in CHANGELOG.md.

OPAL 0.3.7

Choose a tag to compare

@xingjian-bai xingjian-bai released this 22 Oct 22:48

Documentation and examples, plus one printed notice. The optimizer, the agent prompt and the agent's tools are unchanged.

pip install --upgrade opal-optimizer
  • The README and the examples page report each task's newest OPAL run (RAEv2-B 3.19, Goldfish 77.25, LightningDiT-B/1 2.31) and no longer list older-system numbers.
  • The examples page has a section on training without waiting for the agent (blocking=False), with the RAEv2-B official, blocking and non-blocking runs.
  • The README says why long runs suit OPAL, with measured waiting times.
  • blocking="auto" is no longer documented or offered by the example scripts. Using it prints that it is experimental and untested on real training runs.

The full list is in CHANGELOG.md.

OPAL 0.3.6

Choose a tag to compare

@xingjian-bai xingjian-bai released this 22 Oct 19:10

Fixes from a from-scratch test of the install and the README's agent prompt. The optimizer, the agent prompt and the agent's tools are unchanged.

pip install --upgrade opal-optimizer
  • opal doctor says when the machine has an NVIDIA GPU that the installed torch cannot use, and the README explains how to install the torch build for your driver first.
  • The ssh mailbox broker explains a "Permission denied" from a host that asks for a password, and the guide shows how to share one connection.
  • opal estimate no longer offers a decision count that still waits more than 4x, and says when a run ends before the first answer.
  • Reports of user scripts record the training waiting time.
  • The privacy filter keeps numbers such as /1000.
  • The PyPI page links to the repository, the guide and the blog post.

The full list is in CHANGELOG.md.

OPAL 0.3.5

Choose a tag to compare

@xingjian-bai xingjian-bai released this 22 Oct 08:20

OPAL is now on PyPI:

pip install opal-optimizer

This release fixes what a round of reviews found before wider use:

  • API keys and tokens that appear in backend error messages are masked in records, prompts and reports.
  • Keep mode stays bit-identical to plain training with Accelerate, including save_state and load_state, which now also save and restore OPAL.
  • Several optimizers combined with an enabled GradScaler are refused instead of skipping updates.
  • Parameter groups added after opal.wrap stop the run with a clear message, and the guide shows how to unfreeze layers instead (#5).
  • Uneven inputs across DDP ranks stop with a clear error instead of hanging (#2).
  • Checkpoints keep the observations the agent has not seen yet, so a resumed run shows it the same thing (#3).
  • Mailbox brokers can no longer answer the same request twice (#1), and the ssh mailbox handles large answers and dropped connections.

OPAL now needs Python 3.10 or newer and PyTorch 2.5 or newer. The full list is in CHANGELOG.md.