Gena-LM adalah keluarga model dasar open-source untuk urutan DNA yang panjang.
Model Gena-LM adalah model bahasa bertopeng transformator yang dilatih pada urutan DNA manusia.
Fitur Utama dari Model Gena-LM kami:
| Model | Arsitektur | Max Seqlen, Token (BP) | Params | Data tokenizer | Data pelatihan |
|---|---|---|---|---|---|
| Bert-base | BERT-12L | 512 (4500) | 110m | T2T split v1 | T2T split v1 |
| Bert-Base-T2T | BERT-12L | 512 (4500) | 110m | T2T+1000G SNP+MULTISPESI | T2T+1000G SNP |
| Bert-base-lastln-t2t | BERT-12L | 512 (4500) | 110m | T2T+1000G SNP+MULTISPESI | T2T+1000G SNP |
| Bert-Base-T2T-Multi | BERT-12L | 512 (4500) | 110m | T2T+1000G SNP+MULTISPESI | T2T+1000G SNP+MULTISPESI |
| Bert-Large-T2T | BERT-24L | 512 (4500) | 336m | T2T+1000G SNP+MULTISPESI | T2T+1000G SNP |
| Bigbird-Base-SPARSE | BERT-12L, OPS JPARSE KECEPATAN DEEPED, ROPE | 4096 (36000) | 110m | T2T split v1 | T2T split v1 |
| Bigbird-base-SPARSE-T2T | BERT-12L, OPS JPARSE KECEPATAN DEEPED, ROPE | 4096 (36000) | 110m | T2T+1000G SNP+MULTISPESI | T2T+1000G SNP |
| Bigbird-base-T2T | BERT-12L, HF BIGBIRD | 4096 (36000) | 110m | T2T+1000G SNP+MULTISPESI | T2T+1000G SNP |
T2T Split V1 mengacu pada model awal dengan split perakitan genom manusia T2T yang tidak beragama. Model berbasis Bert menggunakan normalisasi pra-lapis dan lastLN secara eksplisit menunjukkan bahwa normalisasi lapisan juga diterapkan pada lapisan akhir. Tali menunjukkan penggunaan embedding posisi putar sebagai pengganti embedding posisi absolut seperti Bert.
Untuk model pertama kami ( gena-lm-bert-base dan gena-lm-bigbird-base-sparse ) kami mengulurkan kromosom manusia 22 dan Y (CP068256.2 dan CP086569.2) sebagai dataset uji untuk tugas pemodelan bahasa bertopeng. Untuk semua model lainnya, kami menahan kromosom manusia 7 dan 10 (CP068271.2 dan CP068268.2); Model -model ini memiliki akhiran "T2T" atas nama mereka. Data lain digunakan untuk pelatihan. Model hanya manusia dilatih pada perakitan genom T2T V2 manusia yang telah diproses dan pembuatan augmentasi SNP 1000 genom dalam total ≈ 480 x 10^9 pasangan basa. Model multispesies dilatih pada data hanya manusia dan multispesies dalam total ≈ 1072 x 10^9 pasangan basa.
| Model | Tugas | Tugas seq len | Metrik | Nama cabang HF |
|---|---|---|---|---|
| gena-lm-eri-base-t2t | promotor | 300bp | 74.56+-0.36 F1 | promotor_300_run_1 |
| Gena-LM-Bert-Large-T2T | promotor | 300bp | 76.44+-0.16 F1 | promotor_300_run_1 |
| Gena-LM-Bert-Large-T2T | promotor | 2000bp | 93.70+-0.44 F1 | promotor_2000_run_1 |
| gena-lm-eri-base-t2t | Situs sambungan | 15000bp | 92.63+-0.09 PR AUC | spliceai_run_1 |
| Gena-LM-Bert-Large-T2T | Situs sambungan | 15000bp | 93.59+-0.11 PR AUC | spliceai_run_1 |
Untuk mendapatkan model pra-terlatih pada tugas hilir, ganti model_name dan branch_name dengan nilai-nilai dari tabel. Metrik dalam tabel dirata -rata selama beberapa kali berjalan. Oleh karena itu, nilai untuk setiap pos pemeriksaan mungkin berbeda dari yang dilaporkan di sini.
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 )Dapatkan Kelas Model dari Repositori 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' )Atau Anda bisa mengunduh modeling_bert.py dan meletakkannya dekat dengan kode Anda.
Atau Anda bisa mendapatkan kelas model dari 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 ) Model Gena-LM bigbird-base-t2t menggunakan implementasi Huggingface Bigbird. Oleh karena itu, kelas default dari perpustakaan Transformers dapat digunakan:
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' )Klasifikasi Urutan dengan Gena-LM dan Transformer Huggingface
Clusterisasi embeddings DNA dihasilkan dengan gen lm
Jelajahi model genA-LM disesuaikan pada dataset enformer untuk ekspresi gen
@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}
}
Tugas hilir untuk evaluasi model mencakup prediksi aktivitas promotor dan penambah, situs splicing, profil kromatin, dan kekuatan situs poliadenilasi. Periksa folder downstream_tasks untuk skrip preprocessing kode dan data yang kami gunakan:
Untuk mengunduh genom manusia, silakan jalankan skrip berikut:
./download_data.sh human
Untuk preprocessing, jalankan skrip berikut:
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/
Untuk model dengan perhatian yang jarang ( gena-lm-bigbird-base-sparse , Dukungan FP16 gena-lm-bigbird-base-sparse-t2t ) dan kecepatan dalam diperlukan.
Instal 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" ./
Instalasi kecepatan dalam diperlukan untuk bekerja dengan versi model bahasa yang sparseattention. Perhatian Jarang Kecepatan Deep hanya mendukung GPU dengan kompatibilitas komputasi> = 7 (V100, T4, A100), CUDA 10.1, 10.2, 11.0, atau 11.1 dan hanya berjalan dalam mode FP16 (pada Deep -kecepatan 0.6.0).
Pytorch> = 1.7.1, <= 1.10.1 roda dengan CUDA 10.2/11.0/11.1 dari pytorch.org dapat digunakan. Namun, menggunakan operasi jarang dengan roda CUDA 11.1 Pytorch akan membutuhkan CUDA 11.3/11.4 untuk dipasang pada sistem. Ops jarang juga dapat digunakan dengan pytorch == 1.12.1 CUDA 11.3 roda, tetapi menjalankan tes OPS Jarang Kecepatan Depalam akan memerlukan memodifikasinya saat mereka memeriksa versi Torch CUDA <= 11.1. Deepspeed Fork untuk Triton 1.1.1 telah memperbarui tes.
Triton 1.0.0 dan 1.1.1 membutuhkan 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-cachedan periksa instalasi dengan
ds_reportTriton 1.1.1 membawa x2 speed-up untuk operasi yang jarang pada A100, tetapi Deepspeed (0,6,5) saat ini hanya mendukung Triton 1.0.0. Garpu Deepspeed dengan Dukungan Triton 1.1.1 dapat digunakan dalam kasus di mana speed-up tersebut diperlukan:
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-cachedan jalankan tes OPS yang jarang dengan
cd tests/unit
pytest -v test_sparse_attention.pyKami menggunakan pelatihan dan pelatihan multi-GPU dari repositori LM-Experiments-tools sebagai dasar untuk skrip finetuning kami. Namun, Anda dapat menggunakan HF Transformers Trainer, Pytorch Lightning, atau Accelerate dan Pytorch dengan loop pelatihan khusus sebagai gantinya.
Instal LM-Experiments-tools Menurut 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 .