Gena-LM est une famille de modèles fondamentaux open source pour de longues séquences d'ADN.
Les modèles Gena-LM sont des modèles de langage masqué par transformateur formés sur la séquence d'ADN humain.
Caractéristiques clés de nos modèles Gena-LM:
| Modèle | Architecture | Max Seqlen, Tokens (BP) | Paramètres | Données de jetons | Données de formation |
|---|---|---|---|---|---|
| bascule | Bert-12l | 512 (4500) | 110m | T2T Split V1 | T2T Split V1 |
| Bert-Base-T2T | Bert-12l | 512 (4500) | 110m | T2T + 1000G SNPS + multispécités | T2T + 1000G SNPS |
| Bert-Base-Lastln-T2T | Bert-12l | 512 (4500) | 110m | T2T + 1000G SNPS + multispécités | T2T + 1000G SNPS |
| Bert-Base-T2T-Multi | Bert-12l | 512 (4500) | 110m | T2T + 1000G SNPS + multispécités | T2T + 1000G SNPS + multispécités |
| bert-large-T2t | Bert-24l | 512 (4500) | 336m | T2T + 1000G SNPS + multispécités | T2T + 1000G SNPS |
| Bigbird-base-partisans | Bert-12l, OPS clairsemés profonds, corde | 4096 (36000) | 110m | T2T Split V1 | T2T Split V1 |
| Bigbird-base-sasse-T2T | Bert-12l, OPS clairsemés profonds, corde | 4096 (36000) | 110m | T2T + 1000G SNPS + multispécités | T2T + 1000G SNPS |
| Bigbird-Base-T2T | Bert-12l, hf bigbird | 4096 (36000) | 110m | T2T + 1000G SNPS + multispécités | T2T + 1000G SNPS |
T2T Split V1 fait référence à des modèles préliminaires avec une division d'assemblage du génome humain T2T non augmenté. Les modèles basés sur Bert utilisent la normalisation pré-couche et le dernier indique explicitement que la normalisation de la couche est également appliquée à la couche finale. La corde indique l'utilisation d'incorporation de position rotative à la place des incorporations de position absolue de type Bert.
Pour nos premiers modèles ( gena-lm-bert-base et gena-lm-bigbird-base-sparse ), nous tenons les chromosomes humains 22 et Y (CP068256.2 et CP086569.2) comme ensemble de données de test pour la tâche de modélisation du langage masqué. Pour tous les autres modèles, nous tenons les chromosomes humains 7 et 10 (CP068271.2 et CP068268.2); Ces modèles ont le suffixe "T2T" dans leur nom. D'autres données ont été utilisées pour la formation. Les modèles uniquement humains ont été formés sur l'assemblage du génome T2T V2 humain prétraité et ses augmentations SNP de 1000 génomes faisant un total de ≈ 480 x 10 ^ 9 paires de bases. Les modèles multispéces ont été formés sur la fabrication de données sur l'homme uniquement et multispéces dans un total de paires de bases ≈ 1072 x 10 ^ 9.
| Modèle | Tâche | Tâche seq len | Métrique | Nom de la branche HF |
|---|---|---|---|---|
| Gena-LM-Bert-Base-T2T | promoteurs | 300bp | 74,56 + -0,36 F1 | promoteurs_300_run_1 |
| Gena-LM-Bert-Large-T2T | promoteurs | 300bp | 76.44 + -0,16 F1 | promoteurs_300_run_1 |
| Gena-LM-Bert-Large-T2T | promoteurs | 2000bp | 93,70 + -0,44 F1 | promoteurs_2000_run_1 |
| Gena-LM-Bert-Base-T2T | site d'épissage | 15000bp | 92.63 + -0,09 pr Auc | spliceai_run_1 |
| Gena-LM-Bert-Large-T2T | site d'épissage | 15000bp | 93.59 + -0.11 PR AUC | spliceai_run_1 |
Pour obtenir un modèle pré-formé sur une tâche en aval, remplacez model_name et branch_name par des valeurs de la table. Les métriques du tableau sont moyennées sur plusieurs cycles. Par conséquent, les valeurs de chaque point de contrôle peuvent différer de celles rapportées ici.
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 )Obtenez une classe de modèle à partir du référentiel Gena-LM:
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' )Ou vous pouvez simplement télécharger Modeling_bert.py et le mettre près de votre code.
Ou vous pouvez obtenir des cours de modèle à partir de HuggingFace Automodel:
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 ) Le modèle Gena-LM bigbird-base-t2t utilise l'implémentation Bigbird HuggingFace. Par conséquent, les classes par défaut de la bibliothèque Transformers pourraient être utilisées:
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' )Classification des séquences avec Gena-LM et Transformers HuggingFace
Clusterisation des incorporations d'ADN générées avec Gena LM
Explorez le modèle Gena-LM affiné sur l'ensemble de données Enformmer pour l'expression des gènes
@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}
}
Les tâches en aval pour l'évaluation des modèles englobent la prédiction de l'activité du promoteur et de l'activateur, des sites d'épissage, des profils de chromatine et une résistance au site de polyadénylation. Vérifiez le dossier downstream_tasks pour le code et les scripts de prétraitement des données que nous avons utilisés:
Afin de télécharger le génome humain, veuillez exécuter le script suivant:
./download_data.sh human
Pour le prétraitement, exécutez le script suivant:
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/
Pour les modèles avec une attention clairsemés ( gena-lm-bigbird-base-sparse , gena-lm-bigbird-base-sparse-t2t ) FP16 Support et Deeppeed sont nécessaires.
Installez 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" ./
Une installation en profondeur est nécessaire pour travailler avec des versions à la réaction à la référence des modèles de langage. L'attention clairsemée en profondeur ne prend en charge que les GPU avec une compatibilité de calcul> = 7 (V100, T4, A100), CUDA 10.1, 10.2, 11,0 ou 11,1 et fonctionne uniquement en mode FP16 (à partir de profondeur 0,6,0).
Pytorch> = 1.7.1, <= 1.10.1 Les roues avec CUDA 10.2 / 11.0 / 11.1 de pytorch.org peuvent être utilisées. Cependant, l'utilisation d'OPS clairsemées avec les roues Pytorch CUDA 11.1 nécessiterait l'installation de CUDA 11.3 / 11.4 sur le système. Des OPS clairsemés pourraient également être utilisés avec Pytorch == 1.12.1 Roues CUDA 11.3, mais les tests OPS clairsemés en profondeur nécessiteraient de les modifier car ils vérifient la version CUDA TORCH <= 11,1. Deeppeed Fork pour Triton 1.1.1 a déjà mis à jour des tests.
Triton 1.0.0 et 1.1.1 nécessite 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-cacheet vérifier l'installation avec
ds_reportTriton 1.1.1 apporte une accélération x2 aux opérations clairsemées sur A100, mais Deeppeed (0,6,5) prend actuellement en charge uniquement Triton 1.0.0. Deeppeed Fork avec le support Triton 1.1.1 pourrait être utilisé dans les cas où une telle accélération est nécessaire:
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-cacheet exécuter des tests OPS clairsemés avec
cd tests/unit
pytest -v test_sparse_attention.pyNous utilisons la formation des formateurs et multi-GPU à partir du référentiel LM-Experiments-Tools comme base de nos scripts Finetuning. Cependant, vous pouvez utiliser HF Transformers Trainer, Pytorch Lightning ou Accelerate et Pytorch avec des boucles de formation personnalisées à la place.
Installez LM-Experiments-Tools selon https://github.com/yurakuratov/t5-experiments#install-ously-lm_experiments_tools:
git clone https://github.com/yurakuratov/t5-experiments
cd t5-experiments
pip install -e .