模型简介
模型特点
模型能力
使用案例
🚀 核苷酸变换器 v2 - 50m 多物种模型
核苷酸变换器是一组基于全基因组 DNA 序列进行预训练的基础语言模型。与其他方法相比,我们的模型不仅整合了单一参考基因组的信息,还利用了来自 3200 多个不同人类基因组以及 850 个来自广泛物种(包括模式生物和非模式生物)的基因组的 DNA 序列。通过全面而深入的评估,我们发现这些大型模型在分子表型预测方面比现有方法更为准确。
本模型集合中的 核苷酸变换器 v2 - 50m 多物种模型 是一个具有 5000 万个参数的变换器,它在包含 850 个来自广泛物种(包括模式生物和非模式生物)的基因组集合上进行了预训练。
开发者: 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-v2-50m-multi-species", trust_remote_code=True)
model = AutoModelForMaskedLM.from_pretrained("InstaDeepAI/nucleotide-transformer-v2-50m-multi-species", trust_remote_code=True)
# 选择输入序列填充的长度。默认情况下,选择模型的最大长度,但您可以根据需要减小它,因为获取嵌入向量所需的时间会随长度显著增加。
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}")
✨ 主要特性
- 多基因组整合:不仅整合单一参考基因组信息,还利用 3200 多个不同人类基因组和 850 个来自广泛物种的基因组的 DNA 序列。
- 高精度预测:通过全面评估,在分子表型预测方面比现有方法更为准确。
📦 安装指南
在 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-v2-50m-multi-species", trust_remote_code=True)
model = AutoModelForMaskedLM.from_pretrained("InstaDeepAI/nucleotide-transformer-v2-50m-multi-species", trust_remote_code=True)
# 选择输入序列填充的长度。默认情况下,选择模型的最大长度,但您可以根据需要减小它,因为获取嵌入向量所需的时间会随长度显著增加。
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}")
📚 详细文档
训练数据
核苷酸变换器 v2 - 50m 多物种模型 在从 NCBI 下载的总共 850 个基因组上进行了预训练。这些基因组不包括植物和病毒,因为它们的调控元件与论文任务中的目标不同。一些经过深入研究的模式生物被选入基因组集合,该集合总共包含 1740 亿个核苷酸,即大约 290 亿个标记。这些数据已作为 HuggingFace 数据集发布 在此。
训练过程
预处理
DNA 序列使用核苷酸变换器分词器进行分词。该分词器在可能的情况下将序列分词为 6 聚体标记,否则将每个核苷酸单独分词,具体方法见相关仓库的 分词 部分。该分词器的词汇表大小为 4105。模型的输入形式如下:
<CLS> <ACGTGT> <ACGTGC> <ACGGAC> <GACTAG> <TCAGCA>
分词后的序列最大长度为 1000。
使用的掩码过程是 Bert 风格训练的标准方法:
- 15% 的标记被掩码。
- 在 80% 的情况下,被掩码的标记被
[MASK]
替换。 - 在 10% 的情况下,被掩码的标记被一个与它们所替换的标记不同的随机标记替换。
- 在剩下的 10% 的情况下,被掩码的标记保持不变。
预训练
该模型使用 8 个 80GB 的 A100 GPU 在 3000 亿个标记上进行训练,有效批量大小为 100 万个标记。使用的序列长度为 1000 个标记。使用 Adam 优化器 [38] 并采用学习率调度,指数衰减率和 ε 常数的标准值为 β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}
}
📄 许可证
本项目采用知识共享署名 - 非商业性使用 - 相同方式共享 4.0 国际许可协议(CC BY - NC - SA 4.0)。
属性 | 详情 |
---|---|
模型类型 | 核苷酸变换器 v2 - 50m 多物种模型,基于变换器架构的预训练语言模型 |
训练数据 | 从 NCBI 下载的 850 个基因组,不包括植物和病毒,包含 1740 亿个核苷酸(约 290 亿个标记) |







