许可协议: 知识共享署名-非商业性使用-相同方式共享 4.0
微件示例:
- 文本: ACCTGATTCTGAGTC
标签:
- DNA
- 生物学
- 基因组学
数据集:
- InstaDeepAI/multi_species_genomes
- InstaDeepAI/nucleotide_transformer_downstream_tasks
核苷酸Transformer-25亿参数多物种模型
核苷酸Transformer是一系列基于全基因组DNA序列预训练的基础语言模型。与其他方法相比,我们的模型不仅整合了单一参考基因组的信息,还利用了来自3,200多个不同人类基因组以及850种生物(包括模式和非模式生物)的DNA序列。通过全面严格的评估,我们证明这些大型模型相比现有方法能提供极其准确的分子表型预测。
该系列包含nucleotide-transformer-2.5b-multi-species——一个具有25亿参数的Transformer模型,预训练数据涵盖850个物种的基因组,包括模式和非模式生物。模型提供Tensorflow和Pytorch两个版本。
开发团队: InstaDeep、英伟达和慕尼黑工业大学
模型来源
使用方式
在下一版本发布前,需通过以下命令从源码安装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
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}")
训练数据
nucleotide-transformer-2.5b-multi-species模型的预训练数据包含从NCBI下载的850个基因组。由于植物和病毒的调控元件与论文任务关注点不同,这些数据未被包含。精选了大量被深入研究的模式生物基因组,总数据量达1740亿个核苷酸(约290亿个词元)。数据集已发布在HuggingFace平台此处。
训练流程
数据预处理
DNA序列使用核苷酸Transformer分词器进行处理,该分词器优先将序列拆分为6-mer词元(当可能时),否则按单个核苷酸切分(详见代码库分词说明)。该分词器词表大小为4105。模型输入格式如下:
<CLS> <ACGTGT> <ACGTGC> <ACGGAC> <GACTAG> <TCAGCA>
分词后序列最大长度为1000。
采用标准BERT风格掩码策略:
- 15%的词元被掩码
- 其中80%替换为
[MASK]
- 10%替换为随机词元
- 剩余10%保持原状
预训练
模型使用128块80GB显存的A100显卡,在3000亿词元数据上训练,有效批大小为100万词元。序列长度设为1000词元。采用Adam优化器,设置β1=0.9,β2=0.999,ε=1e-8。初始16,000步进行学习率线性预热(从5e-5升至1e-4),随后按平方根衰减直至训练结束。
引用信息
@article{dalla2023nucleotide,
title={核苷酸Transformer:构建与评估人类基因组学鲁棒基础模型},
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 等},
journal={bioRxiv},
pages={2023--01},
year={2023},
publisher={冷泉港实验室}
}