Repository navigation
OpenFold3 v0.5.1
Highlights
- Large memory reduction for inference and validation. MSA and template features are now kept as compact indices and coordinates, and are expanded inside the model only when needed. On a 2,022-token / 20,003-atom sample, persistent feature memory dropped from about 8.2 GB to about 430 MB (#462, @christinaflo).
- Deterministic inference. Feature creation (e.g. ligand conformers) is now seeded per datapoint. Atom→token aggregation at inference uses an order-stable segmented reduction instead of CUDA
scatter_add_. Together these make repeated runs reproducible. Chunk-size tuning results are also cached across targets (#320, @heathcliff233). - Numerics and kernel improvements from @GMNGeoffrey:
- Lower peak GPU memory.
PYTORCH_CUDA_ALLOC_CONF=expandable_segments:Trueis now the default, which cuts reserved memory by about 3 GB at token budget 384, with larger savings at higher budgets (#414, @chelsea0x3b). Metrics computation is also more memory-efficient (#393). - Biotite 2 support. Biotite ≥2.0 now works (#464, #465). This release also drops the temporary
biotite<2pin (#460) and therdkit<2026pin (#485).
⚠️ Breaking and behavior changes
- Python ≥3.12 is now required (#480). The floor was raised from 3.10, following [SPEC 0](https://scientific-python.org/specs/spec-0000/).
- Conda has been removed from installation and CI paths (#401). Pixi is now the documented development setup (#443).
- Seeding behavior changed:
- MSA
deletion_valuefix (#347). The coefficient was 4× too large (8/π instead of 2/π). This changes model inputs for nearly every query that has an MSA. - Config changes for training users (#462):
- Template distogram bin settings moved to
model.template.template_pair_embedder.distogram. - The feature dict now carries
msaas uint8 indices andtemplate_pseudo_beta_coords/template_frame_atom_coordsinstead of the distogram and unit-vector features.
- Template distogram bin settings moved to
What's Changed - full list
- Update readme with OpenBind-0 information by @etowahadams in #377
- Fix naming of openbind parameter download by @jnwei in #380
- chore(typing): annotate inference configurations by @ahmedtaha100 in #384
- Specify file destination path of AMD parameter by @jnwei in #387
- Allow custom residue names for SMILES ligands by @ahmedtaha100 in #386
- fixes #390: citation file updates by @jandom in #391
- chore(deps): bump prefix-dev/setup-pixi from 0.10.1 to 0.10.2 in the github-actions group by @dependabot[bot] in #392
- Update parameter documentation by @jnwei in #396
- Add CIF template-based generating example notebook by @sukritsingh in #255
- Add round robin retry of AWS AZs for GPU CI tests by @jnwei in #400
- Removes conda from installation and CI paths by @jnwei in #401
- In CI / CD tests: Fix OPENFOLD_CACHE env variable leakage between tests by @jnwei in #402
- Fix documentation dependency and pocket configuration example by @peter-s-obi in #398
- More memory efficient metrics by @chelsea0x3b in #393
- fix: keep inference intermediates under the output directory by @ahmedtaha100 in #363
- chore: update pixi to 0.8.0 by @jandom in #403
- [CI/CD] Stop the AMD and EC2 runners sharing a parameter cache by @jnwei in #404
- ci: fix broken integration tests by @jandom in #405
- Improve template fetching by ColabFoldQueryRunner from RSCB server by @jnwei in #417
- chore(deps): bump docker/build-push-action from 7.3.0 to 7.4.0 in the github-actions group by @dependabot[bot] in #424
- doc update for #172: updating the docs to correctly reflect that msa … by @Pana-TsK in #337
- Fix cached template reuse in inference query sets by @ahmedtaha100 in #425
- test: fix flaky BF16 Triton template stack by @ahmedtaha100 in #429
- Use upstream AZ fallback from start-aws-gha-runner v1.4.0 by @jnwei in #426
- Don't skip GPU tests on ROCm by @GMNGeoffrey in #433
- fix: make register_dataset_config return the decorated class by @alexbinnie-apheris in #434
- Do boolean mask sums directly in fp32 by @GMNGeoffrey in #282
- chore: update mypy-baseline by @jandom in #437
- Start --num_model_seeds from the configured seed instead of a fixed 42 by @OtoYuki in #436
- Inference determinism: atom aggregation, feature seeding, and chunk-size reuse by @heathcliff233 in #320
- Sets
PYTORCH_CUDA_ALLOC_CONF=expandable_segments:Trueby default by @chelsea0x3b in #414 - ci: fix daily tests after expandable_segments by @jandom in #438
- [Feat] Template preprocessing for training dataset cache jsons by @jnwei in #439
- [Feature] Template preprocessing entry point by @jnwei in #440
- docs: document Pixi development setup for contributors by @ethanholz in #443
- Remove unnecessary script init files by @sdvillal in #446
- Workflow for nightly CI on Brev runners by @jnwei in #448
- Fix cyclic relpos offsets: shortest ring distance, handle tokenized residues, only cyclize residue offsets by @GMNGeoffrey in #445
- Replace
assert_sole_holderwith check for freed storage by @GMNGeoffrey in #451 - chore(deps): bump prefix-dev/setup-pixi from 0.10.2 to 0.11.0 in the github-actions group by @dependabot[bot] in #452
- refactor: remove monkeypatch from tests by @jandom in #449
- fix: correct deletion_value coefficient (was 4x too large) by @Pana-TsK in #347
- fix: use bin centers, not left edges, for pLDDT/PAE/PDE classificatio… by @Pana-TsK in #355
- Parse a query entry from an mmcif file by @jnwei in #381
- initial draft of SKILLS.md by @jnwei in #382
- chore: strict mypy on everything but the tests by @jandom in #454
- Use torch fp32 matmul precision setting for
tl.dotby @GMNGeoffrey in #457 - chore: side-step issue with dot_precision.py typing by @jandom in #461
- fix: pin biotite version to below 2.0 by @rchauhan9 in #460
- fix: configurable cluster environment; stop SLURM autodetection hangs by @jandom in #459
- Keep instance defaults for partial dataset config updates by @GMNGeoffrey in #458
- Fix degeneracy in attention kernel backward tests by @GMNGeoffrey in #258
- chore(deps): bump prefix-dev/setup-pixi from 0.11.0 to 0.11.2 in the github-actions group by @dependabot[bot] in #467
- adds g6.4xlarge to allowed instance types for brev integration tests by @jnwei in #469
- Avoid enabling TF32 globally in tests by @GMNGeoffrey in #470
- Biotite v2 compatibility changes by @jnwei in #464
- Allow biotite 2 by @jnwei in #465
- Feature dict refactor to reduce memory for validation / inference by @christinaflo in #462
- Mark
test_shape_large_bf16_traintest as slow by @GMNGeoffrey in #478 - chore: bump to 3.12 by @jandom in #480
- Fail tests on leaked changes to fp32 matmul precision by @GMNGeoffrey in #471
- ci: python floor checks by @jandom in #481
- Fix/skip biotite ccd update by @jnwei in #474
- Ci/gpu test marker by @jnwei in #472
- fix: two bugs in extract_alignments_to_pair (crash + off-by-one) by @Pana-TsK in #350
- fix: conformer generating timeout escape by @jandom in #483
- test: add msa_mask/padding tests for create_msa_feature_precursor_of3 by @Pana-TsK in #346
- perf: restrict frame-atom distance matrix to start-atom rows by @heathcliff233 in #455
- [chore] update openfold3 release to v0.5.1 by @jnwei in #484
- Remove rdkit<2026 pin by @jnwei in #485
- Pin ruff version by @GMNGeoffrey in #489
New Contributors
- @sukritsingh made their first contribution in #255
- @chelsea0x3b made their first contribution in #393
- @alexbinnie-apheris made their first contribution in #434
- @OtoYuki made their first contribution in #436
- @heathcliff233 made their first contribution in #320
- @ethanholz made their first contribution in #443
- @rchauhan9 made their first contribution in #460
Full Changelog: 0.5.0...0.5.1