Skip to content

Release 0.8.441

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 or on chat us up on Discord

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.

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), 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:

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?

The SuperCowPowers team is happy to answer any questions you may have about AWS and Workbench. Please contact us at workbench@supercowpowers.com or on chat us up on Discord