Instructions to use Synthyra/ESMFold2-300 with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Transformers
How to use Synthyra/ESMFold2-300 with Transformers:
# Use a pipeline as a high-level helper from transformers import pipeline pipe = pipeline("feature-extraction", model="Synthyra/ESMFold2-300", trust_remote_code=True)# pip install -U transformers accelerate # Load model directly from transformers import AutoTokenizer, AutoModel tokenizer = AutoTokenizer.from_pretrained("Synthyra/ESMFold2-300", trust_remote_code=True) model = AutoModel.from_pretrained("Synthyra/ESMFold2-300", trust_remote_code=True, device_map="auto") - Notebooks
- Google Colab
- Kaggle
Embed evaluated confidence head and publish current training metrics
Browse files- README.md +76 -56
- config.json +11 -13
- fastplms/models.toml +4 -2
- fastplms/registry.py +3 -0
- fastplms_bundle.py +0 -0
- model.safetensors +2 -2
- modeling_fastplms.py +1 -1
README.md
CHANGED
|
@@ -51,17 +51,79 @@ with torch.inference_mode():
|
|
| 51 |
Path("complex.cif").write_text(model.result_to_cif(result), encoding="utf-8")
|
| 52 |
```
|
| 53 |
|
| 54 |
-
Set `verbose=False` to silence the folding progress display.
|
| 55 |
-
|
| 56 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 57 |
|
| 58 |
## Model overview
|
| 59 |
|
| 60 |
`Synthyra/ESMFold2-300` packages the
|
| 61 |
`biohub/ESMFold2-Experimental-Fast-base300M-step1500k` checkpoint with the
|
| 62 |
-
FastPLMs runtime
|
| 63 |
-
sequences or typed molecular-complex
|
| 64 |
-
prepared feature tensors.
|
| 65 |
|
| 66 |
The repository uses the standard Transformers loading interface with
|
| 67 |
`trust_remote_code=True`. See Technical details for each registered class and
|
|
@@ -201,7 +263,7 @@ This checkpoint was trained without MSA conditioning. It rejects
|
|
| 201 |
`ProteinInput.msa` and MSA-derived features. Typed multichain and multimolecule
|
| 202 |
inputs remain supported without MSA conditioning.
|
| 203 |
|
| 204 |
-
The
|
| 205 |
The 300 and 600 suffixes describe backbone scale, not total model parameters.
|
| 206 |
|
| 207 |
## Folding speed settings
|
|
@@ -243,53 +305,13 @@ The learned projection maps `H: (b, l, 31, 960) -> Z: (b, l, 256)`.
|
|
| 243 |
`embed_dataset` returns one `(l, 256)` residue representation per sequence.
|
| 244 |
The experimental architecture does not expose folding TTT.
|
| 245 |
|
| 246 |
-
## Current v2 confidence head
|
| 247 |
-
|
| 248 |
-
The v2 reproduction publishes current EMA heads during training to the public
|
| 249 |
-
[artifact dataset](https://huggingface.co/datasets/Synthyra/FastPLMs-artifacts/tree/main/confidence/v2/v2-reproduction-20260922/esmfold2_300).
|
| 250 |
-
After the first trained checkpoint is uploaded, the Hub config binds this model
|
| 251 |
-
to its latest published head. `AutoModel.from_pretrained` then loads that head
|
| 252 |
-
and enables pLDDT, PAE, pTM and iPTM by default. These training checkpoints have
|
| 253 |
-
pending evaluation; the historical results below do not validate them.
|
| 254 |
-
|
| 255 |
-
Each load resolves an immutable dataset revision and verifies the head's hash
|
| 256 |
-
and native state. `model.config.confidence_head_resolved` records the revision,
|
| 257 |
-
training update and head identity. An already loaded model keeps its head;
|
| 258 |
-
reload to obtain a newer publication. `save_pretrained` embeds the exact loaded
|
| 259 |
-
head, so the saved model reloads without fetching a newer one.
|
| 260 |
-
|
| 261 |
-
Pass `load_confidence_head=False` to load the unchanged base without its external
|
| 262 |
-
head. This option does not remove a head already embedded in a saved model.
|
| 263 |
-
External loading supports one resident model device and cached offline loads;
|
| 264 |
-
split-device and disk-offloaded loading are unsupported. See the
|
| 265 |
-
[confidence training guide](https://github.com/Synthyra/FastPLMs/blob/main/docs/confidence_training.md#ongoing-hugging-face-checkpoints).
|
| 266 |
-
|
| 267 |
-
## Separately trained confidence head
|
| 268 |
-
|
| 269 |
-
The pinned base checkpoint has its confidence head disabled. The historical
|
| 270 |
-
GH200 confidence weights were not recovered and remain unpublished.
|
| 271 |
-
|
| 272 |
-
The archived correlations, bootstrap intervals, and acceptance gates require
|
| 273 |
-
recomputation after correcting tied ranks in Spearman correlation. Raw test
|
| 274 |
-
predictions were not recovered from the closed GH200 workstation or W&B, so
|
| 275 |
-
the historical numbers are withheld here pending raw prediction recovery.
|
| 276 |
-
They do not establish corrected quality or acceptance results.
|
| 277 |
-
|
| 278 |
-
The [W&B training history audit](https://wandb.ai/lhallee/fastplms-confidence/runs/d5587e06871a) inspected all
|
| 279 |
-
780 update rows and found zero skipped training targets.
|
| 280 |
-
The skipped-target gradient bug therefore did not affect this recorded run's
|
| 281 |
-
training weights. This audit does not validate the archived correlations.
|
| 282 |
-
|
| 283 |
-
The [confidence training guide](https://github.com/Synthyra/FastPLMs/blob/main/docs/confidence_training.md)
|
| 284 |
-
preserves the historical results and their review status.
|
| 285 |
-
|
| 286 |
## Notes and limitations
|
| 287 |
|
| 288 |
-
Experimental Fast
|
| 289 |
-
|
| 290 |
-
|
| 291 |
-
|
| 292 |
-
|
| 293 |
|
| 294 |
## Technical details
|
| 295 |
|
|
@@ -322,10 +344,8 @@ identities and conversion details in `source-record.json`.
|
|
| 322 |
- Release tiers: `check`, `compliance`, `structure`, `feature`, `artifact`, `benchmark`
|
| 323 |
- Unresolved required file identities: `0`
|
| 324 |
|
| 325 |
-
|
| 326 |
-
|
| 327 |
-
weight identity, and artifact loading checks. This is bounded checkpoint
|
| 328 |
-
evidence, not a full structure benchmark result.
|
| 329 |
|
| 330 |
Declared tiers compare configuration, tokenizer behavior, state, and
|
| 331 |
representative inference with the pinned reference. A nonzero unresolved count
|
|
|
|
| 51 |
Path("complex.cif").write_text(model.result_to_cif(result), encoding="utf-8")
|
| 52 |
```
|
| 53 |
|
| 54 |
+
Set `verbose=False` to silence the folding progress display. This variant has a Synthyra-adapted native confidence head and returns pLDDT,
|
| 55 |
+
PAE, pTM, and iPTM fields. Confidence calculation is optional.
|
| 56 |
+
|
| 57 |
+
## Confidence training and evaluation
|
| 58 |
+
|
| 59 |
+
The packaged model includes the trained confidence head and enables it by default.
|
| 60 |
+
|
| 61 |
+
The confidence head completed 780 training updates in
|
| 62 |
+
18.1 hours on
|
| 63 |
+
[AtlasFold-Data](https://huggingface.co/datasets/Synthyra/AtlasFold-Data). The backbone and folding
|
| 64 |
+
model stayed frozen, and evaluation used the final exponential moving-average
|
| 65 |
+
checkpoint. Training sampled from 475,969 eligible
|
| 66 |
+
structures, including monomers, dimers, and larger complexes.
|
| 67 |
+
|
| 68 |
+
The results below use 512 targets from the existing,
|
| 69 |
+
already-used test split, with 5 predictions per target,
|
| 70 |
+
3 recycling loops, and 50 diffusion steps.
|
| 71 |
+
Intervals are 95% bootstrap intervals over targets. Longer sequences were evaluated
|
| 72 |
+
separately and are not included in these tables.
|
| 73 |
+
|
| 74 |
+
| Model | Standard targets evaluated | Long targets evaluated |
|
| 75 |
+
| --- | ---: | ---: |
|
| 76 |
+
| ESMFold2-300 | 512 | 64 |
|
| 77 |
+
| Production ESMFold2 | 512 | 46 |
|
| 78 |
+
|
| 79 |
+
| Measurement | ESMFold2-300 | 95% interval |
|
| 80 |
+
| --- | ---: | ---: |
|
| 81 |
+
| pLDDT against all-atom lDDT, Spearman | 0.88003 | 0.85090 to 0.90258 |
|
| 82 |
+
| pTM against TM-score, Spearman | 0.84004 | 0.80621 to 0.86693 |
|
| 83 |
+
| ipTM against DockQ, Spearman | 0.81403 | 0.76544 to 0.85119 |
|
| 84 |
+
| Atom pLDDT mean absolute error | 0.07867 | 0.07617 to 0.08124 |
|
| 85 |
+
| Calibration error, 10 bins | 0.00426 | 0.00241 to 0.00831 |
|
| 86 |
+
| pLDDT cross-entropy | 2.72722 | 2.68388 to 2.77285 |
|
| 87 |
+
| PAE cross-entropy | 2.81677 | 2.76512 to 2.86575 |
|
| 88 |
+
| Within-target lDDT selection accuracy | 0.58505 | 0.50357 to 0.66201 |
|
| 89 |
+
| Within-target ipTM against DockQ selection accuracy | 0.57173 | 0.50567 to 0.63475 |
|
| 90 |
+
| Top-1 selection regret | 0.02312 | 0.01814 to 0.02899 |
|
| 91 |
+
| Random-choice regret | 0.02556 | |
|
| 92 |
+
| Unresolved against resolved residue AUROC | 0.85591 | 0.83319 to 0.87786 |
|
| 93 |
+
| Resolved residue mean pLDDT | 0.75550 | 0.74226 to 0.76848 |
|
| 94 |
+
| Unresolved residue mean pLDDT | 0.49950 | 0.48104 to 0.51862 |
|
| 95 |
+
| Resolved residues below pLDDT 0.5 | 0.11332 | 0.08916 to 0.13865 |
|
| 96 |
+
| Unresolved residues below pLDDT 0.5 | 0.56934 | 0.52484 to 0.61523 |
|
| 97 |
+
|
| 98 |
+
Confidence scores, errors, accuracies, and fractions use a 0–1 scale.
|
| 99 |
+
Lower error, cross-entropy, and regret are better; higher correlation, ranking
|
| 100 |
+
accuracy, and AUROC are better. Ranking accuracy compares predictions of the
|
| 101 |
+
same target, with 0.5 representing chance. Regret is the quality lost by selecting
|
| 102 |
+
a prediction instead of the best available one. Unresolved residues are a proxy
|
| 103 |
+
for disorder, not definitive disorder labels.
|
| 104 |
+
|
| 105 |
+
| Agreement with production ESMFold2 | Spearman correlation | Mean difference |
|
| 106 |
+
| --- | ---: | ---: |
|
| 107 |
+
| Mean pLDDT | 0.68423 | -0.07777 |
|
| 108 |
+
| pTM | 0.79666 | -0.03602 |
|
| 109 |
+
| ipTM | 0.73161 | +0.01022 |
|
| 110 |
+
|
| 111 |
+
Production agreement compares each model's average confidence per target:
|
| 112 |
+
512 targets for pLDDT and pTM, and
|
| 113 |
+
320 multichain targets for ipTM. Differences are
|
| 114 |
+
ESMFold2-300 minus production. Each model predicts its own structures, so these
|
| 115 |
+
correlations do not measure folding accuracy or scores of identical structures.
|
| 116 |
+
|
| 117 |
+
See the [FastPLMs confidence training guide](https://github.com/Synthyra/FastPLMs/blob/main/docs/confidence_training.md)
|
| 118 |
+
for the training recipe, evaluation methods, and detailed records.
|
| 119 |
|
| 120 |
## Model overview
|
| 121 |
|
| 122 |
`Synthyra/ESMFold2-300` packages the
|
| 123 |
`biohub/ESMFold2-Experimental-Fast-base300M-step1500k` checkpoint with the
|
| 124 |
+
FastPLMs runtime and a Synthyra-adapted native confidence head for Hugging Face
|
| 125 |
+
Transformers. It accepts raw amino-acid sequences or typed molecular-complex
|
| 126 |
+
specifications; low-level forward accepts prepared feature tensors.
|
| 127 |
|
| 128 |
The repository uses the standard Transformers loading interface with
|
| 129 |
`trust_remote_code=True`. See Technical details for each registered class and
|
|
|
|
| 263 |
`ProteinInput.msa` and MSA-derived features. Typed multichain and multimolecule
|
| 264 |
inputs remain supported without MSA conditioning.
|
| 265 |
|
| 266 |
+
The Synthyra-adapted native confidence head returns pLDDT, PAE, pTM, and iPTM. Confidence calculation is optional.
|
| 267 |
The 300 and 600 suffixes describe backbone scale, not total model parameters.
|
| 268 |
|
| 269 |
## Folding speed settings
|
|
|
|
| 305 |
`embed_dataset` returns one `(l, 256)` residue representation per sequence.
|
| 306 |
The experimental architecture does not expose folding TTT.
|
| 307 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 308 |
## Notes and limitations
|
| 309 |
|
| 310 |
+
Experimental Fast model with a frozen 300M ESM++ backbone, 24 folding blocks,
|
| 311 |
+
no MSA conditioning, and a Synthyra-trained confidence head enabled by default.
|
| 312 |
+
BF16 execution uses FP32 folding parameters with CUDA autocast; FP8 is
|
| 313 |
+
unsupported. Confidence evaluation does not establish full structure-model
|
| 314 |
+
equivalence to production ESMFold2.
|
| 315 |
|
| 316 |
## Technical details
|
| 317 |
|
|
|
|
| 344 |
- Release tiers: `check`, `compliance`, `structure`, `feature`, `artifact`, `benchmark`
|
| 345 |
- Unresolved required file identities: `0`
|
| 346 |
|
| 347 |
+
The confidence evaluation above uses the existing test split. It does not
|
| 348 |
+
establish full structure-model equivalence.
|
|
|
|
|
|
|
| 349 |
|
| 350 |
Declared tiers compare configuration, tokenizer behavior, state, and
|
| 351 |
representative inference with the pinned reference. A nonzero unresolved count
|
config.json
CHANGED
|
@@ -10,7 +10,7 @@
|
|
| 10 |
},
|
| 11 |
"confidence_head": {
|
| 12 |
"distogram_bins": 128,
|
| 13 |
-
"enabled":
|
| 14 |
"folding_trunk": {
|
| 15 |
"dropout": 0.25,
|
| 16 |
"n_heads": 8,
|
|
@@ -27,12 +27,10 @@
|
|
| 27 |
"disable_msa_features": true,
|
| 28 |
"dtype": "float32",
|
| 29 |
"esmc_id": "Synthyra/ESMplusplus_small",
|
| 30 |
-
"fastplms_checkpoint_hash": "
|
| 31 |
-
"fastplms_checkpoint_repo_id": "
|
| 32 |
-
"fastplms_checkpoint_revision": "21531e59002c9205284715e28ee802dafb430637",
|
| 33 |
"fastplms_model_id": "esmfold2_300",
|
| 34 |
-
"fastplms_runtime_bundle_sha256": "
|
| 35 |
-
"fastplms_weights_revision": "21531e59002c9205284715e28ee802dafb430637",
|
| 36 |
"folding_trunk": {
|
| 37 |
"dropout": 0.25,
|
| 38 |
"n_heads": 8,
|
|
@@ -101,12 +99,12 @@
|
|
| 101 |
},
|
| 102 |
"transformers_version": "4.57.6",
|
| 103 |
"type": "experimental",
|
| 104 |
-
"
|
| 105 |
-
"
|
| 106 |
-
"
|
| 107 |
-
"
|
| 108 |
-
"
|
| 109 |
-
"
|
| 110 |
-
"
|
| 111 |
}
|
| 112 |
}
|
|
|
|
| 10 |
},
|
| 11 |
"confidence_head": {
|
| 12 |
"distogram_bins": 128,
|
| 13 |
+
"enabled": true,
|
| 14 |
"folding_trunk": {
|
| 15 |
"dropout": 0.25,
|
| 16 |
"n_heads": 8,
|
|
|
|
| 27 |
"disable_msa_features": true,
|
| 28 |
"dtype": "float32",
|
| 29 |
"esmc_id": "Synthyra/ESMplusplus_small",
|
| 30 |
+
"fastplms_checkpoint_hash": "bb2eaf6389e1d58f5117ca3173a5ee73d73548cda5c89f95f85c4a2280ad0e7e",
|
| 31 |
+
"fastplms_checkpoint_repo_id": "Synthyra/ESMFold2-300",
|
|
|
|
| 32 |
"fastplms_model_id": "esmfold2_300",
|
| 33 |
+
"fastplms_runtime_bundle_sha256": "b865d946cb53efb12d954ebd1f1a9a523c06ffe5dabfc73f931c5422397db26d",
|
|
|
|
| 34 |
"folding_trunk": {
|
| 35 |
"dropout": 0.25,
|
| 36 |
"n_heads": 8,
|
|
|
|
| 99 |
},
|
| 100 |
"transformers_version": "4.57.6",
|
| 101 |
"type": "experimental",
|
| 102 |
+
"confidence_head_release": {
|
| 103 |
+
"name": "v1",
|
| 104 |
+
"head_sha256": "40fd7f3d82fcefe8ad20ab2b32a37a68a84b54a527a4bce6eb9437bad2b77e31",
|
| 105 |
+
"base_weight_sha256": "44d6797c5efebf24753d502b40950e0874871c96ceea14f2d7f7e39cebac67fd",
|
| 106 |
+
"training_url": "https://wandb.ai/lhallee/fastplms-confidence/runs/9558b6d23daf",
|
| 107 |
+
"updates": 780,
|
| 108 |
+
"evaluation_request_sha256": "be5fb9a4b65a0c2abfa040069ffd4344a9d220ef8e595711c4849a62401e281a"
|
| 109 |
}
|
| 110 |
}
|
fastplms/models.toml
CHANGED
|
@@ -1254,6 +1254,7 @@ auto_map = { AutoConfig = "fastplms.models.esmfold2.configuration_esmfold2.ESMFo
|
|
| 1254 |
|
| 1255 |
[[models]]
|
| 1256 |
id = "esmfold2_300"
|
|
|
|
| 1257 |
family = "esmfold2"
|
| 1258 |
size_category = "structure"
|
| 1259 |
generation_contract = "not_applicable"
|
|
@@ -1265,13 +1266,14 @@ fast_files = ["config.json=git-sha1:47ec20cf8b234c3b41d6f3ae1bdfe95d4eb4849e", "
|
|
| 1265 |
official_repo = "biohub/ESMFold2-Experimental-Fast-base300M-step1500k"
|
| 1266 |
official_revision = "21531e59002c9205284715e28ee802dafb430637"
|
| 1267 |
official_files = ["config.json=git-sha1:8c9a04fe22b0e5fca77bc4e2861a12c9494ef4d4", "model.safetensors=sha256:44d6797c5efebf24753d502b40950e0874871c96ceea14f2d7f7e39cebac67fd"]
|
| 1268 |
-
notes = "Experimental Fast
|
| 1269 |
auto_map = { AutoConfig = "fastplms.models.esmfold2.configuration_esmfold2.ESMFold2Config", AutoModel = "fastplms.models.esmfold2.modeling_esmfold2_experimental.ESMFold2ExperimentalModel", AutoModelForSequenceClassification = "fastplms.models.esmfold2.modeling_esmfold2_classification.ESMFold2ExperimentalForSequenceClassification", AutoModelForTokenClassification = "fastplms.models.esmfold2.modeling_esmfold2_classification.ESMFold2ExperimentalForTokenClassification" }
|
| 1270 |
backbone_model = "esmc_small"
|
| 1271 |
backbone = { repo = "biohub/ESMC-300M-1500000", revision = "56803b6378b82e16c3b24aac49d1fce4445540b7", files = ["config.json=git-sha1:7fe728a0eb3fb81b24491d6cc1de816bf7797c27", "model.safetensors=sha256:8bd6cacf9b5a92d51954b64b20407f1f9f564a7e4849b8663470784d2a8b7ed2", "tokenizer.json=git-sha1:81c797f56768b22dec0301fa771f018b7e43e98c", "tokenizer_config.json=git-sha1:f49f57b24a1c93bd544974811e8ecbd61b7fae89", "special_tokens_map.json=git-sha1:c907ee1dc19b24241749b32d665c291c7e6e8e4b"] }
|
| 1272 |
|
| 1273 |
[[models]]
|
| 1274 |
id = "esmfold2_600"
|
|
|
|
| 1275 |
family = "esmfold2"
|
| 1276 |
size_category = "structure"
|
| 1277 |
generation_contract = "not_applicable"
|
|
@@ -1283,7 +1285,7 @@ fast_files = ["config.json=git-sha1:8e271837cbdada96c4974c8e543f84065e0f06f1", "
|
|
| 1283 |
official_repo = "biohub/ESMFold2-Experimental-Fast-base600M-step1500k"
|
| 1284 |
official_revision = "15cf2d6648692f6c17cee1297d8a285476fffa9b"
|
| 1285 |
official_files = ["config.json=git-sha1:95517e555f17a1eca4b68866c89033a1f6916a5d", "model.safetensors=sha256:11a53c1b4700b6c62a5a464fc3ec7076160c19e8584157f88e13275116cfd602"]
|
| 1286 |
-
notes = "Experimental Fast
|
| 1287 |
auto_map = { AutoConfig = "fastplms.models.esmfold2.configuration_esmfold2.ESMFold2Config", AutoModel = "fastplms.models.esmfold2.modeling_esmfold2_experimental.ESMFold2ExperimentalModel", AutoModelForSequenceClassification = "fastplms.models.esmfold2.modeling_esmfold2_classification.ESMFold2ExperimentalForSequenceClassification", AutoModelForTokenClassification = "fastplms.models.esmfold2.modeling_esmfold2_classification.ESMFold2ExperimentalForTokenClassification" }
|
| 1288 |
backbone_model = "esmc_large"
|
| 1289 |
backbone = { repo = "biohub/ESMC-600M-1500000", revision = "21af9cc429af76ebda6c48074fb624db4735aaaf", files = ["config.json=git-sha1:ec29f6009b21d710f64bf1c058f3a9710833d692", "model.safetensors=sha256:d6869f5ae0f11e5dc829b195e062e87cfcc2f851a08a5edbaf5d1083ae7f76cc", "tokenizer.json=git-sha1:81c797f56768b22dec0301fa771f018b7e43e98c", "tokenizer_config.json=git-sha1:f49f57b24a1c93bd544974811e8ecbd61b7fae89", "special_tokens_map.json=git-sha1:c907ee1dc19b24241749b32d665c291c7e6e8e4b"] }
|
|
|
|
| 1254 |
|
| 1255 |
[[models]]
|
| 1256 |
id = "esmfold2_300"
|
| 1257 |
+
confidence_adaptation = { release = "v1", head_sha256 = "40fd7f3d82fcefe8ad20ab2b32a37a68a84b54a527a4bce6eb9437bad2b77e31", base_weight_sha256 = "44d6797c5efebf24753d502b40950e0874871c96ceea14f2d7f7e39cebac67fd", donor_repo = "biohub/ESMFold2-Experimental-Fast-Cutoff2025", donor_revision = "74b88548bf19688b8727432db0d698cb2e1d8783", donor_weight_sha256 = "4e903b740ad6ad704ec60881bfd593e0d6c874a630ffa0f0838276e0b665088f", training_url = "https://wandb.ai/lhallee/fastplms-confidence/runs/9558b6d23daf", evaluation_url = "https://huggingface.co/datasets/Synthyra/FastPLMs-artifacts/tree/309f353b07e0e46de4d77a5266d4eddd695538e3/confidence-v2/v2-reproduction-20260922/public/evaluation/esmfold2_300", evidence_path = "docs/evidence/confidence/esmfold2_300-v1.json", frozen_base = { repo = "Synthyra/ESMFold2-300", revision = "a38a62ae930d157484b331c2bf4241684573adba", files = ["config.json=git-sha1:47ec20cf8b234c3b41d6f3ae1bdfe95d4eb4849e", "model.safetensors=sha256:44d6797c5efebf24753d502b40950e0874871c96ceea14f2d7f7e39cebac67fd"] } }
|
| 1258 |
family = "esmfold2"
|
| 1259 |
size_category = "structure"
|
| 1260 |
generation_contract = "not_applicable"
|
|
|
|
| 1266 |
official_repo = "biohub/ESMFold2-Experimental-Fast-base300M-step1500k"
|
| 1267 |
official_revision = "21531e59002c9205284715e28ee802dafb430637"
|
| 1268 |
official_files = ["config.json=git-sha1:8c9a04fe22b0e5fca77bc4e2861a12c9494ef4d4", "model.safetensors=sha256:44d6797c5efebf24753d502b40950e0874871c96ceea14f2d7f7e39cebac67fd"]
|
| 1269 |
+
notes = "Experimental Fast model with a frozen 300M ESM++ backbone, 24 folding blocks, no MSA conditioning, and a Synthyra-trained confidence head enabled by default. BF16 execution uses FP32 folding parameters with CUDA autocast; FP8 is unsupported. Confidence evaluation does not establish full structure-model equivalence to production ESMFold2."
|
| 1270 |
auto_map = { AutoConfig = "fastplms.models.esmfold2.configuration_esmfold2.ESMFold2Config", AutoModel = "fastplms.models.esmfold2.modeling_esmfold2_experimental.ESMFold2ExperimentalModel", AutoModelForSequenceClassification = "fastplms.models.esmfold2.modeling_esmfold2_classification.ESMFold2ExperimentalForSequenceClassification", AutoModelForTokenClassification = "fastplms.models.esmfold2.modeling_esmfold2_classification.ESMFold2ExperimentalForTokenClassification" }
|
| 1271 |
backbone_model = "esmc_small"
|
| 1272 |
backbone = { repo = "biohub/ESMC-300M-1500000", revision = "56803b6378b82e16c3b24aac49d1fce4445540b7", files = ["config.json=git-sha1:7fe728a0eb3fb81b24491d6cc1de816bf7797c27", "model.safetensors=sha256:8bd6cacf9b5a92d51954b64b20407f1f9f564a7e4849b8663470784d2a8b7ed2", "tokenizer.json=git-sha1:81c797f56768b22dec0301fa771f018b7e43e98c", "tokenizer_config.json=git-sha1:f49f57b24a1c93bd544974811e8ecbd61b7fae89", "special_tokens_map.json=git-sha1:c907ee1dc19b24241749b32d665c291c7e6e8e4b"] }
|
| 1273 |
|
| 1274 |
[[models]]
|
| 1275 |
id = "esmfold2_600"
|
| 1276 |
+
confidence_adaptation = { release = "v1", head_sha256 = "e84726a050722e1b722712c87d17a5388bd3699e2520e4a59abb1d828dfb8de7", base_weight_sha256 = "11a53c1b4700b6c62a5a464fc3ec7076160c19e8584157f88e13275116cfd602", donor_repo = "biohub/ESMFold2-Experimental-Fast-Cutoff2025", donor_revision = "74b88548bf19688b8727432db0d698cb2e1d8783", donor_weight_sha256 = "4e903b740ad6ad704ec60881bfd593e0d6c874a630ffa0f0838276e0b665088f", training_url = "https://wandb.ai/lhallee/fastplms-confidence/runs/820d2cfa56c0", evaluation_url = "https://huggingface.co/datasets/Synthyra/FastPLMs-artifacts/tree/6e62186cd36b9047cc4691980076be9f76482192/confidence-v2/v2-reproduction-20260922/public/evaluation/esmfold2_600", evidence_path = "docs/evidence/confidence/esmfold2_600-v1.json", frozen_base = { repo = "Synthyra/ESMFold2-600", revision = "71c67d0b2b73dc245ea7c3cc0d0476439a882d08", files = ["config.json=git-sha1:8e271837cbdada96c4974c8e543f84065e0f06f1", "model.safetensors=sha256:11a53c1b4700b6c62a5a464fc3ec7076160c19e8584157f88e13275116cfd602"] } }
|
| 1277 |
family = "esmfold2"
|
| 1278 |
size_category = "structure"
|
| 1279 |
generation_contract = "not_applicable"
|
|
|
|
| 1285 |
official_repo = "biohub/ESMFold2-Experimental-Fast-base600M-step1500k"
|
| 1286 |
official_revision = "15cf2d6648692f6c17cee1297d8a285476fffa9b"
|
| 1287 |
official_files = ["config.json=git-sha1:95517e555f17a1eca4b68866c89033a1f6916a5d", "model.safetensors=sha256:11a53c1b4700b6c62a5a464fc3ec7076160c19e8584157f88e13275116cfd602"]
|
| 1288 |
+
notes = "Experimental Fast model with a frozen 600M ESM++ backbone, 24 folding blocks, no MSA conditioning, and a Synthyra-trained confidence head enabled by default. BF16 execution uses FP32 folding parameters with CUDA autocast; FP8 is unsupported. Confidence evaluation does not establish full structure-model equivalence to production ESMFold2."
|
| 1289 |
auto_map = { AutoConfig = "fastplms.models.esmfold2.configuration_esmfold2.ESMFold2Config", AutoModel = "fastplms.models.esmfold2.modeling_esmfold2_experimental.ESMFold2ExperimentalModel", AutoModelForSequenceClassification = "fastplms.models.esmfold2.modeling_esmfold2_classification.ESMFold2ExperimentalForSequenceClassification", AutoModelForTokenClassification = "fastplms.models.esmfold2.modeling_esmfold2_classification.ESMFold2ExperimentalForTokenClassification" }
|
| 1290 |
backbone_model = "esmc_large"
|
| 1291 |
backbone = { repo = "biohub/ESMC-600M-1500000", revision = "21af9cc429af76ebda6c48074fb624db4735aaaf", files = ["config.json=git-sha1:ec29f6009b21d710f64bf1c058f3a9710833d692", "model.safetensors=sha256:d6869f5ae0f11e5dc829b195e062e87cfcc2f851a08a5edbaf5d1083ae7f76cc", "tokenizer.json=git-sha1:81c797f56768b22dec0301fa771f018b7e43e98c", "tokenizer_config.json=git-sha1:f49f57b24a1c93bd544974811e8ecbd61b7fae89", "special_tokens_map.json=git-sha1:c907ee1dc19b24241749b32d665c291c7e6e8e4b"] }
|
fastplms/registry.py
CHANGED
|
@@ -1344,6 +1344,9 @@ def _parse_confidence_adaptation(
|
|
| 1344 |
or weight.digest != digests["base_weight_sha256"]
|
| 1345 |
):
|
| 1346 |
raise RegistryError(f"{base_context} model.safetensors must match base_weight_sha256.")
|
|
|
|
|
|
|
|
|
|
| 1347 |
if release == "v1" and frozen_base is None:
|
| 1348 |
raise RegistryError(f"{adaptation_context}.frozen_base is required for v1.")
|
| 1349 |
donor_repo = _require_str(raw, "donor_repo", adaptation_context)
|
|
|
|
| 1344 |
or weight.digest != digests["base_weight_sha256"]
|
| 1345 |
):
|
| 1346 |
raise RegistryError(f"{base_context} model.safetensors must match base_weight_sha256.")
|
| 1347 |
+
config = frozen_base.file_map.get("config.json")
|
| 1348 |
+
if config is None or config.algorithm != "git-sha1":
|
| 1349 |
+
raise RegistryError(f"{base_context} must pin config.json with git-sha1.")
|
| 1350 |
if release == "v1" and frozen_base is None:
|
| 1351 |
raise RegistryError(f"{adaptation_context}.frozen_base is required for v1.")
|
| 1352 |
donor_repo = _require_str(raw, "donor_repo", adaptation_context)
|
fastplms_bundle.py
CHANGED
|
The diff for this file is too large to render.
See raw diff
|
|
|
model.safetensors
CHANGED
|
@@ -1,3 +1,3 @@
|
|
| 1 |
version https://git-lfs.github.com/spec/v1
|
| 2 |
-
oid sha256:
|
| 3 |
-
size
|
|
|
|
| 1 |
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:bb2eaf6389e1d58f5117ca3173a5ee73d73548cda5c89f95f85c4a2280ad0e7e
|
| 3 |
+
size 715690440
|
modeling_fastplms.py
CHANGED
|
@@ -13,7 +13,7 @@ from zipfile import ZIP_DEFLATED, ZipFile
|
|
| 13 |
|
| 14 |
from .fastplms_bundle import RUNTIME_DATA, RUNTIME_HASH
|
| 15 |
|
| 16 |
-
if RUNTIME_HASH != "
|
| 17 |
raise RuntimeError("FastPLMs runtime identity differs from the bridge.")
|
| 18 |
|
| 19 |
_RUNTIME_TEMPORARIES = []
|
|
|
|
| 13 |
|
| 14 |
from .fastplms_bundle import RUNTIME_DATA, RUNTIME_HASH
|
| 15 |
|
| 16 |
+
if RUNTIME_HASH != "b865d946cb53efb12d954ebd1f1a9a523c06ffe5dabfc73f931c5422397db26d":
|
| 17 |
raise RuntimeError("FastPLMs runtime identity differs from the bridge.")
|
| 18 |
|
| 19 |
_RUNTIME_TEMPORARIES = []
|