-
Notifications
You must be signed in to change notification settings - Fork 460
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Single-sequence model #354
Changes from all commits
43e1e5c
062a3f0
1e42b70
e6dec86
7663b70
a718ceb
ab8ccf2
432f8c8
01c3e20
d4acab8
2e5073d
518557a
1ab1004
63c5a24
3e80bbb
c058b7b
d542dc6
aceb092
ca72982
a3fe6c9
c2c994c
0ac23e4
c4aded6
57bf182
f612689
6c9aaf2
ae9bbaa
2c50816
e7f713e
5047ca4
b7e50a1
3be83e8
05a7284
55fd315
f8d517b
3162e91
f14e599
e5a44aa
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -152,9 +152,42 @@ def model_config( | |
c.model.template.enabled = False | ||
c.model.heads.tm.enabled = True | ||
c.loss.tm.weight = 0.1 | ||
# SINGLE SEQUENCE EMBEDDING PRESETS | ||
elif name == "seqemb_initial_training": | ||
sachinkadyan7 marked this conversation as resolved.
Show resolved
Hide resolved
|
||
c.data.train.max_msa_clusters = 1 | ||
c.data.eval.max_msa_clusters = 1 | ||
c.data.train.max_distillation_msa_clusters = 1 | ||
elif name == "seqemb_finetuning": | ||
c.data.train.max_msa_clusters = 1 | ||
c.data.eval.max_msa_clusters = 1 | ||
c.data.train.max_distillation_msa_clusters = 1 | ||
c.data.train.crop_size = 384 | ||
c.loss.violation.weight = 1. | ||
c.loss.experimentally_resolved.weight = 0.01 | ||
elif name == "seq_model_esm1b": | ||
c.data.common.use_templates = True | ||
c.data.common.use_template_torsion_angles = True | ||
c.model.template.enabled = True | ||
c.data.predict.max_msa_clusters = 1 | ||
elif name == "seq_model_esm1b_ptm": | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. What is the difference between seq_model_esm1b and seq_model_esm1b_ptm? Could we include this information as a comment here perhaps? |
||
c.data.common.use_templates = True | ||
c.data.common.use_template_torsion_angles = True | ||
c.model.template.enabled = True | ||
c.data.predict.max_msa_clusters = 1 | ||
c.model.heads.tm.enabled = True | ||
c.loss.tm.weight = 0.1 | ||
else: | ||
raise ValueError("Invalid model name") | ||
|
||
if name.startswith("seq"): | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Could we change this to be This will help in case future presets unrelated to solo seq also begin with 'seq' |
||
# Tell the data pipeline that we will use sequence embeddings instead of MSAs. | ||
c.data.seqemb_mode.enabled = True | ||
c.globals.seqemb_mode_enabled = True | ||
# In seqemb mode, we turn off the ExtraMSAStack and Evoformer's column attention. | ||
c.model.extra_msa.enabled = False | ||
c.model.evoformer_stack.no_column_attention = True | ||
c.update(seq_mode_config.copy_and_resolve_references()) | ||
|
||
if long_sequence_inference: | ||
assert(not train) | ||
c.globals.offload_inference = True | ||
|
@@ -189,6 +222,11 @@ def model_config( | |
c_t = mlc.FieldReference(64, field_type=int) | ||
c_e = mlc.FieldReference(64, field_type=int) | ||
c_s = mlc.FieldReference(384, field_type=int) | ||
|
||
# For seqemb mode, dimension size of the per-residue sequence embedding passed to the model | ||
# In current model, the dimension size is the ESM-1b dimension size i.e. 1280. | ||
preemb_dim_size = mlc.FieldReference(1280, field_type=int) | ||
|
||
blocks_per_ckpt = mlc.FieldReference(None, field_type=int) | ||
chunk_size = mlc.FieldReference(4, field_type=int) | ||
aux_distogram_bins = mlc.FieldReference(64, field_type=int) | ||
|
@@ -301,6 +339,9 @@ def model_config( | |
"use_templates": templates_enabled, | ||
"use_template_torsion_angles": embed_template_torsion_angles, | ||
}, | ||
"seqemb_mode": { # Configuration for sequence embedding mode | ||
"enabled": False, # If True, use seq emb instead of MSA | ||
}, | ||
"supervised": { | ||
"clamp_prob": 0.9, | ||
"supervised_features": [ | ||
|
@@ -365,6 +406,7 @@ def model_config( | |
}, | ||
# Recurring FieldReferences that can be changed globally here | ||
"globals": { | ||
"seqemb_mode_enabled": False, # Global flag for enabling seq emb mode | ||
"blocks_per_ckpt": blocks_per_ckpt, | ||
"chunk_size": chunk_size, | ||
# Use Staats & Rabe's low-memory attention algorithm. Mutually | ||
|
@@ -493,6 +535,7 @@ def model_config( | |
"transition_n": 4, | ||
"msa_dropout": 0.15, | ||
"pair_dropout": 0.25, | ||
"no_column_attention": False, | ||
"blocks_per_ckpt": blocks_per_ckpt, | ||
"clear_cache_between_blocks": False, | ||
"tune_chunk_size": tune_chunk_size, | ||
|
@@ -614,3 +657,31 @@ def model_config( | |
"ema": {"decay": 0.999}, | ||
} | ||
) | ||
|
||
seq_mode_config = mlc.ConfigDict({ | ||
"data": { | ||
"common": { | ||
"feat": { | ||
"seq_embedding": [NUM_RES, None], | ||
}, | ||
"seqemb_features": [ # List of features to be generated in seqemb mode | ||
"seq_embedding" | ||
], | ||
}, | ||
"seqemb_mode": { # Configuration for sequence embedding mode | ||
"enabled": True, # If True, use seq emb instead of MSA | ||
}, | ||
}, | ||
"globals": { | ||
"seqemb_mode_enabled": True, | ||
}, | ||
"model": { | ||
"preembedding_embedder": { # Used in sequence embedding mode | ||
"tf_dim": 22, | ||
"preembedding_dim": preemb_dim_size, | ||
"c_z": c_z, | ||
"c_m": c_m, | ||
"relpos_k": 32, | ||
}, | ||
} | ||
}) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This preset should be seq_model_esm1b_ptm