🚀 HyenaDNA
HyenaDNA是一個長距離基因組基礎模型,它在單核苷酸分辨率下,以高達100萬個標記的上下文長度進行了預訓練。該模型可以解決基因組序列建模中的長距離依賴問題,為基因組學研究提供了強大的工具。
🚀 快速開始
資源鏈接
HuggingFace模型鏈接
我們已上傳了所有預訓練的HyenaDNA檢查點的集合。你會看到不同大小和序列長度的模型。在LongSafari組織中還有每個模型的原始僅權重版本,這些版本設計為使用原始的GitHub倉庫加載。這些模型的輸出與上述集合中的模型相同,只是接口不同。
模型GPU要求
請參考GPU要求部分了解每個模型的建議硬件配置。
✨ 主要特性
- 長距離建模能力:能夠處理高達100萬個標記的上下文長度,遠超以往的基因組Transformer模型。
- 單核苷酸分辨率:使用單字符分詞器,實現單核苷酸分辨率的建模。
- 全局感受野:隱式長卷積使每一層都具有全局感受野。
- 優異的下游任務表現:在23個下游任務中達到了新的最優水平,包括預測調控元件、染色質圖譜和物種分類等。
📦 安裝指南
文檔未提及具體安裝步驟,暫不提供。
💻 使用示例
基礎用法
在這個簡短的代碼示例中,我們展示瞭如何在序列分類任務上微調HyenaDNA。此示例使用medium
檢查點,最大序列長度為160k個核苷酸。請注意,如果你使用的序列長度超過所選檢查點支持的最大長度,訓練將會失敗。
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要求(建議)
以下是我們認為每個模型可以使用的硬件(首選最低配置)建議。
模型與訓練概述
HyenaDNA使用了一個簡單的Hyena算子棧,這是一種次二次複雜度的算子,可替代Transformer中的注意力機制。Hyena算子通過使用修改後的輸入投影、隱式卷積和門控(均為次二次操作),在語言建模中達到了與注意力機制相當的效果。
這使得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
🔧 技術細節
- Hyena算子:一種次二次複雜度的算子,替代Transformer中的注意力機制,通過修改輸入投影、隱式卷積和門控實現高效建模。
- 單字符分詞器:實現單核苷酸分辨率的關鍵,使模型能夠對單個核苷酸進行建模。
- 隱式長卷積:賦予模型全局感受野,增強長距離建模能力。
- 預訓練任務:使用下一個核苷酸預測任務在人類參考基因組上進行預訓練。
📄 許可證
本項目採用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}
}