🚀 核苷酸變換器-v2-50m-多物種模型
核苷酸變換器是一系列基礎語言模型,它們在全基因組的DNA序列上進行了預訓練。與其他方法相比,我們的模型不僅整合了單一參考基因組的信息,還利用了來自3200多個不同人類基因組以及850個來自廣泛物種(包括模式生物和非模式生物)的基因組的DNA序列。通過大量且嚴謹的評估,我們發現這些大模型在分子表型預測方面比現有方法更加準確。
該系列模型中的 nucleotide-transformer-v2-50m-3mer-multi-species 是一個具有5000萬參數的變換器模型,它在包含850個來自廣泛物種(包括模式生物和非模式生物)的基因組集合上進行了預訓練。
此模型是評估基因組語言模型對蛋白質預測能力研究的一部分。在這項工作中,考慮使用3元分詞作為一種潛在的架構改進,以提高對下游蛋白質的細粒度預測能力。
開發者: InstaDeep
✨ 主要特性
- 多基因組整合:模型整合了來自3200多個不同人類基因組以及850個來自廣泛物種的基因組的DNA序列信息,而非僅依賴單一參考基因組。
- 高精度預測:通過大量嚴謹評估,在分子表型預測方面比現有方法更加準確。
- 架構改進探索:考慮使用3元分詞作為潛在架構改進,以提高下游蛋白質的細粒度預測能力。
📦 安裝指南
在模型下一次發佈之前,需要從源代碼安裝 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-v2-50m-3mer-multi-species", trust_remote_code=True)
model = AutoModelForMaskedLM.from_pretrained("InstaDeepAI/nucleotide-transformer-v2-50m-3mer-multi-species", trust_remote_code=True)
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: {embeddings.shape}")
print(f"Embeddings per token: {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: {mean_sequence_embeddings}")
📚 詳細文檔
模型來源
訓練數據
nucleotide-transformer-v2-50m-3mer-multi-species 模型在從 NCBI 下載的總共850個基因組上進行了預訓練。這些基因組不包括植物和病毒,因為它們的調控元件與論文任務中的研究對象不同。一些經過深入研究的模式生物被選入基因組集合,這些基因組總共包含1740億個核苷酸,約290億個標記。數據已作為HuggingFace數據集發佈 在此。
訓練過程
預處理
DNA序列使用核苷酸變換器分詞器進行分詞。該分詞器儘可能將序列分詞為6元標記,否則將每個核苷酸單獨分詞,具體方法見關聯倉庫的 分詞 部分。該分詞器的詞彙表大小為4105。模型的輸入格式如下:
<CLS> <ACGTGT> <ACGTGC> <ACGGAC> <GACTAG> <TCAGCA>
分詞後的序列最大長度為1000。
使用的掩碼策略是Bert式訓練的標準策略:
- 15%的標記被掩碼。
- 80%的情況下,被掩碼的標記被替換為
[MASK]
。
- 10%的情況下,被掩碼的標記被替換為一個隨機標記(與原標記不同)。
- 10%的情況下,被掩碼的標記保持不變。
預訓練
模型在64個TPUv4上對3000億個標記進行訓練,有效批量大小為100萬個標記。使用的序列長度為1000個標記。採用Adam優化器 [38] 並使用學習率調度,指數衰減率和epsilon常數採用標準值,β1 = 0.9,β2 = 0.999,ε=1e-8。在第一個熱身階段,學習率在16000步內從5e-5線性增加到1e-4,然後在訓練結束前按照平方根衰減。
架構
該模型屬於第二代核苷酸變換器,架構上的改進包括使用旋轉位置嵌入代替學習位置嵌入,並引入了門控線性單元。
引用信息
@article{boshar2024glmsforproteins,
title={Are Genomic Language Models All You Need? Exploring Genomic Language Models on Protein Downstream Tasks},
author={Boshar, Sam and Trop, Evan and de Almeida, Bernardo and Copoiu, Liviu and Pierrot, Thomas},
journal={bioRxiv},
pages={2024--01},
year={2024},
publisher={Cold Spring Harbor Laboratory}
}
📄 許可證
本模型採用CC BY-NC-SA 4.0許可證。