GENA-LM은 긴 DNA 서열을위한 오픈 소스 기초 모델의 패밀리입니다.
GENA-LM 모델은 인간 DNA 서열에서 훈련 된 변압기 마스크 언어 모델입니다.
Gena-LM 모델의 주요 기능 :
| 모델 | 건축학 | Max Seqlen, 토큰 (BP) | 매개 변수 | 토큰 화제 데이터 | 교육 데이터 |
|---|---|---|---|---|---|
| 버트베이스 | BERT-12L | 512 (4500) | 110m | T2T 분할 v1 | T2T 분할 v1 |
| 버트-베이스 -T2T | BERT-12L | 512 (4500) | 110m | T2T+1000G SNPS+다종 | T2T+1000G SNP |
| Bert-Base-lastln-t2t | BERT-12L | 512 (4500) | 110m | T2T+1000G SNPS+다종 | T2T+1000G SNP |
| Bert-Base-T2T-Multi | BERT-12L | 512 (4500) | 110m | T2T+1000G SNPS+다종 | T2T+1000G SNPS+다종 |
| Bert-Large-T2T | Bert-24L | 512 (4500) | 336m | T2T+1000G SNPS+다종 | T2T+1000G SNP |
| Bigbird-Base-Sparse | Bert-12L, Deepspeed Sparse Ops, 로프 | 4096 (36000) | 110m | T2T 분할 v1 | T2T 분할 v1 |
| Bigbird-Base-Sparse-T2T | Bert-12L, Deepspeed Sparse Ops, 로프 | 4096 (36000) | 110m | T2T+1000G SNPS+다종 | T2T+1000G SNP |
| Bigbird-Base-T2T | BERT-12L, HF BIGBIRD | 4096 (36000) | 110m | T2T+1000G SNPS+다종 | T2T+1000G SNP |
T2T 분할 V1은 비 침전 T2T 인간 게놈 어셈블리 분할을 갖는 예비 모델을 지칭한다. 버트 기반 모델은 사전 계층 정규화를 사용하고 마지막으로 층 정규화가 최종 층에도 적용된다는 것을 명시 적으로 나타냅니다. 로프는 베르트와 같은 절대 위치 임베드 대신 로터리 위치 임베딩을 사용 함을 나타냅니다.
우리의 첫 번째 모델 ( gena-lm-bert-base 및 gena-lm-bigbird-base-sparse )의 경우 마스크 언어 모델링 작업에 대한 테스트 데이터 세트로 인간 염색체 22 및 Y (CP068256.2 및 CP086569.2)를 보유합니다. 다른 모든 모델의 경우, 인간 염색체 7 및 10 (CP068271.2 및 CP068268.2)을 보유하고; 이 모델에는 이름에 접미사 "T2T"가 있습니다. 다른 데이터는 훈련에 사용되었습니다. 인간 전용 모델은 사전 처리 된 인간 T2T V2 게놈 어셈블리 및 1000- 게놈 SNP 증강에 대해 총 ≈ 480 x 10^9베이스 쌍에 대해 훈련되었습니다. 다기관 모델은 총 ≈ 1072 x 10^9베이스 쌍으로 인간 전용 및 다중 종 데이터 제작에 대한 교육을 받았습니다.
| 모델 | 일 | 작업 SEQ LEN | 메트릭 | HF 지점 이름 |
|---|---|---|---|---|
| GENA-LM-BERT-BASE-T2T | 발기인 | 300bp | 74.56+-0.36 F1 | 프로모터 _300_RUN_1 |
| GENA-LM-BERT-LARGE-T2T | 발기인 | 300bp | 76.44+-0.16 F1 | 프로모터 _300_RUN_1 |
| GENA-LM-BERT-LARGE-T2T | 발기인 | 2000bp | 93.70+-0.44 F1 | 프로모터 _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 모델은 Huggingface Bigbird 구현을 사용합니다. 따라서 Transformers 라이브러리의 기본 클래스를 사용할 수 있습니다.
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으로 생성 된 DNA 임베딩의 클러스터 화
유전자 발현을위한 enformer 데이터 세트에서 Gena-LM 모델을 미세 조정하는 모색
@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 지원 및 딥 스피드가 필요합니다.
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" ./
SprarSeattention 버전의 언어 모델로 작업하려면 DeepSpeed 설치가 필요합니다. DeepSpeed Sparse주의는 컴퓨팅 호환성을 갖는 GPU 만 지원> = 7 (V100, T4, A100), CUDA 10.1, 10.2, 11.0 또는 11.1을 지원하며 FP16 모드 (DeepSpeed 0.6.0)에서만 실행됩니다.
pytorch.org에서 Cuda 10.2/11.0/11.1을 가진 휠을 사용할 수 있습니다. 그러나 Cuda 11.1 Pytorch 휠과 함께 드문 OP를 사용하려면 시스템에 Cuda 11.3/11.4가 설치되어야합니다. Sparse Ops는 Pytorch == 1.12.1 Cuda 11.3 휠과 함께 사용할 수 있지만 DeepSpeed Sparse Ops 테스트를 실행하려면 Torch Cuda 버전 <= 11.1을 확인할 때 수정해야합니다. Triton 1.1.1의 DeepSpeed Fork는 이미 테스트를 업데이트했습니다.
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은 A100에서 X2 속도를 스파스 작업에 가져 오지만 DeepSpeed (0.6.5)는 현재 Triton 1.0.0 만 지원합니다. Triton 1.1.1이 포함 된 DeepSpeed Fork는 이러한 속도가 필요한 경우에 사용될 수 있습니다.
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-cacheSparse Ops 테스트를 실행하십시오
cd tests/unit
pytest -v test_sparse_attention.py우리는 Finetuning 스크립트의 기초로 LM-Experiments-Tools 저장소의 트레이너 및 멀티 GPU 교육을 사용합니다. 그러나 HF Transformers 트레이너, Pytorch Lightning 또는 Custom Training Loops와 함께 Pytorch를 사용하여 Pytorch를 사용할 수 있습니다.
https://github.com/yurakuratov/t5-experiments#install-lm_experiments_tools에 따라 lm-experiments-tools를 설치하십시오.
git clone https://github.com/yurakuratov/t5-experiments
cd t5-experiments
pip install -e .