Gena-LM ist eine Familie von Open-Source-Fundamentsmodellen für lange DNA-Sequenzen.
GENA-LM-Modelle sind transformator maskierte Sprachmodelle, die auf menschlicher DNA-Sequenz trainiert wurden.
Schlüsselmerkmale unserer Gena-LM-Modelle:
| Modell | Architektur | Max Seqlen, Tokens (BP) | Parameter | Tokenizer -Daten | Trainingsdaten |
|---|---|---|---|---|---|
| Bert-Base | Bert-12l | 512 (4500) | 110 m | T2T Split v1 | T2T Split v1 |
| Bert-Base-T2T | Bert-12l | 512 (4500) | 110 m | T2T+1000G SNPS+Multispezies | T2T+1000g SNPs |
| Bert-Base-Lastln-T2T | Bert-12l | 512 (4500) | 110 m | T2T+1000G SNPS+Multispezies | T2T+1000g SNPs |
| Bert-Base-T2T-Multi | Bert-12l | 512 (4500) | 110 m | T2T+1000G SNPS+Multispezies | T2T+1000G SNPS+Multispezies |
| Bert-Large-T2T | Bert-24l | 512 (4500) | 336 m | T2T+1000G SNPS+Multispezies | T2T+1000g SNPs |
| Bigbird-Base-Sparse | BERT-12L, TEEPSPEED Sparse Ops, Seil | 4096 (36000) | 110 m | T2T Split v1 | T2T Split v1 |
| Bigbird-Base-Sparse-T2T | BERT-12L, TEEPSPEED Sparse Ops, Seil | 4096 (36000) | 110 m | T2T+1000G SNPS+Multispezies | T2T+1000g SNPs |
| Bigbird-Base-T2T | Bert-12l, HF Bigbird | 4096 (36000) | 110 m | T2T+1000G SNPS+Multispezies | T2T+1000g SNPs |
T2T Split V1 bezieht sich auf vorläufige Modelle mit einer nicht-genossen T2T Human Genom Assembly Split. Bert-basierte Modelle verwenden die Normalisierung vor der Schicht und bezeichnet explizit, dass die Normalisierung der Schicht auch auf die endgültige Schicht angewendet wird. Das Seil zeigt die Verwendung von Rotationspositionsbettendings anstelle von Bert-ähnlichen absoluten Positionseinbettungen an.
Für unsere ersten Modelle ( gena-lm-bert-base und gena-lm-bigbird-base-sparse ) halten wir menschliche Chromosomen 22 und Y (CP068256.2 und CP086569.2) als Testdatensatz für die maskierte Sprachmodellierungsaufgabe aus. Für alle anderen Modelle halten wir menschliche Chromosomen 7 und 10 (CP068271.2 und CP068268.2) aus; Diese Modelle haben das Suffix "T2T" in ihren Namen. Andere Daten wurden für das Training verwendet. Menschen mit nur menschlichen Modellen wurden an vorverarbeiteten menschlichen T2T-V2-Genom-Assemblierung und seinen SNP-Augmentationen mit 1000 Genom in einer Gesamtbasispaare von 480 x 10^9 geschult. Multispezies-Modelle wurden nur für Menschen mit nur Menschen und Multispezies in insgesamt 1072 x 10^9-Basispaaren trainiert.
| Modell | Aufgabe | Aufgabe seq len | Metrisch | HF -Zweigname |
|---|---|---|---|---|
| Gena-lm-Bert-Base-T2T | Promotoren | 300BP | 74,56+-0,36 F1 | Promotors_300_Run_1 |
| Gena-lm-tber-large-t2t | Promotoren | 300BP | 76,44+-0.16 F1 | Promotors_300_Run_1 |
| Gena-lm-tber-large-t2t | Promotoren | 2000bp | 93.70+-0,44 F1 | Promotors_2000_Run_1 |
| Gena-lm-Bert-Base-T2T | Spleißstelle | 15000bp | 92.63+-0.09 PR AUC | spliceai_run_1 |
| Gena-lm-tber-large-t2t | Spleißstelle | 15000bp | 93.59+-0.11 PR AUC | spliceai_run_1 |
Um ein vorgebildetes Modell für eine nachgeschaltete Aufgabe zu erhalten, ersetzen Sie model_name und branch_name durch Werte aus der Tabelle. Die Metriken in der Tabelle werden über mehrere Läufe gemittelt. Daher können die Werte für jeden Checkpoint von den hier angegebenen unterscheiden.
from transformers import AutoTokenizer , AutoModel
tokenizer = AutoTokenizer . from_pretrained ( f'AIRI-Institute/ { model_name } ' )
model = AutoModel . from_pretrained ( f'AIRI-Institute/ { model_name } ' , revision = branch_name , trust_remote_code = True ) from transformers import AutoTokenizer , AutoModel
tokenizer = AutoTokenizer . from_pretrained ( 'AIRI-Institute/gena-lm-bert-base-t2t' )
model = AutoModel . from_pretrained ( 'AIRI-Institute/gena-lm-bert-base-t2t' , trust_remote_code = True )Holen Sie sich die Modellklasse vom Gena-LM-Repository:
git clone https://github.com/AIRI-Institute/GENA_LM.git from GENA_LM . src . gena_lm . modeling_bert import BertForSequenceClassification
from transformers import AutoTokenizer
tokenizer = AutoTokenizer . from_pretrained ( 'AIRI-Institute/gena-lm-bert-base-t2t' )
model = BertForSequenceClassification . from_pretrained ( 'AIRI-Institute/gena-lm-bert-base-t2t' )Oder Sie können einfach modeling_bert.py herunterladen und Ihren Code nahe bringen.
Oder Sie können eine Modellklasse von Huggingface -Automodel erhalten:
from transformers import AutoTokenizer , AutoModel
model = AutoModel . from_pretrained ( 'AIRI-Institute/gena-lm-bert-base-t2t' , trust_remote_code = True )
gena_module_name = model . __class__ . __module__
print ( gena_module_name )
import importlib
# available class names:
# - BertModel, BertForPreTraining, BertForMaskedLM, BertForNextSentencePrediction,
# - BertForSequenceClassification, BertForMultipleChoice, BertForTokenClassification,
# - BertForQuestionAnswering
# check https://huggingface.co/docs/transformers/model_doc/bert
cls = getattr ( importlib . import_module ( gena_module_name ), 'BertForSequenceClassification' )
print ( cls )
model = cls . from_pretrained ( 'AIRI-Institute/gena-lm-bert-base-t2t' , num_labels = 2 ) Gena-LM bigbird-base-t2t -Modell verwendet die Implementierung von Bigbird-Implementierung von Huggingface. Daher könnten Standardklassen aus der Transformers Library verwendet werden:
from transformers import AutoTokenizer , BigBirdForSequenceClassification
tokenizer = AutoTokenizer . from_pretrained ( 'AIRI-Institute/gena-lm-bigbird-base-t2t' )
model = BigBirdForSequenceClassification . from_pretrained ( 'AIRI-Institute/gena-lm-bigbird-base-t2t' )Sequenzklassifizierung mit Gena-LM und Huggingface-Transformatoren
Clusterisierung von DNA -Einbettungen, die mit Gena LM erzeugt wurden
Erforschen Sie das Gena-LM-Modell, das auf dem Enformator-Datensatz für die Genexpression fein abgestimmt ist
@article {GENA_LM,
author = {Veniamin Fishman and Yuri Kuratov and Maxim Petrov and Aleksei Shmelev and Denis Shepelin and Nikolay Chekanov and Olga Kardymon and Mikhail Burtsev},
title = {GENA-LM: A Family of Open-Source Foundational Models for Long DNA Sequences},
elocation-id = {2023.06.12.544594},
year = {2023},
doi = {10.1101/2023.06.12.544594},
publisher = {Cold Spring Harbor Laboratory},
URL = {https://www.biorxiv.org/content/early/2023/06/13/2023.06.12.544594},
eprint = {https://www.biorxiv.org/content/early/2023/06/13/2023.06.12.544594.full.pdf},
journal = {bioRxiv}
}
Nachgeschaltete Aufgaben für die Modellbewertung umfassen die Vorhersage der Promotor- und Enhancer -Aktivität, Spleißstellen, Chromatinprofile und Polyadenylierungsstellenstärke. Schauen Sie sich den Ordner downstream_tasks nach Code- und Datenvorverarbeitungsskripten an, die wir verwendet haben:
Um das menschliche Genom herunterzuladen, führen Sie bitte das folgende Skript aus:
./download_data.sh human
Führen Sie zur Vorverarbeitung das folgende Skript aus:
python src/gena_lm/genome_tools/create_corpus.py --input_file data/ncbi_dataset/data/GCA_009914755.4/GCA_009914755.4_T2T-CHM13v2.0_genomic.fna --output_dir data/processed/human/
Für Modelle mit spärlicher Aufmerksamkeit ( gena-lm-bigbird-base-sparse , gena-lm-bigbird-base-sparse-t2t ) FP16-Unterstützung und Deepspeed sind erforderlich.
Installieren Sie Apex https://github.com/nvidia/apex#quick-start
git clone https://github.com/NVIDIA/apex
cd apex
# most recent commits may fail to build
git checkout 2386a912164b0c5cfcd8be7a2b890fbac5607c82
# if pip >= 23.1 (ref: https://pip.pypa.io/en/stable/news/#v23-1) which supports multiple `--config-settings` with the same key...
pip install -v --disable-pip-version-check --no-cache-dir --no-build-isolation --config-settings "--build-option=--cpp_ext" --config-settings "--build-option=--cuda_ext" ./
# otherwise
pip install -v --disable-pip-version-check --no-cache-dir --no-build-isolation --global-option="--cpp_ext" --global-option="--cuda_ext" ./
Eine DeepSpeed -Installation ist erforderlich, um mit sparsamen Versionen von Sprachmodellen zu arbeiten. Tiefspeed -spärliche Aufmerksamkeit unterstützt nur GPUs mit Berechnungskompatibilität> = 7 (V100, T4, A100), CUDA 10.1, 10.2, 11,0 oder 11,1 und läuft nur im FP16 -Modus (ab Deepspeed 0,6,0).
Pytorch> = 1,7.1, <= 1.10.1 Räder mit CUDA 10.2/11.0/11.1 von pytorch.org können verwendet werden. Die Verwendung von spärlichen OPs mit CUDA 11.1 -Pytorch -Rädern müsste jedoch CUDA 11.3/11.4 auf dem System installiert werden. Sparse OPs könnten auch mit Pytorch == 1.12.1 CUDA 11.3 -Rädern verwendet werden, aber das Durchführen von Tiefspeed -Sparse -OPS -Tests müsste sie modifizieren, wenn sie auf die CUDA -Version <= 11.1 der Taschenlampe prüfen. Die DeepSpeed -Gabel für Triton 1.1.1 hat bereits aktualisierte Tests.
Triton 1.0.0 und 1.1.1 benötigt Python <= 3.9.
pip install triton==1.0.0
DS_BUILD_SPARSE_ATTN=1 pip install deepspeed==0.6.0 --global-option= " build_ext " --global-option= " -j8 " --no-cacheund die Installation mit überprüfen
ds_reportTriton 1.1.1 bringt x2 beschleunigt auf spärliche Operationen auf A100, aber Deepspeed (0,6.5) unterstützt derzeit nur Triton 1.0.0. Die DeepSpeed-Gabel mit Triton 1.1.1 könnte in den Fällen verwendet werden, in denen eine solche Beschleunigung erforderlich ist:
pip install triton==1.1.1
git clone https://github.com/yurakuratov/DeepSpeed.git
cd DeepSpeed
DS_BUILD_SPARSE_ATTN=1 pip install -e . --global-option= " build_ext " --global-option= " -j8 " --no-cacheund spärliche Ops -Tests mit durchführen mit
cd tests/unit
pytest -v test_sparse_attention.pyWir verwenden Trainer- und Multi-GPU-Schulungen vom LM-Experiment-Tools-Repository als Grundlage für unsere Finetuning-Skripte. Sie können jedoch HF Transformers Trainer, Pytorch Lightning oder beschleunigen und Pytorch stattdessen mit benutzerdefinierten Trainingsschleifen verwenden.
Installieren Sie LM- Experiment-Tools gemäß https://github.com/yurakuratov/t5-experiments#install-only-lm_experiments_tools:
git clone https://github.com/yurakuratov/t5-experiments
cd t5-experiments
pip install -e .