模型简介
模型特点
模型能力
使用案例
🚀 核苷酸变换器-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数据集发布 |







