模型概述
模型特點
模型能力
使用案例
🚀 核苷酸變換器-25億參數多物種模型
核苷酸變換器是一組基於全基因組DNA序列進行預訓練的基礎語言模型。與其他方法相比,我們的模型不僅整合了單一參考基因組的信息,還利用了來自3200多個不同人類基因組的DNA序列,以及來自包括模式生物和非模式生物在內的850個不同物種的基因組信息。通過大量且全面的評估,我們發現與現有方法相比,這些大模型在分子表型預測方面具有極高的準確性。
本系列模型中的核苷酸變換器-25億參數多物種模型,是一個具有25億參數的變換器模型,它在來自廣泛物種(包括模式生物和非模式生物)的850個基因組上進行了預訓練。該模型同時提供了Tensorflow和Pytorch版本。
開發者: InstaDeep、NVIDIA和慕尼黑工業大學(TUM)
模型資源
- 代碼倉庫: 核苷酸變換器
- 論文: 《核苷酸變換器:構建和評估用於人類基因組學的穩健基礎模型》
🚀 快速開始
在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-multi-species")
model = AutoModelForMaskedLM.from_pretrained("InstaDeepAI/nucleotide-transformer-2.5b-multi-species")
# 選擇輸入序列填充的長度。默認情況下,選擇模型的最大長度,但可以根據需要減小,因為獲取嵌入向量所需的時間會隨著長度的增加而顯著增加。
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}")
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}")
📦 安裝指南
在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-multi-species")
model = AutoModelForMaskedLM.from_pretrained("InstaDeepAI/nucleotide-transformer-2.5b-multi-species")
# 選擇輸入序列填充的長度。默認情況下,選擇模型的最大長度,但可以根據需要減小,因為獲取嵌入向量所需的時間會隨著長度的增加而顯著增加。
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}")
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億參數多物種模型在從美國國立醫學圖書館國家生物技術信息中心(NCBI)下載的總共850個基因組上進行了預訓練。這些基因組中不包括植物和病毒,因為它們的調控元件與論文任務中關注的調控元件不同。一些經過深入研究的模式生物被選入基因組集合,該集合總共包含1740億個核苷酸,即約290億個令牌。這些數據已作為HuggingFace數據集發佈,點擊查看。
訓練過程
預處理
使用核苷酸變換器分詞器對DNA序列進行分詞。該分詞器會盡可能將序列分詞為6聚體,否則會按照相關代碼倉庫分詞部分所述,將每個核苷酸單獨分詞。該分詞器的詞彙表大小為4105。模型的輸入形式如下:
<CLS> <ACGTGT> <ACGTGC> <ACGGAC> <GACTAG> <TCAGCA>
分詞後的序列最大長度為1000。
使用的掩碼過程是Bert式訓練的標準過程:
- 15%的令牌被掩碼。
- 80%的情況下,被掩碼的令牌被替換為
[MASK]
。 - 10%的情況下,被掩碼的令牌被替換為一個與原令牌不同的隨機令牌。
- 剩下10%的情況下,被掩碼的令牌保持不變。
預訓練
該模型在3000億個令牌上使用128個80GB的A100 GPU進行訓練,有效批量大小為100萬個令牌。使用的序列長度為1000個令牌。採用Adam優化器[38],並使用學習率調度,指數衰減率和epsilon常數採用標準值,β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許可證。
模型信息
屬性 | 詳情 |
---|---|
模型類型 | 核苷酸變換器-25億參數多物種模型 |
訓練數據 | 從NCBI下載的850個基因組,不包含植物和病毒,數據已作為HuggingFace數據集發佈 |







