Gena-LM é uma família de modelos fundamentais de código aberto para sequências longas de DNA.
Os modelos GENA-LM são modelos de linguagem mascarada de transformador treinados na sequência de DNA humano.
Principais recursos de nossos modelos Gena-LM:
| Modelo | Arquitetura | Max Seqlen, Tokens (BP) | Params | Dados do tokenizer | Dados de treinamento |
|---|---|---|---|---|---|
| Bert-base | BERT-12L | 512 (4500) | 110m | T2T Split v1 | T2T Split v1 |
| Bert-Base-T2T | BERT-12L | 512 (4500) | 110m | T2T+1000G SNPS+MULTSPECIES | T2T+1000G SNPS |
| Bert-Base-lastln-t2t | BERT-12L | 512 (4500) | 110m | T2T+1000G SNPS+MULTSPECIES | T2T+1000G SNPS |
| BERT-BASE-T2T-MULTI | BERT-12L | 512 (4500) | 110m | T2T+1000G SNPS+MULTSPECIES | T2T+1000G SNPS+MULTSPECIES |
| Bert-Large-T2T | Bert-24l | 512 (4500) | 336m | T2T+1000G SNPS+MULTSPECIES | T2T+1000G SNPS |
| Bigbird-Base Sparse | BERT-12L, OPS SPAROS | 4096 (36000) | 110m | T2T Split v1 | T2T Split v1 |
| Bigbird-Base-SPARSE-T2T | BERT-12L, OPS SPAROS | 4096 (36000) | 110m | T2T+1000G SNPS+MULTSPECIES | T2T+1000G SNPS |
| Bigbird-Base-T2T | BERT-12L, HF BigBird | 4096 (36000) | 110m | T2T+1000G SNPS+MULTSPECIES | T2T+1000G SNPS |
T2T Split V1 refere-se a modelos preliminares com uma assembléia de genoma humano T2T não gravado. Os modelos baseados em Bert empregam normalização pré-camada e lastln denota explicitamente que a normalização da camada também é aplicada à camada final. A corda indica o uso de incorporações de posição rotativa no lugar de incorporações posicionais absolutas do tipo Bert.
Para nossos primeiros modelos ( gena-lm-bert-base e gena-lm-bigbird-base-sparse ), sustentamos os cromossomos humanos 22 e Y (CP068256.2 e CP086569.2) como o conjunto de dados de teste para a tarefa de modelagem de linguagem mascarada. Para todos os outros modelos, sustentamos os cromossomos humanos 7 e 10 (CP068271.2 e CP068268.2); Esses modelos têm o sufixo "T2T" em seus nomes. Outros dados foram usados para treinamento. Os modelos somente humanos foram treinados na montagem do genoma T2T V2 humano pré-processado e seus aumentos SNP de 1000 genoma, fazendo um total de ± 480 x 10^9 pares de bases. Os modelos multiespécies foram treinados na fabricação de dados somente para humanos e multiespécies em um total de ± 1072 x 10^9 pares de bases.
| Modelo | Tarefa | Tarefa seq len | Métrica | Nome da filial da HF |
|---|---|---|---|---|
| Gena-lm-Bert-Base-T2T | promotores | 300BP | 74.56+-0,36 F1 | promotores_300_run_1 |
| Gena-lm-Bert-Large-T2T | promotores | 300BP | 76.44+-0.16 F1 | promotores_300_run_1 |
| Gena-lm-Bert-Large-T2T | promotores | 2000bp | 93.70+-0,44 F1 | promotores_2000_run_1 |
| Gena-lm-Bert-Base-T2T | site de emenda | 15000BP | 92.63+-0,09 Pr auc | spliceai_run_1 |
| Gena-lm-Bert-Large-T2T | site de emenda | 15000BP | 93.59+-0.11 Pr AUC | spliceai_run_1 |
Para obter um modelo pré-treinado em uma tarefa a jusante, substitua model_name e branch_name por valores da tabela. As métricas na tabela são calculadas em média em várias execuções. Portanto, os valores para cada ponto de verificação podem diferir dos relatados aqui.
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 )Obtenha a classe modelo do repositório de 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 você pode simplesmente baixar o Modeling_bert.py e colocá -lo perto do seu código.
Ou você pode obter a classe Model da 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 ) O modelo GENA-LM bigbird-base-t2t usa a implementação do Bigbird Huggingface. Portanto, as classes padrão da Biblioteca Transformers podem ser usadas:
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' )Classificação de sequência com Gena-LM e Transformers de Huggingface
Clusterização de incorporações de DNA geradas com Gena LM
Explore o modelo GENA-LM FINED no conjunto de dados Enformer para expressão de genes
@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}
}
As tarefas a jusante para avaliação do modelo abrangem a previsão da atividade do promotor e do intensificador, locais de emenda, perfis de cromatina e força do local de poliadenilação. Confira a pasta downstream_tasks para obter scripts de código e pré -processamento de dados que usamos:
Para baixar o genoma humano, execute o seguinte script:
./download_data.sh human
Para pré -processamento, execute o seguinte script:
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/
Para modelos com atenção esparsa ( gena-lm-bigbird-base-sparse , é necessário suporte gena-lm-bigbird-base-sparse-t2t ) FP16 e é necessário o DeepSpeed.
Instale o 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" ./
É necessária a instalação da DeepSpeed para trabalhar com versões SparSeattion de modelos de idiomas. A atenção escassa de velocidade profunda suporta apenas GPUs com compatibilidade de computação> = 7 (V100, T4, A100), CUDA 10.1, 10.2, 11.0 ou 11.1 e é executado apenas no modo FP16 (da velocidade de profundidade 0,6,0).
Pytorch> = 1.7.1, <= 1.10.1 rodas com CUDA 10.2/11.0/11.1 de pytorch.org podem ser usadas. No entanto, o uso de operações esparsas com as rodas Pytorch CUDA 11.1 exigiria que o CUDA 11.3/11.4 fosse instalado no sistema. Operações esparsas também podem ser usadas com pytorch == 1.12.1 CUDA 11.3 rodas, mas os testes de operações escassas de velocidade profunda exigiriam modificá -las enquanto verificam a versão da tocha CUDA <= 11.1. O DeepSpeed Fork for Triton 1.1.1 já possui testes atualizados.
Triton 1.0.0 e 1.1.1 requer 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-cachee verifique a instalação com
ds_reportO Triton 1.1.1 traz X2 Speed-Up para operações esparsas no A100, mas atualmente a velocidade do DeepSpeed (0,6,5) suporta apenas o Triton 1.0.0. Fork de velocidade DeepSpeed com o suporte Triton 1.1.1 pode ser usado nos casos em que essa aceleração é necessária:
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-cachee execute testes de operações esparsas com
cd tests/unit
pytest -v test_sparse_attention.pyUtilizamos treinamento de treinador e multi-GPU do repositório de ferramentas de expectativas LM como base para nossos scripts de Finetuning. No entanto, você pode usar o HF Transformers Trainer, Pytorch Lightning ou acelerar e pytorch com loops de treinamento personalizados.
Instale o LM-Experiments-tools de acordo com https://github.com/yurakuratov/t5-experiments#install-lly-lm_experiments_tools:
git clone https://github.com/yurakuratov/t5-experiments
cd t5-experiments
pip install -e .