Feature Extraction
Transformers
Safetensors
fast_esmfold
protein-language-model
fastplms
custom_code
Instructions to use Synthyra/FastESMFold with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Transformers
How to use Synthyra/FastESMFold with Transformers:
# Use a pipeline as a high-level helper from transformers import pipeline pipe = pipeline("feature-extraction", model="Synthyra/FastESMFold", trust_remote_code=True)# pip install -U transformers accelerate # Load model directly from transformers import AutoModel model = AutoModel.from_pretrained("Synthyra/FastESMFold", trust_remote_code=True, device_map="auto") - Notebooks
- Google Colab
- Kaggle
Give this artifact's bridge its own config and model subclasses (FastPLMs#50)
Browse filesArtifacts share one FastPLMs runtime per process. Re-exported shared classes let one artifact's model class answer for another with the same config class, for example ESMFold2-300 built as ESMFold2Model after ESMFold2-Fast loaded. Only modeling_fastplms.py changes; the runtime bundle and weights are untouched. https://github.com/Synthyra/FastPLMs/issues/50
- modeling_fastplms.py +27 -9
modeling_fastplms.py
CHANGED
|
@@ -180,12 +180,30 @@ def _install_runtime():
|
|
| 180 |
return package
|
| 181 |
|
| 182 |
_install_runtime()
|
| 183 |
-
|
| 184 |
-
|
| 185 |
-
|
| 186 |
-
|
| 187 |
-
|
| 188 |
-
|
| 189 |
-
|
| 190 |
-
|
| 191 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 180 |
return package
|
| 181 |
|
| 182 |
_install_runtime()
|
| 183 |
+
|
| 184 |
+
def _artifact_class(base, config_class=None):
|
| 185 |
+
"""Subclass a shared runtime class so this artifact registers its own classes.
|
| 186 |
+
|
| 187 |
+
The base constructor is kept explicitly because Transformers turns every config
|
| 188 |
+
subclass into a dataclass, which would otherwise generate a new constructor.
|
| 189 |
+
"""
|
| 190 |
+
namespace = {
|
| 191 |
+
"__module__": __name__,
|
| 192 |
+
"__qualname__": base.__name__,
|
| 193 |
+
"__doc__": base.__doc__,
|
| 194 |
+
"__init__": base.__init__,
|
| 195 |
+
}
|
| 196 |
+
base_config_class = getattr(base, "config_class", None)
|
| 197 |
+
if (
|
| 198 |
+
config_class is not None
|
| 199 |
+
and isinstance(base_config_class, type)
|
| 200 |
+
and issubclass(config_class, base_config_class)
|
| 201 |
+
):
|
| 202 |
+
namespace["config_class"] = config_class
|
| 203 |
+
return type(base.__name__, (base,), namespace)
|
| 204 |
+
|
| 205 |
+
_module_204 = _import_without_bytecode("fastplms.models.esmfold.modeling_fast_esmfold")
|
| 206 |
+
FastEsmFoldConfig = _artifact_class(_module_204.FastEsmFoldConfig)
|
| 207 |
+
FastEsmForProteinFolding = _artifact_class(_module_204.FastEsmForProteinFolding, config_class=FastEsmFoldConfig)
|
| 208 |
+
FastEsmForSequenceClassification = _artifact_class(_module_204.FastEsmForSequenceClassification, config_class=FastEsmFoldConfig)
|
| 209 |
+
FastEsmForTokenClassification = _artifact_class(_module_204.FastEsmForTokenClassification, config_class=FastEsmFoldConfig)
|