🚀 nucleotide-transformer-v2-500m-multi-species
Nucleotide Transformersは、全ゲノムのDNA配列で事前学習された基礎言語モデルのコレクションです。他のアプローチと比較して、当社のモデルは単一の参照ゲノムからの情報のみを統合するのではなく、3,200以上の多様なヒトゲノム、およびモデル生物や非モデル生物を含む幅広い種の850のゲノムからのDNA配列を活用しています。堅牢かつ広範な評価を通じて、これらの大規模モデルが既存の方法と比較して非常に正確な分子表現型予測を提供することを示しています。
このコレクションの一部であるnucleotide-transformer-v2-500m-multi-speciesは、モデル生物や非モデル生物を含む幅広い種の850のゲノムのコレクションで事前学習された5億パラメータのトランスフォーマーです。
開発元: InstaDeep、NVIDIA、TUM
モデルのソース
使い方
次のリリースまで、モデルを使用するには、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-500m-multi-species", trust_remote_code=True)
model = AutoModelForMaskedLM.from_pretrained("InstaDeepAI/nucleotide-transformer-v2-500m-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-500m-multi-species", trust_remote_code=True)
model = AutoModelForMaskedLM.from_pretrained("InstaDeepAI/nucleotide-transformer-v2-500m-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-500m-multi-speciesモデルは、NCBIからダウンロードした合計850のゲノムで事前学習されています。これらのゲノムには植物やウイルスは含まれておらず、それらの調節要素は論文のタスクで対象となるものとは異なっています。いくつかの詳細に研究されたモデル生物がゲノムのコレクションに含まれるように選ばれており、合計1740億ヌクレオチド、つまり約290億トークンを表しています。このデータは、HuggingFaceのデータセットとしてこちらで公開されています。
学習手順
前処理
DNA配列は、Nucleotide Transformer Tokenizerを使用してトークン化されます。このトークナイザーは、可能な場合はシーケンスを6マーのトークンとしてトークン化し、そうでない場合は各ヌクレオチドを個別にトークン化します。詳細は、関連するリポジトリのTokenizationセクションを参照してください。このトークナイザーの語彙サイズは4105です。モデルの入力は以下の形式になります。
<CLS> <ACGTGT> <ACGTGC> <ACGGAC> <GACTAG> <TCAGCA>
トークン化されたシーケンスの最大長は1,000です。
使用されるマスキング手順は、Bertスタイルの学習における標準的なものです。
- トークンの15%がマスクされます。
- 80%のケースで、マスクされたトークンは
[MASK]
に置き換えられます。
- 10%のケースで、マスクされたトークンは、置き換えるトークンとは異なるランダムなトークンに置き換えられます。
- 残りの10%のケースでは、マスクされたトークンはそのまま残されます。
事前学習
このモデルは、8台のA100 80GBを使用して9000億トークンで学習され、有効バッチサイズは100万トークンです。使用されたシーケンス長は1000トークンです。Adamオプティマイザー[38]が学習率スケジュールとともに使用され、指数減衰率とイプシロン定数の標準値、β1 = 0.9、β2 = 0.999、ε=1e-8が使用されました。最初のウォームアップ期間中、学習率は16kステップで5e-5から1e-4まで線形に増加し、その後平方根減衰に従って学習終了まで減少しました。
アーキテクチャ
このモデルはヌクレオチドトランスフォーマーの第2世代に属しており、アーキテクチャの変更点は、学習型の位置埋め込みではなく回転位置埋め込みを使用すること、およびゲート付き線形ユニットの導入です。
BibTeXエントリと引用情報
@article{dalla2023nucleotide,
title={The Nucleotide Transformer: Building and Evaluating Robust Foundation Models for Human Genomics},
author={Dalla-Torre, Hugo and Gonzalez, Liam and Mendoza Revilla, Javier and Lopez Carranza, Nicolas and Henryk Grywaczewski, Adam and Oteri, Francesco and Dallago, Christian and Trop, Evan and Sirelkhatim, Hassan and Richard, Guillaume and others},
journal={bioRxiv},
pages={2023--01},
year={2023},
publisher={Cold Spring Harbor Laboratory}
}
📄 ライセンス
本プロジェクトはCC BY-NC-SA 4.0ライセンスの下で公開されています。