🚀 核苷酸变换器-25亿参数-1000基因组模型
核苷酸变换器是一组基于全基因组DNA序列进行预训练的基础语言模型。与其他方法相比,我们的模型不仅整合了单一参考基因组的信息,还利用了来自3200多个不同人类基因组以及850个来自广泛物种(包括模式生物和非模式生物)的基因组的DNA序列。通过强大而广泛的评估,我们发现与现有方法相比,这些大型模型在分子表型预测方面具有极高的准确性。
该模型集合中的 核苷酸变换器-25亿参数-1000基因组 是一个具有25亿参数的变换器模型,它在3202个具有遗传多样性的人类基因组集合上进行了预训练。该模型同时提供了Tensorflow和Pytorch版本。
开发者: InstaDeep、NVIDIA和慕尼黑工业大学(TUM)
模型来源
🚀 快速开始
在其下一次发布之前,若要使用该模型,需要通过以下命令从源代码安装transformers
库:
pip install --upgrade git+https://github.com/huggingface/transformers.git
✨ 主要特性
- 基于Transformer架构,在3202个具有遗传多样性的人类基因组上预训练,能更好地捕捉人类基因变异信息。
- 同时支持Tensorflow和Pytorch框架,方便不同用户使用。
- 与现有方法相比,在分子表型预测方面具有极高的准确性。
📦 安装指南
在其下一次发布之前,若要使用该模型,需要通过以下命令从源代码安装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-2.5b-1000g")
model = AutoModelForMaskedLM.from_pretrained("InstaDeepAI/nucleotide-transformer-2.5b-1000g")
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}")
📚 详细文档
训练数据
核苷酸变换器-25亿参数-1000基因组 模型在3202个具有遗传多样性的人类基因组上进行了预训练,这些基因组来自27个地理结构明确的群体,涵盖非洲、美洲、东亚和欧洲血统,数据来源于 1000基因组计划。这种多样性使得数据集能够更好地编码人类遗传变异信息。为了在输入模型的序列中进行单倍型重建,我们使用了1000基因组计划的分相版本,该版本总共包含1.25亿个突变,其中1.11亿个和1400万个分别是单核苷酸多态性(SNPs)和插入缺失(indels)。数据集中核苷酸的总数为192120亿个,大约产生32020亿个标记。
训练过程
预处理
DNA序列使用核苷酸变换器分词器进行分词。该分词器在可能的情况下将序列分词为6聚体标记,否则将每个核苷酸单独分词,具体细节可参考相关仓库的 分词 部分。该分词器的词汇表大小为4105。模型的输入形式如下:
<CLS> <ACGTGT> <ACGTGC> <ACGGAC> <GACTAG> <TCAGCA>
分词后的序列最大长度为1000。
使用的掩码过程是Bert风格训练的标准过程:
- 15%的标记被掩码。
- 在80%的情况下,被掩码的标记被替换为
[MASK]
。
- 在10%的情况下,被掩码的标记被替换为一个与原标记不同的随机标记。
- 在剩下的10%的情况下,被掩码的标记保持不变。
预训练
该模型在128个A100 80GB GPU上对3000亿个标记进行训练,有效批量大小为100万个标记。使用的序列长度为1000个标记。训练使用Adam优化器,采用学习率调度策略,指数衰减率和epsilon常数的标准值分别为β1 = 0.9,β2 = 0.999和ε=1e-8。在第一个热身阶段,学习率在16000步内从5e-5线性增加到1e-4,然后按照平方根衰减策略下降,直到训练结束。
🔧 技术细节
- 模型类型:基于Transformer架构的语言模型
- 训练数据:3202个具有遗传多样性的人类基因组,来自27个地理结构明确的群体,涵盖非洲、美洲、东亚和欧洲血统,数据来源于 1000基因组计划
属性 |
详情 |
模型类型 |
基于Transformer架构的语言模型 |
训练数据 |
3202个具有遗传多样性的人类基因组,来自27个地理结构明确的群体,涵盖非洲、美洲、东亚和欧洲血统,数据来源于 1000基因组计划 |
📄 许可证
本项目采用CC BY-NC-SA 4.0许可证。
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}
}