モデル概要
モデル特徴
モデル能力
使用事例
🚀 ヌクレオチドトランスフォーマー v2 - 50m 多種モデル
ヌクレオチドトランスフォーマーは、全ゲノムDNA配列を用いて事前学習された一連の基礎言語モデルです。他の方法と比較して、当モデルは単一の参照ゲノムの情報だけでなく、3200以上の異なるヒトゲノムと、広範な種(モデル生物や非モデル生物を含む)からの850のゲノムのDNA配列も活用しています。包括的かつ詳細な評価により、これらの大規模モデルは分子表現型予測において既存の方法よりも高精度であることがわかりました。
このモデルセットの中の ヌクレオチドトランスフォーマー v2 - 50m 多種モデル は、5000万個のパラメータを持つトランスフォーマーで、広範な種(モデル生物や非モデル生物を含む)からの850のゲノム集合で事前学習されています。
開発者: 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-50m-multi-species", trust_remote_code=True)
model = AutoModelForMaskedLM.from_pretrained("InstaDeepAI/nucleotide-transformer-v2-50m-multi-species", trust_remote_code=True)
# 入力シーケンスのパディング長を選択します。デフォルトでは、モデルの最大長が選択されますが、埋め込みベクトルを取得するのに必要な時間が長さに応じて大幅に増加するため、必要に応じて短くすることができます。
max_length = tokenizer.model_max_length
# 仮想的なDNAシーケンスを作成し、トークン化します。
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}")
print(f"各トークンの埋め込みベクトル: {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}")
✨ 主な機能
- 多ゲノム統合:単一の参照ゲノムの情報だけでなく、3200以上の異なるヒトゲノムと、広範な種からの850のゲノムのDNA配列も活用しています。
- 高精度予測:包括的な評価により、分子表現型予測において既存の方法よりも高精度であることがわかりました。
📦 インストール
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-multi-species", trust_remote_code=True)
model = AutoModelForMaskedLM.from_pretrained("InstaDeepAI/nucleotide-transformer-v2-50m-multi-species", trust_remote_code=True)
# 入力シーケンスのパディング長を選択します。デフォルトでは、モデルの最大長が選択されますが、埋め込みベクトルを取得するのに必要な時間が長さに応じて大幅に増加するため、必要に応じて短くすることができます。
max_length = tokenizer.model_max_length
# 仮想的なDNAシーケンスを作成し、トークン化します。
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}")
print(f"各トークンの埋め込みベクトル: {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}")
📚 ドキュメント
学習データ
ヌクレオチドトランスフォーマー v2 - 50m 多種モデル は、NCBI からダウンロードした合計850のゲノムで事前学習されています。これらのゲノムには植物やウイルスは含まれていません。これは、それらの調節要素が論文のタスクの目標と異なるためです。いくつかの詳細に研究されたモデル生物がゲノム集合に選ばれ、この集合には合計1740億個のヌクレオチド、つまり約290億個のトークンが含まれています。これらのデータはHuggingFaceデータセットとして こちら で公開されています。
学習プロセス
前処理
DNAシーケンスはヌクレオチドトランスフォーマーのトークナイザーを使用してトークン化されます。このトークナイザーは、可能な限りシーケンスを6量体トークンにトークン化し、そうでない場合は各ヌクレオチドを個別にトークン化します。詳細は関連リポジトリの トークン化 の部分を参照してください。このトークナイザーの語彙サイズは4105です。モデルの入力形式は次の通りです:
<CLS> <ACGTGT> <ACGTGC> <ACGGAC> <GACTAG> <TCAGCA>
トークン化されたシーケンスの最大長は1000です。
使用されるマスクプロセスは、Bertスタイルの学習の標準的な方法です:
- 15%のトークンがマスクされます。
- 80%の場合、マスクされたトークンは
[MASK]
で置き換えられます。 - 10%の場合、マスクされたトークンは、置き換えられるトークンと異なるランダムなトークンで置き換えられます。
- 残りの10%の場合、マスクされたトークンはそのまま保持されます。
事前学習
このモデルは、8つの80GBのA100 GPUを使用して、3000億個のトークンで学習され、有効なバッチサイズは100万個のトークンです。使用されるシーケンスの長さは1000個のトークンです。Adamオプティマイザー [38] を使用し、学習率スケジューリングを行います。指数減衰率とε定数の標準値は、β1 = 0.9、β2 = 0.999、ε = 1e-8です。最初のウォームアップフェーズでは、学習率は16000ステップで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}
}
📄 ライセンス
本プロジェクトは、クリエイティブ・コモンズ 表示 - 非営利 - 継承 4.0 国際ライセンス(CC BY - NC - SA 4.0)の下で提供されています。
属性 | 詳細 |
---|---|
モデルタイプ | ヌクレオチドトランスフォーマー v2 - 50m 多種モデル、トランスフォーマーアーキテクチャに基づく事前学習言語モデル |
学習データ | NCBIからダウンロードした850のゲノム、植物やウイルスを含まず、1740億個のヌクレオチド(約290億個のトークン)を含む |







