Nucleotide Transformer 2.5b 1000g
モデル概要
モデル特徴
モデル能力
使用事例
🚀 nucleotide-transformer-2.5b-1000g モデル
Nucleotide Transformersは、全ゲノムからのDNA配列で事前学習された基礎言語モデルのコレクションです。他のアプローチと比較して、当社のモデルは単一の参照ゲノムからの情報のみを統合するのではなく、3,200以上の多様なヒトゲノムと、モデル生物や非モデル生物を含む幅広い種の850のゲノムからのDNA配列を活用しています。堅牢かつ広範な評価を通じて、これらの大規模モデルが既存の方法と比較して非常に正確な分子表現型予測を提供することを示しています。
このコレクションの一部であるnucleotide-transformer-2.5b-1000gは、3202の遺伝的に多様なヒトゲノムのコレクションで事前学習された25億パラメータのTransformerです。このモデルは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-2.5b-1000g")
model = AutoModelForMaskedLM.from_pretrained("InstaDeepAI/nucleotide-transformer-2.5b-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}")
✨ 主な機能
- 全ゲノムからのDNA配列を用いて事前学習された基礎言語モデル。
- 3200以上の多様なヒトゲノムと850の他種ゲノムのDNA配列を活用。
- TensorflowとPytorchの両方で利用可能。
📦 インストール
次のリリースまでは、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-2.5b-1000g")
model = AutoModelForMaskedLM.from_pretrained("InstaDeepAI/nucleotide-transformer-2.5b-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-2.5b-1000gモデルは、1000Gプロジェクトから取得した、アフリカ系、アメリカ系、東アジア系、ヨーロッパ系の27の地理的に構造化された集団に由来する3202の遺伝的に多様なヒトゲノムで事前学習されました。この多様性により、データセットはヒトの遺伝的変異をより良く表現することができました。モデルに入力されるシーケンスのハプロタイプ再構築を可能にするために、1000Gゲノムプロジェクトのフェージングされたバージョンを考慮しました。これは合計1億2500万の変異に相当し、そのうち1億1100万と1400万が一塩基多型(SNP)と挿入欠失です。データセットのヌクレオチドの総数は192120億ヌクレオチドで、およそ32020億トークンに相当します。
トレーニング手順
前処理
DNAシーケンスは、Nucleotide Transformer Tokenizerを使用してトークン化されます。このトークン化器は、可能な場合はシーケンスを6マーのトークンとしてトークン化し、それ以外の場合は各ヌクレオチドを個別にトークン化します。詳細は関連するリポジトリのTokenizationセクションを参照してください。このトークン化器の語彙サイズは4105です。モデルの入力は次の形式になります。
<CLS> <ACGTGT> <ACGTGC> <ACGGAC> <GACTAG> <TCAGCA>
トークン化されたシーケンスの最大長は1000です。
使用されるマスキング手順は、Bertスタイルのトレーニングの標準的なものです。
- トークンの15%がマスクされます。
- 80%の場合、マスクされたトークンは
[MASK]
に置き換えられます。 - 10%の場合、マスクされたトークンは、置き換えるトークンとは異なるランダムなトークンに置き換えられます。
- 残りの10%の場合、マスクされたトークンはそのまま残されます。
事前学習
このモデルは、128台の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ライセンスの下で提供されています。







