# Release 0.8.441

!!!tip inline end "Need Help?"
    The SuperCowPowers team is happy to give any assistance needed when setting up AWS and Workbench. So please contact us at [workbench@supercowpowers.com](mailto:workbench@supercowpowers.com) or on chat us up on [Discord](https://discord.gg/WHAJuz8sw8)

This release moves ChemProp to **2.3.0** and hardens the **hyperparameter search** so a search survives the trials that don't. The packaging extras collapse into one `modeling` group, and the Python floor rises to **3.11**.

## ChemProp 2.3.0

The ChemProp training and inference images now carry 2.3.0. Workbench's ChemProp surface — model construction, training, ensembling, UQ, SHAP — is unchanged; nothing in your model code needs to move. Training jobs now log the ChemProp and torch versions they're running at startup, so the stack a job used is readable straight from its CloudWatch log.

### On cuik-molmaker

ChemProp 2.3.0 promotes NVIDIA's **cuik-molmaker** from an optional add-on to a required dependency, bringing a C++ featurization backend that is genuinely faster than the Python one. It ships in our images and is available to anyone who wants it.

Workbench doesn't turn it on yet, because **its headline speedup targets a cost we've already removed.** ChemProp's cuik-molmaker dataset featurizes on the fly, per batch, and explicitly refuses caching — its own documentation scopes the benefit to *"when caching is not possible."* Workbench training caches: every molecular graph is featurized once up front and reused for the whole run, so repeated featurization isn't on our bill to begin with.

So we measured what's left. On a 23,505-molecule five-fold ChemProp job the cache took ~12s per fold to build — **59s against 2,254s of fold fitting, under 2% of the run** — and `MolGraphCache` already builds in parallel across cores, so cuik-molmaker would be racing 8-way Python for a slice of that 2%. Two things could still move the decision: caching removes repeated featurization but not the per-batch graph assembly that runs every epoch, which cuik-molmaker fuses into the same C++ call, and memory, since the cache holds every graph resident for the life of the run. We'll profile the first; until it or a dataset says otherwise, the cache stays.

## Hyperparameter search

**A dead trial no longer takes down the search.** Some fraction of any interesting search space won't fit in memory. A trial that runs out of memory is now recorded as unscored, ranked below everything that did score, and reported to the optimizer as pruned — the search carries on instead of dying with it.

**The `batch_size` ceiling drops to 512.** Activation memory scales as `depth × hidden_dim × bonds-per-batch`, and across one 60-trial search every failure sat at `1024` and none below it — while trials at `hidden_dim` up to 2300 ran clean at smaller batches. Capacity was never the problem. The ceiling also costs nothing to give up: optimal batch size scales with dataset size ([Smith & Le, arXiv:1710.06451](https://arxiv.org/abs/1710.06451)), so `1024` is past useful for a few thousand molecules. The default stays `64`, matching ChemProp's own.

**Two pruning rungs instead of one.** A fold-reporting search previously got a single cull that discarded 75% of trials on the evidence of two folds. Rungs now land at 2 and 4, so a config gets a second look before it's dropped and no single comparison is decisive — the same fraction survives, spread over two decisions.

**Hyperparameter importance says when it means nothing.** Importance scores always sum to 1, so they'll happily rank six knobs that all did nothing. The search now measures its own noise floor and warns when the top knob is within reach of it. Calibrated on 6-knob searches, the warning catches 93% of no-signal searches and doesn't fire on real ones.

## Python 3.11 minimum

`requires-python` moves from `>=3.10` to `>=3.11`. ChemProp has required 3.11+ since 2.2.4, so the modeling stack was never actually installable on 3.10 — the floor now says what was already true.

## Packaging: one `modeling` extra

The `training`, `dev-heavy`, and `test` extras collapse into a single **`modeling`** group holding the HPO search backends and the model frameworks:

```bash
pip install 'workbench[modeling]'   # ray[tune], optuna, torch, chemprop
```

## Upgrade notes

* **Python 3.10 is no longer supported.** Move to 3.11 or newer.
* **If you install `workbench[training]`, `[dev-heavy]`, or `[test]`**, switch to `workbench[modeling]`.
* No client code changes are required.

## Questions?
<img align="right" src="../../images/scp.png" width="180">

The SuperCowPowers team is happy to answer any questions you may have about AWS and Workbench. Please contact us at [workbench@supercowpowers.com](mailto:workbench@supercowpowers.com) or on chat us up on [Discord](https://discord.gg/WHAJuz8sw8)
