🚀 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}
}