Gena-LM-это семейство фундаментальных моделей с открытым исходным кодом для длинных последовательностей ДНК.
Модели Gena-LM являются моделями языка, маскированных трансформаторами, обученными последовательности ДНК человека.
Ключевые особенности наших моделей Gena-LM:
| Модель | Архитектура | Макс Секлен, токены (BP) | Параметры | Данные токенизатора | Данные обучения |
|---|---|---|---|---|---|
| Берт-баз | БЕРТ-12Л | 512 (4500) | 110 м | T2T Split v1 | T2T Split v1 |
| BERT-BASE-T2T | БЕРТ-12Л | 512 (4500) | 110 м | T2T+1000G SNPS+Multipecies | T2T+1000G SNP |
| BERT-BASE-LASTLN-T2T | БЕРТ-12Л | 512 (4500) | 110 м | T2T+1000G SNPS+Multipecies | T2T+1000G SNP |
| BERT-BASE-T2T-MULTI | БЕРТ-12Л | 512 (4500) | 110 м | T2T+1000G SNPS+Multipecies | T2T+1000G SNPS+Multipecies |
| Bert-Large-T2t | БЕРТ-24L | 512 (4500) | 336 м | T2T+1000G SNPS+Multipecies | T2T+1000G SNP |
| Bigbird-Base-Sparse | Bert-12L, Deepspeed Sparse Ops, веревка | 4096 (36000) | 110 м | T2T Split v1 | T2T Split v1 |
| Bigbird-base-sparse-t2t | Bert-12L, Deepspeed Sparse Ops, веревка | 4096 (36000) | 110 м | T2T+1000G SNPS+Multipecies | T2T+1000G SNP |
| Bigbird-Base-T2t | Bert-12L, HF Bigbird | 4096 (36000) | 110 м | T2T+1000G SNPS+Multipecies | T2T+1000G SNP |
T2T Split v1 относится к предварительным моделям с неагированным разделением генома T2T человека. Модели на основе BERT используют нормализацию предварительного уровня, а Lostln явно обозначает, что нормализация слоя также применяется к конечному слою. Веревка указывает на использование вращающихся положений в помещении, похожих на берт, абсолютных позиционных вторжений.
Для наших первых моделей ( gena-lm-bert-base и gena-lm-bigbird-base-sparse ) мы проводим хромосомы человека 22 и Y (CP068256.2 и CP086569.2) в качестве набора тестового набора данных для задачи маскированного языкового моделирования. Для всех других моделей мы проводим хромосомы человека 7 и 10 (CP068271.2 и CP068268.2); Эти модели имеют суффикс «T2T» в их именах. Другие данные использовались для обучения. Модели только для человека обучались на предварительно обработанной сборке генома T2T V2 человека и ее увеличении SNP 1000 геном, составляющих в общей сложности 480 x 10^9 пар оснований. Модели Multipecies проводились на то, чтобы сделать данные только для человека и мультиспецилы, в общей сложности ≈ 1072 x 10^9 пар оснований.
| Модель | Задача | Задача SEQ LEN | Показатель | Название филиала HF |
|---|---|---|---|---|
| Gena-LM-Bert-Base-T2t | промоутеры | 300bp | 74.56+-0,36 F1 | PROMOTERS_300_RUN_1 |
| Gena-LM-Bert-Large-T2t | промоутеры | 300bp | 76.44+-0,16 F1 | PROMOTERS_300_RUN_1 |
| Gena-LM-Bert-Large-T2t | промоутеры | 2000bp | 93,70+-0,44 F1 | PROMOTERS_2000_RUN_1 |
| Gena-LM-Bert-Base-T2t | сайт сплайсинга | 15000bp | 92.63+-0,09 PR AUC | spliceai_run_1 |
| Gena-LM-Bert-Large-T2t | сайт сплайсинга | 15000bp | 93,59+-0,11 PR AUC | spliceai_run_1 |
Чтобы получить предварительно обученную модель на задаче вниз по течению, замените model_name и branch_name значениями из таблицы. Метрики в столе усредняются по нескольким пробегам. Следовательно, значения для каждой контрольной точки могут отличаться от значений здесь.
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 )Получить модельный класс из репозитория 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' )Или вы можете просто загрузить modeling_bert.py и поместить его близко к своему коду.
Или вы можете получить уроки модели от 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 ) Модель Gena-LM bigbird-base-t2t использует реализацию Bigbird. Поэтому можно использовать классы по умолчанию из библиотеки трансформаторов:
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' )Классификация последовательности с Gena-LM и Huggingface Transformers
Кластеризация встроенных ДНК, полученных с Gena LM
Исследуйте модель Gena-LM, настраиваемое на набор данных ENFormer для экспрессии генов
@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}
}
Нижние задачи для оценки модели охватывают прогнозирование активности промотора и энхансера, сайтов сплайсинга, профилей хроматина и прочности сайта полиаденилирования. Проверьте папку downstream_tasks для сценариев предварительной обработки кодов и данных:
Чтобы загрузить человеческий геном, пожалуйста, запустите следующий сценарий:
./download_data.sh human
Для предварительной обработки выполните следующий скрипт:
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/
Для моделей с редким вниманием ( gena-lm-bigbird-base-sparse , gena-lm-bigbird-base-sparse-t2t ) FP16 Требуется поддержка и DeepSpeed.
Установите 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" ./
Инсталляция Deepspeed необходима для работы с версиями языковых моделей SparseAttention. Рукоятное внимание DeepSpeed поддерживает только графические процессоры с вычислением Compatibility> = 7 (V100, T4, A100), CUDA 10.1, 10.2, 11.0 или 11,1 и работает только в режиме FP16 (как и DeepSpeed 0,6.0).
Pytorch> = 1,7,1, <= 1,10,1 колеса с CUDA 10,2/11,0/11,1 из pytorch.org можно использовать. Тем не менее, использование Sparse Ops с колесами CUDA 11.1 Pytorch потребует CUDA 11.3/11.4 для установки в системе. Sparse Ops также можно использовать с Pytorch == 1.12.1 Cuda 11,3 колеса, но выполнение тестов DeepSpeed Sparse Ops потребует их изменения при проверке версии Torch Cuda <= 11,1. DeepSpeed Fork для Triton 1.1.1 уже имеет обновленные тесты.
Triton 1.0.0 и 1.1.1 требуют 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-cacheи проверьте установку с
ds_reportTriton 1.1.1 приносит x2 ускорение на разреженные операции на A100, но Deepspeed (0,6,5) в настоящее время поддерживает только Triton 1.0.0. Форк с темно-скоростью с поддержкой Triton 1.1.1 может быть использована в тех случаях, когда такое ускорение необходимо:
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-cacheи запустить Sparse Ops тесты с
cd tests/unit
pytest -v test_sparse_attention.pyМы используем обучение тренеров и мульти-GPU из репозитория LM-экспериментов-репозитория в качестве основы для наших сценариев. Тем не менее, вы можете использовать тренер HF Transformers, Pytorch Lightning или Accelerate и Pytorch с индивидуальными тренировочными петлями.
Установите LM-Experiments-Tools в соответствии с 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 .