🚀 nucleotide-transformer-v2-50m-multi-species
Nucleotide Transformersは、全ゲノムのDNA配列を用いて事前学習された基礎言語モデルのコレクションです。他のアプローチと比較して、当社のモデルは単一の参照ゲノムからの情報のみを統合するのではなく、3,200以上の多様なヒトゲノムと、モデル生物や非モデル生物を含む幅広い種の850のゲノムからのDNA配列を活用しています。堅牢かつ広範な評価を通じて、これらの大規模モデルが既存の方法と比較して非常に正確な分子表現型予測を提供することを示しています。
このコレクションの一部であるnucleotide-transformer-v2-50m-3mer-multi-speciesは、モデル生物や非モデル生物を含む幅広い種の850のゲノムのコレクションで事前学習された5000万パラメータのトランスフォーマーです。
このモデルは、タンパク質に対するゲノム言語モデルの能力を評価する取り組みの一環として学習されました。この研究では、3merトークン化が、微細な下流のタンパク質予測を改善する可能性のあるアーキテクチャの変更として検討されました。
開発者: InstaDeep
📚 モデル情報
🚀 クイックスタート
次のリリースまでは、transformers
ライブラリをソースからインストールする必要があります。以下のコマンドを使用してください。
pip install --upgrade git+https://github.com/huggingface/transformers.git
ダミーのDNA配列からロジットと埋め込みを取得するための小さなコードスニペットを以下に示します。
from transformers import AutoTokenizer, AutoModelForMaskedLM
import torch
tokenizer = AutoTokenizer.from_pretrained("InstaDeepAI/nucleotide-transformer-v2-50m-3mer-multi-species", trust_remote_code=True)
model = AutoModelForMaskedLM.from_pretrained("InstaDeepAI/nucleotide-transformer-v2-50m-3mer-multi-species", trust_remote_code=True)
max_length = tokenizer.model_max_length
sequences = ["ATTCCGATTCCGATTCCG", "ATTTCTCTCTCTCTCTGAGATCGATCGATCGAT"]
tokens_ids = tokenizer.batch_encode_plus(sequences, return_tensors="pt", padding="max_length", max_length = max_length)["input_ids"]
attention_mask = tokens_ids != tokenizer.pad_token_id
torch_outs = model(
tokens_ids,
attention_mask=attention_mask,
encoder_attention_mask=attention_mask,
output_hidden_states=True
)
embeddings = torch_outs['hidden_states'][-1].detach().numpy()
print(f"Embeddings shape: {embeddings.shape}")
print(f"Embeddings per token: {embeddings}")
attention_mask = torch.unsqueeze(attention_mask, dim=-1)
mean_sequence_embeddings = torch.sum(attention_mask*embeddings, axis=-2)/torch.sum(attention_mask, axis=1)
print(f"Mean sequence embeddings: {mean_sequence_embeddings}")
📦 インストール
次のリリースまでは、transformers
ライブラリをソースからインストールする必要があります。以下のコマンドを使用してください。
pip install --upgrade git+https://github.com/huggingface/transformers.git
💻 使用例
基本的な使用法
from transformers import AutoTokenizer, AutoModelForMaskedLM
import torch
tokenizer = AutoTokenizer.from_pretrained("InstaDeepAI/nucleotide-transformer-v2-50m-3mer-multi-species", trust_remote_code=True)
model = AutoModelForMaskedLM.from_pretrained("InstaDeepAI/nucleotide-transformer-v2-50m-3mer-multi-species", trust_remote_code=True)
max_length = tokenizer.model_max_length
sequences = ["ATTCCGATTCCGATTCCG", "ATTTCTCTCTCTCTCTGAGATCGATCGATCGAT"]
tokens_ids = tokenizer.batch_encode_plus(sequences, return_tensors="pt", padding="max_length", max_length = max_length)["input_ids"]
attention_mask = tokens_ids != tokenizer.pad_token_id
torch_outs = model(
tokens_ids,
attention_mask=attention_mask,
encoder_attention_mask=attention_mask,
output_hidden_states=True
)
embeddings = torch_outs['hidden_states'][-1].detach().numpy()
print(f"Embeddings shape: {embeddings.shape}")
print(f"Embeddings per token: {embeddings}")
attention_mask = torch.unsqueeze(attention_mask, dim=-1)
mean_sequence_embeddings = torch.sum(attention_mask*embeddings, axis=-2)/torch.sum(attention_mask, axis=1)
print(f"Mean sequence embeddings: {mean_sequence_embeddings}")
📚 詳細ドキュメント
訓練データ
nucleotide-transformer-v2-50m-3mer-multi-speciesモデルは、NCBIからダウンロードした合計850のゲノムで事前学習されました。これらのゲノムには植物やウイルスは含まれていません。その調節要素は論文のタスクで対象となるものとは異なるためです。いくつかの詳細に研究されたモデル生物がゲノムのコレクションに含まれるように選ばれました。これは合計1740億ヌクレオチド、つまり約290億トークンを表します。このデータはHuggingFaceのデータセットとしてこちらで公開されています。
訓練手順
前処理
DNA配列はNucleotide Transformer Tokenizerを使用してトークン化されます。このトークナイザーは可能な場合は配列を6merトークン化し、それ以外の場合は各ヌクレオチドを個別にトークン化します。詳細は関連するリポジトリのTokenizationセクションを参照してください。このトークナイザーの語彙サイズは4105です。モデルの入力は次の形式になります。
<CLS> <ACGTGT> <ACGTGC> <ACGGAC> <GACTAG> <TCAGCA>
トークン化された配列の最大長は1,000です。
使用されるマスキング手順は、Bertスタイルの学習の標準的なものです。
- トークンの15%がマスクされます。
- 80%の場合、マスクされたトークンは
[MASK]
に置き換えられます。
- 10%の場合、マスクされたトークンは置き換えるトークンとは異なるランダムなトークンに置き換えられます。
- 残りの10%の場合、マスクされたトークンはそのまま残されます。
事前学習
このモデルは、64台のTPUv4で3000億トークンに対して学習されました。有効なバッチサイズは100万トークンです。使用されたシーケンス長は1000トークンです。Adamオプティマイザー[38]が学習率スケジュールとともに使用され、指数減衰率とイプシロン定数の標準値、β1 = 0.9、β2 = 0.999、ε = 1e-8が使用されました。最初のウォームアップ期間中、学習率は16kステップにわたって5e-5から1e-4まで線形に増加し、その後平方根減衰に従って学習終了まで減少しました。
アーキテクチャ
このモデルはヌクレオチドトランスフォーマーの第2世代に属しています。アーキテクチャの変更点は、学習された位置埋め込みではなく回転位置埋め込みを使用すること、およびゲート付き線形ユニットの導入です。
BibTeXエントリと引用情報
@article{boshar2024glmsforproteins,
title={Are Genomic Language Models All You Need? Exploring Genomic Language Models on Protein Downstream Tasks},
author={Boshar, Sam and Trop, Evan and de Almeida, Bernardo and Copoiu, Liviu and Pierrot, Thomas},
journal={bioRxiv},
pages={2024--01},
year={2024},
publisher={Cold Spring Harbor Laboratory}
}
📄 ライセンス
このモデルはCC BY-NC-SA 4.0ライセンスの下で提供されています。