Nucleotide Transformer 500m 1000g
モデル概要
モデル特徴
モデル能力
使用事例
🚀 nucleotide-transformer-500m-1000gモデル
Nucleotide Transformersは、全ゲノムのDNA配列で事前学習された基礎言語モデルのコレクションです。他のアプローチと比較して、当社のモデルは単一の参照ゲノムからの情報のみを統合するのではなく、3,200以上の多様なヒトゲノムと、モデル生物や非モデル生物を含む幅広い種の850のゲノムからのDNA配列を活用しています。堅牢かつ広範な評価を通じて、これらの大規模モデルが既存の方法と比較して非常に正確な分子表現型予測を提供することを示しています。
このコレクションの一部であるnucleotide-transformer-500m-1000gは、3202の遺伝的に多様なヒトゲノムのコレクションで事前学習された5億パラメータのトランスフォーマーです。このモデルはTensorflowとPytorchの両方で利用可能です。
開発者: InstaDeep、NVIDIA、TUM
モデルのソース
- リポジトリ: Nucleotide Transformer
- 論文: The Nucleotide Transformer: Building and Evaluating Robust Foundation Models for Human Genomics
🚀 クイックスタート
次のリリースまでは、モデルを使用するために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-500m-1000g")
model = AutoModelForMaskedLM.from_pretrained("InstaDeepAI/nucleotide-transformer-500m-1000g")
# 入力シーケンスをパディングする長さを選択します。デフォルトでは、
# モデルの最大長が選択されますが、埋め込みを取得するのにかかる時間が大幅に増えるため、自由に減らしてください。
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: {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-500m-1000g")
model = AutoModelForMaskedLM.from_pretrained("InstaDeepAI/nucleotide-transformer-500m-1000g")
# 入力シーケンスをパディングする長さを選択します。デフォルトでは、
# モデルの最大長が選択されますが、埋め込みを取得するのにかかる時間が大幅に増えるため、自由に減らしてください。
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: {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-500m-1000gモデルは、1000Gプロジェクトから取得した、アフリカ系、アメリカ系、東アジア系、ヨーロッパ系の27の地理的に構造化された集団に由来する3202の遺伝的に多様なヒトゲノムで事前学習されました。このような多様性により、データセットはヒトの遺伝的変異をより良く表現することができました。モデルに入力されるシーケンスでハプロタイプを再構築できるように、1000Gゲノムプロジェクトのフェーズ化されたバージョンを考慮しました。これは合計1億2500万の変異に相当し、そのうち1億1100万と1400万が一塩基多型(SNP)と挿入欠失です。データセット内のヌクレオチドの総数は192120億ヌクレオチドで、およそ3202億トークンになります。
学習手順
前処理
DNAシーケンスは、Nucleotide Transformer Tokenizerを使用してトークン化されます。このトークナイザーは、可能な場合はシーケンスを6量体トークナイザーとしてトークン化し、それ以外の場合は各ヌクレオチドを個別にトークン化します。詳細は関連するリポジトリのTokenizationセクションに記載されています。このトークナイザーの語彙サイズは4105です。モデルの入力は以下の形式になります。
<CLS> <ACGTGT> <ACGTGC> <ACGGAC> <GACTAG> <TCAGCA>
トークン化されたシーケンスの最大長は1000です。
使用されるマスキング手順は、Bertスタイルの学習に標準的なものです。
- 15%のトークンがマスクされます。
- 80%のケースで、マスクされたトークンは
[MASK]
に置き換えられます。 - 10%のケースで、マスクされたトークンは置き換えるトークンとは異なるランダムなトークンに置き換えられます。
- 残りの10%のケースでは、マスクされたトークンはそのまま残されます。
事前学習
このモデルは、8台のA100 80GBで3000億トークンを使用して学習され、有効なバッチサイズは100万トークンでした。使用されたシーケンス長は1000トークンでした。Adamオプティマイザー[38]が学習率スケジュールとともに使用され、指数減衰率とイプシロン定数の標準値であるβ1 = 0.9、β2 = 0.999、ε = 1e-8が使用されました。最初のウォームアップ期間中、学習率は16000ステップにわたって5e-5から1e-4まで線形に増加し、その後平方根減衰に従って学習が終了するまで減少しました。
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ライセンスの下で提供されています。
情報一覧
属性 | 詳情 |
---|---|
モデルタイプ | Nucleotide Transformer |
学習データ | 3202の遺伝的に多様なヒトゲノムと850の他種ゲノム |







