tt-bio
affiliated★ featuredBoltz-2 biomolecular model for drug discovery on Tenstorrent Blackhole. Supports single-card and multi-card configurations — QuietBox (4×) and Galaxy (32×). Approaches physics-based FEP accuracy at 1000× the speed.
📋 Changelog
# Changelog All notable changes to TT-Bio are recorded here. Versioning is [SemVer](https://semver.org); releases are cut from a commit that has passed the on-hardware test suite (see `RELEASING.md`). ## [Unreleased] ## [0.3.2] - 2026-07-20 ### Fixed - **SaProt-1.3b config bug** — `CONFIGS["saprot-1.3b"]` carried a fabricated arch (hidden=2560 / n_heads=40 / n_layers=40 / intermediate=10240) that does not match the real `westlake-repl/SaProt_1.3B_AF2` checkpoint (1280 / 20 / 66 / 5120 — the 650m width with double the layers). `load_state_dict(..., strict=False)` silently masked the mismatch, so the device ran with effectively untrained weights and the 1.3b leg read as a parity failure. Config corrected; `Saprot.from_pretrained` now reads the checkpoint's `config.json` and refuses to build on an arch mismatch. With correct shapes saprot-1.3b reaches X_emb=0.99508 / X_logits=0.99895 (deterministic, qb1 card 1) — a near-pass; the per-residue embedding PCC lands just below the 0.9987–0.9996 ESMC band (bf16 accumulation over 66 residual layers), so no clean PASS row is added to `docs/pharma-benchmark.md`. See `docs/saprot-parity.md`. - **Perf-gate within-card-type false positives** — the perf-regression gate keyed baselines by card type only, so two machines with the same card type (pc vs qb1, both p150a) read as false ~30–36% regressions against each other. Added a machine-id layer under card type (`socket.gethostname()`), with backward-compatible fallback to the card-type block. `--update-baseline` now writes to the detected machine's block. ### Added - **`tt-bio saprot --devices`** — multi-card data-parallel fanout for SaProt embeddings (one pinned worker per card, sequences sharded by length, results reassembled in input order), mirroring the ESMC `--devices` path. Row-independent: a sequence's output is identical to running it on one card. - **esmc-300m and esmc-6b perf-gate baselines seeded** (esmc-300m 33.17 seq/s on p300c, esmc-6b 3.17 seq/s on p150a), activating the perf-regression legs specced in 0.3.1. - **Release-gate perf + UX coverage for SaProt and Boltz-2 affinity** — both shipped in 0.3.1 with accuracy-leg coverage but no perf/UX gate legs; saprot-650m (222.69 seq/s, qb1 p150a) and boltz2-affinity (0.014319 affinities/s, p300c) baselines seeded. ### Removed - **ProteinMPNN** — the `tt-bio design` inverse-folding port is dropped entirely. It ran CPU-only (dispatch-bound, no TT-card use), duplicated BoltzGen's inverse-fold capability, and reimplemented the mature upstream `dauparas/ProteinMPNN`. SaProt is untouched. ### Verify / benchmark hardening - **Boltz-2 and Protenix-v2 ubiquitin flagship legs hardened 2+2 → 5+5 seeds** (seeds 0–4 both sides): R and D are now 10 pairwise distances each, so the parity verdict is a real statistical statement rather than a single-pair coincidence. Both PASS within floor on CA-RMSD and TM-score; CA-lDDT misses on Boltz-2 (a bf16 narrow
Works on
blackhole
quietbox
galaxy