Gena-LMは、長いDNA配列のオープンソースの基礎モデルのファミリーです。
Gena-LMモデルは、ヒトDNAシーケンスで訓練されたトランスマスクモデルです。
Gena-LMモデルの主要な機能:
| モデル | 建築 | マックス・シクレン、トークン(BP) | パラメージ | トークン剤データ | トレーニングデータ |
|---|---|---|---|---|---|
| バートベース | bert-12l | 512(4500) | 110m | T2T分割V1 | T2T分割V1 |
| bert-base-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、ディープスピードスパースオプス、ロープ | 4096(36000) | 110m | T2T分割V1 | T2T分割V1 |
| Bigbird-Base-Sparse-T2T | bert-12l、ディープスピードスパースオプス、ロープ | 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ヒトゲノムアセンブリ分割による予備モデルを指します。 BERTベースのモデルは、プレレイヤーの正規化を採用しており、LastLNは、層の正規化が最終層にも適用されることを明示的に示します。ロープは、バートのような絶対位置埋め込みの代わりに回転位置埋め込みの使用を示します。
最初のモデル( gena-lm-bert-baseおよびgena-lm-bigbird-base-sparse )では、マスク言語モデリングタスクのテストデータセットとして、ヒト染色体22およびY(CP068256.2およびCP086569.2)を保持します。他のすべてのモデルについては、ヒト染色体7および10(CP068271.2およびCP068268.2)を保持します。これらのモデルには、名前に接尾辞「T2T」があります。他のデータがトレーニングに使用されました。ヒトのみのモデルは、事前に処理されたヒトT2T V2ゲノムアセンブリと、合計480 x 10^9塩基対で1000ゲノムSNPの増強で訓練されました。多種種モデルは、合計1072 x 10^9塩基対で人間のみおよび複数のデータ作成について訓練されました。
| モデル | タスク | Task 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トランスを使用したシーケンス分類
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" ./
言語モデルのSparSeattentionバージョンを使用するには、DeepSpeedのインストールが必要です。 Deepspeedスパースの注意は、計算互換性> = 7(V100、T4、A100)、CUDA 10.1、10.2、11.0、または11.1でGPUのみをサポートし、FP16モードでのみ実行されます(DeepSpeed 0.6.0)。
pytorch> = 1.7.1、<= 1.10.1 cuda 10.2/11.0/11.1を備えたホイールpytorch.orgを使用できます。ただし、CUDA 11.1 Pytorchホイールを使用してスパースOPSを使用するには、システムにインストールするにはCUDA 11.3/11.4が必要です。 Pytorch == 1.12.1 CUDA 11.3ホイールでは、スパースオペレーションも使用できますが、DeepSpeed Sparse Opsテストを実行するには、Torch Cudaバージョン<= 11.1をチェックする際にそれらを変更する必要があります。 Triton 1.1.1のDeepspeedフォークには、すでに更新されたテストがあります。
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でスパース操作にもたらしますが、現在はTriton 1.0.0のみをサポートしています。 Triton 1.1.1のDeepspeedフォークは、そのようなスピードアップが必要な場合に使用できます。
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スパースオペレーションテストを実行します
cd tests/unit
pytest -v test_sparse_attention.pyLM Experments-ToolsリポジトリからのトレーナーとマルチGPUトレーニングを、微調整スクリプトの基礎として使用しています。ただし、HFトランスフォーマートレーナー、Pytorch Lightningを使用するか、代わりにカスタムトレーニングループを使用してAcelerateとPytorchを使用できます。
https://github.com/yurakuratov/t5-experiments#install-only-lm_experiments_toolsに従ってlm-experiments-toolsをインストール:
git clone https://github.com/yurakuratov/t5-experiments
cd t5-experiments
pip install -e .