🚀 HyenaDNA
こんにちは!HyenaDNAは、最大100万トークンのコンテキスト長で、単一ヌクレオチド分解能で事前学習された長距離ゲノム基礎モデルです。
以下でモデルとトレーニングの概要をご覧いただけます。さらに、これらのリソースもチェックしてみてください。
リソース:
すべてのHuggingFaceモデルへのリンク:
すべての事前学習済みHyenaDNAチェックポイントのコレクションをアップロードしました。
異なるサイズとシーケンス長のモデルがあります。また、LongSafari組織には、各モデルの元の重みのみのバージョンもあり、元のGitHubリポジトリで読み込むように設計されています。これらのモデルは、上記のコレクション内のモデルと出力が同じで、インターフェースが異なるだけです。
各モデルのGPU要件を参照してください。
🚀 クイックスタート
HyenaDNAの使用方法
この簡単なコードサンプルでは、シーケンス分類タスクでHyenaDNAをファインチューニングする方法を示します。このサンプルでは、最大シーケンス長が16万ヌクレオチドのmedium
チェックポイントを使用しています。選択したチェックポイントでサポートされる最大長より長いシーケンス長を使用すると、トレーニングは失敗します。
テストでは、Colab T4 GPU(16GB VRAM)で最大約25万ヌクレオチドのシーケンス長でトレーニングすることができました。より長いシーケンス長では、より多くのメモリが必要になります。
from transformers import AutoModelForSequenceClassification, AutoTokenizer
from transformers import TrainingArguments, Trainer, logging
import torch
checkpoint = 'LongSafari/hyenadna-medium-160k-seqlen-hf'
max_length = 160_000
tokenizer = AutoTokenizer.from_pretrained(checkpoint, trust_remote_code=True)
model = AutoModelForSequenceClassification.from_pretrained(checkpoint, torch_dtype=torch.bfloat16, device_map="auto", trust_remote_code=True)
sequence = 'ACTG' * int(max_length/4)
sequence = [sequence] * 8
tokenized = tokenizer(sequence)["input_ids"]
labels = [0, 1] * 4
ds = Dataset.from_dict({"input_ids": tokenized, "labels": labels})
ds.set_format("pt")
args = {
"output_dir": "tmp",
"num_train_epochs": 1,
"per_device_train_batch_size": 1,
"gradient_accumulation_steps": 4,
"gradient_checkpointing": True,
"learning_rate": 2e-5,
}
training_args = TrainingArguments(**args)
trainer = Trainer(model=model, args=training_args, train_dataset=ds)
result = trainer.train()
print(result)
これらのノートブックも役立つかもしれません。これらはHyenaDNAに特化したものではありませんが、DNAとシーケンス分類モデルのトレーニングの追加の例が含まれています。
GPU要件(推奨)
各モデルに使用できるハードウェア(推奨最小値)に関する提案を以下に示します。
事前学習、ファインチューニング、推論時のGPU
- tiny-1k: (T4, T4, T4)
- small-32k: (A100-40GB, T4, T4)
- medium-160k: (A100-40GB, T4, T4)
- medium-450k: (A100-40GB, A100-40GB, T4)
- large-1m: (A100-80GB, A100-80GB, A100-40GB)
📚 ドキュメント
モデルとトレーニングの概要
HyenaDNAは、Hyena演算子の単純なスタックを使用しています。これは、Transformersのアテンションを2次未満で置き換えるものです。Hyena演算子は、修正された入力投影、暗黙的な畳み込み、ゲーティングなど、すべて2次未満の演算を使用することで、言語モデリングの品質を一致させることができます。
これにより、HyenaDNAは、密なアテンションを使用する従来のゲノムTransformerモデルよりも最大500倍長いコンテキスト長に到達でき、シーケンス長100万で(Flash Attentionと比較して)160倍高速にトレーニングできます。
4つのヌクレオチド(および特殊トークン)を主要な語彙とする単一文字トークナイザーを使用しているため、ゲノム基礎モデルにおいて初めて単一ヌクレオチド分解能を実現しています。さらに、暗黙的な長畳み込みにより、各レイヤーでグローバルな受容野が可能になります。
ヒト参照ゲノム(HG38)を使用して、次のトークン(ヌクレオチド)予測で事前学習を行っています。
HyenaDNAは、調節エレメントの予測、クロマチンプロファイル、種分類など、23の下流タスクで新しい最先端技術を達成しています。また、ゲノミクスにおける長いコンテキストによって開かれる新しい機能についても探索しており、ソフトプロンプト調整可能トークンを使用したインコンテキスト学習と命令ファインチューニングの最初の使用も含まれています。
HyenaDNAの詳細については、ブログをチェックしてください!
著者
Eric Nguyen*, Michael Poli*, Marjan Faizi*, Armin Thomas, Callum Birch-Sykes, Michael Wornow, Aman Patel, Clayton Rabideau, Stefano Massaroli, Yoshua Bengio, Stefano Ermon, Stephen Baccus, Chris Re.
連絡先
Eric Nguyen, etnguyen@stanford.edu
Michael Poli, poli@stanford.edu
Marjan Faizi, Marjan_Faizi@hms.harvard.edu
📄 ライセンス
このプロジェクトは、BSD 3条項ライセンスの下で公開されています。
引用
ぜひ引用してください :)
@article{nguyen2023hyenadna,
title={HyenaDNA: Long-Range Genomic Sequence Modeling at Single Nucleotide Resolution},
author={Eric Nguyen and Michael Poli and Marjan Faizi and Armin Thomas and Callum Birch-Sykes and Michael Wornow and Aman Patel and Clayton Rabideau and Stefano Massaroli and Yoshua Bengio and Stefano Ermon and Stephen A. Baccus and Chris Ré},
year={2023},
eprint={2306.15794},
archivePrefix={arXiv},
primaryClass={cs.LG}
}