yarongef/DistilProtBert

DistilProtBert implementation, a distilled version of ProtBert model.

Jupyter Notebook

15

109 commits

updated Sep 21, 2022

See the code

README


DistilProtBert


Official DistilProtBert implementation, a distilled version of ProtBert-UniRef100 model.

Check out our paper DistilProtBert: A distilled protein language model used to distinguish between real proteins and their randomly shuffled counterparts for more details.

Model is available at Hugging Face model page.

Pretraining dataset: UniRef50

This repository is based on ProtBert-UniRef100 implementation from ProtTrans repository.

Model details

Model# of parameters# of hidden layersPretraining dataset# of proteinsPretraining hardware
ProtBert420M30UniRef100216M512 16GB TPUs
DistilProtBert230M15UniRef5043M5 v100 32GB GPUs

Evaluation tasks

Secondary structure prediction (Q3)

Please follow SS3 fine-tuning notebook and change model_init first argument to 'yarongef/DistilProtBert'.

def model_init():
    return AutoModelForTokenClassification.from_pretrained('yarongef/DistilProtBert',
                                                           num_labels=len(unique_tags),
                                                           id2label=id2tag,
                                                           label2id=tag2id,
                                                           gradient_checkpointing=False)

Datasets can be found at ProtTrans repository.

Results

MODELCASP12TS115CB513
ProtBert-UniRef1000.750.830.81
DistilProtBert0.720.810.79

Membrane vs water soluble (Q2)

Please follow MS fine-tuning notebook and change model_init first argument to 'yarongef/DistilProtBert'.

def model_init():
    return AutoModelForSequenceClassification.from_pretrained('yarongef/DistilProtBert')

Datasets can be found at ProtTrans repository.

Results

MODELDeepLoc
ProtBert-UniRef1000.89
DistilProtBert0.86

Distinguish between proteins and their k-let shuffled versions

Notebook for creating the datasets.

Datasets used for training and test: singlets, doublets and triplets.

Training:

Inference:

Singlet

ModelAUC
LSTM0.71
ProtBert0.93
DistilProtBert0.92

Doublet

ModelAUC
LSTM0.68
ProtBert0.92
DistilProtBert0.91

Triplet

ModelAUC
LSTM0.61
ProtBert0.92
DistilProtBert0.87

Contact

Create an issue to report bugs, propose new functions or ask for help.

License

MIT License

Citation

If you use this code or one of our pretrained models for your publication, please cite our paper:

@article {
	author = {Geffen, Yaron and Ofran, Yanay and Unger, Ron},
	title = {DistilProtBert: A distilled protein language model used to distinguish between real proteins and their randomly shuffled counterparts},
	year = {2022},
	doi = {10.1093/bioinformatics/btac474},
	URL = {https://doi.org/10.1093/bioinformatics/btac474},
	journal = {Bioinformatics}
}

yarongef/DistilProtBert

DistilProtBert implementation, a distilled version of ProtBert model.

Jupyter Notebook

15

109 commits

updated Sep 21, 2022

See the code

README


DistilProtBert


Official DistilProtBert implementation, a distilled version of ProtBert-UniRef100 model.

Check out our paper DistilProtBert: A distilled protein language model used to distinguish between real proteins and their randomly shuffled counterparts for more details.

Model is available at Hugging Face model page.

Pretraining dataset: UniRef50

This repository is based on ProtBert-UniRef100 implementation from ProtTrans repository.

Model details

Model# of parameters# of hidden layersPretraining dataset# of proteinsPretraining hardware
ProtBert420M30UniRef100216M512 16GB TPUs
DistilProtBert230M15UniRef5043M5 v100 32GB GPUs

Evaluation tasks

Secondary structure prediction (Q3)

Please follow SS3 fine-tuning notebook and change model_init first argument to 'yarongef/DistilProtBert'.

def model_init():
    return AutoModelForTokenClassification.from_pretrained('yarongef/DistilProtBert',
                                                           num_labels=len(unique_tags),
                                                           id2label=id2tag,
                                                           label2id=tag2id,
                                                           gradient_checkpointing=False)

Datasets can be found at ProtTrans repository.

Results

MODELCASP12TS115CB513
ProtBert-UniRef1000.750.830.81
DistilProtBert0.720.810.79

Membrane vs water soluble (Q2)

Please follow MS fine-tuning notebook and change model_init first argument to 'yarongef/DistilProtBert'.

def model_init():
    return AutoModelForSequenceClassification.from_pretrained('yarongef/DistilProtBert')

Datasets can be found at ProtTrans repository.

Results

MODELDeepLoc
ProtBert-UniRef1000.89
DistilProtBert0.86

Distinguish between proteins and their k-let shuffled versions

Notebook for creating the datasets.

Datasets used for training and test: singlets, doublets and triplets.

Training:

Inference:

Singlet

ModelAUC
LSTM0.71
ProtBert0.93
DistilProtBert0.92

Doublet

ModelAUC
LSTM0.68
ProtBert0.92
DistilProtBert0.91

Triplet

ModelAUC
LSTM0.61
ProtBert0.92
DistilProtBert0.87

Contact

Create an issue to report bugs, propose new functions or ask for help.

License

MIT License

Citation

If you use this code or one of our pretrained models for your publication, please cite our paper:

@article {
	author = {Geffen, Yaron and Ofran, Yanay and Unger, Ron},
	title = {DistilProtBert: A distilled protein language model used to distinguish between real proteins and their randomly shuffled counterparts},
	year = {2022},
	doi = {10.1093/bioinformatics/btac474},
	URL = {https://doi.org/10.1093/bioinformatics/btac474},
	journal = {Bioinformatics}
}