🚀 核苷酸變換器-25億參數-1000基因組模型
核苷酸變換器是一組基於全基因組DNA序列進行預訓練的基礎語言模型。與其他方法相比,我們的模型不僅整合了單一參考基因組的信息,還利用了來自3200多個不同人類基因組以及850個來自廣泛物種(包括模式生物和非模式生物)的基因組的DNA序列。通過強大而廣泛的評估,我們發現與現有方法相比,這些大型模型在分子表型預測方面具有極高的準確性。
該模型集合中的 核苷酸變換器-25億參數-1000基因組 是一個具有25億參數的變換器模型,它在3202個具有遺傳多樣性的人類基因組集合上進行了預訓練。該模型同時提供了Tensorflow和Pytorch版本。
開發者: InstaDeep、NVIDIA和慕尼黑工業大學(TUM)
模型來源
🚀 快速開始
在其下一次發佈之前,若要使用該模型,需要通過以下命令從源代碼安裝transformers
庫:
pip install --upgrade git+https://github.com/huggingface/transformers.git
✨ 主要特性
- 基於Transformer架構,在3202個具有遺傳多樣性的人類基因組上預訓練,能更好地捕捉人類基因變異信息。
- 同時支持Tensorflow和Pytorch框架,方便不同用戶使用。
- 與現有方法相比,在分子表型預測方面具有極高的準確性。
📦 安裝指南
在其下一次發佈之前,若要使用該模型,需要通過以下命令從源代碼安裝transformers
庫:
pip install --upgrade git+https://github.com/huggingface/transformers.git
💻 使用示例
基礎用法
以下是一個小代碼片段,用於從一個虛擬DNA序列中獲取對數幾率(logits)和嵌入向量(embeddings):
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
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}")
print(f"每個標記的嵌入向量: {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}")
📚 詳細文檔
訓練數據
核苷酸變換器-25億參數-1000基因組 模型在3202個具有遺傳多樣性的人類基因組上進行了預訓練,這些基因組來自27個地理結構明確的群體,涵蓋非洲、美洲、東亞和歐洲血統,數據來源於 1000基因組計劃。這種多樣性使得數據集能夠更好地編碼人類遺傳變異信息。為了在輸入模型的序列中進行單倍型重建,我們使用了1000基因組計劃的分相版本,該版本總共包含1.25億個突變,其中1.11億個和1400萬個分別是單核苷酸多態性(SNPs)和插入缺失(indels)。數據集中核苷酸的總數為192120億個,大約產生32020億個標記。
訓練過程
預處理
DNA序列使用核苷酸變換器分詞器進行分詞。該分詞器在可能的情況下將序列分詞為6聚體標記,否則將每個核苷酸單獨分詞,具體細節可參考相關倉庫的 分詞 部分。該分詞器的詞彙表大小為4105。模型的輸入形式如下:
<CLS> <ACGTGT> <ACGTGC> <ACGGAC> <GACTAG> <TCAGCA>
分詞後的序列最大長度為1000。
使用的掩碼過程是Bert風格訓練的標準過程:
- 15%的標記被掩碼。
- 在80%的情況下,被掩碼的標記被替換為
[MASK]
。
- 在10%的情況下,被掩碼的標記被替換為一個與原標記不同的隨機標記。
- 在剩下的10%的情況下,被掩碼的標記保持不變。
預訓練
該模型在128個A100 80GB GPU上對3000億個標記進行訓練,有效批量大小為100萬個標記。使用的序列長度為1000個標記。訓練使用Adam優化器,採用學習率調度策略,指數衰減率和epsilon常數的標準值分別為β1 = 0.9,β2 = 0.999和ε=1e-8。在第一個熱身階段,學習率在16000步內從5e-5線性增加到1e-4,然後按照平方根衰減策略下降,直到訓練結束。
🔧 技術細節
- 模型類型:基於Transformer架構的語言模型
- 訓練數據:3202個具有遺傳多樣性的人類基因組,來自27個地理結構明確的群體,涵蓋非洲、美洲、東亞和歐洲血統,數據來源於 1000基因組計劃
屬性 |
詳情 |
模型類型 |
基於Transformer架構的語言模型 |
訓練數據 |
3202個具有遺傳多樣性的人類基因組,來自27個地理結構明確的群體,涵蓋非洲、美洲、東亞和歐洲血統,數據來源於 1000基因組計劃 |
📄 許可證
本項目採用CC BY-NC-SA 4.0許可證。
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}
}