英文

nucleotide-transformer-500m-1000g 模型

核苷酸变换器是一系列以DNA序列为基础进行预训练的基础语言模型。与其他方法相比,我们的模型不仅整合了单个参考基因组的信息,还利用了来自3200多个不同人类基因组的DNA序列,以及850个来自各种物种的基因组,包括模型和非模型生物。通过强大而广泛的评估,我们证明这些大型模型与现有方法相比能够提供极高的分子表型预测准确性。

其中之一是 nucleotide-transformer-500m-1000g 模型,它是一个以3202个遗传多样性人类基因组为训练集的500M参数的transformer模型。该模型提供了Tensorflow和Pytorch两个版本。

开发者:InstaDeep、NVIDIA和TUM

模型来源

如何使用

在下一个发布版本之前,需要使用以下命令从源代码安装 transformers 库以使用这些模型:

pip install --upgrade git+https://github.com/huggingface/transformers.git

下面给出了一个小的代码片段,用于从一个虚拟的DNA序列中检索逻辑和嵌入。

from transformers import AutoTokenizer, AutoModelForMaskedLM
import torch

# Import the tokenizer and the model
tokenizer = AutoTokenizer.from_pretrained("InstaDeepAI/nucleotide-transformer-500m-1000g")
model = AutoModelForMaskedLM.from_pretrained("InstaDeepAI/nucleotide-transformer-500m-1000g")

# Create a dummy dna sequence and tokenize it
sequences = ['ATTCTG' * 9]
tokens_ids = tokenizer.batch_encode_plus(sequences, return_tensors="pt")["input_ids"]

# Compute the embeddings
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
)

# Compute sequences embeddings
embeddings = torch_outs['hidden_states'][-1].detach().numpy()
print(f"Embeddings shape: {embeddings.shape}")
print(f"Embeddings per token: {embeddings}")

# Compute mean embeddings per sequence
mean_sequence_embeddings = torch.sum(attention_mask.unsqueeze(-1)*embeddings, axis=-2)/torch.sum(attention_mask, axis=-1)
print(f"Mean sequence embeddings: {mean_sequence_embeddings}")

训练数据

nucleotide-transformer-500m-1000g 模型是在3202个遗传多样性人类基因组上进行预训练的,这些基因组来自非洲、美洲、东亚和欧洲血统的27个地理结构化人口。这种多样性使得数据集能够对人类基因变异进行更好的表示。为了允许在输入到模型的序列中进行单倍型重构,我们使用了1000G Genomes计划的等位基因型版本,总共包含125M个突变位点,其中111M个是单核苷酸多态性(SNP),14M个是插入/缺失(indel)。数据集中的核苷酸总数为19,212 B,对应大约3,202 B的标记。

训练过程

预处理

DNA序列使用核苷酸变换器分词器进行分词,分词器在可能的情况下将序列分词为6-mer分词器,否则将每个核苷酸单独进行分词,具体描述可参见相关存储库中的 Tokenization 部分。该分词器的词汇量大小为4105。然后,输入形式如下:

<CLS> <ACGTGT> <ACGTGC> <ACGGAC> <GACTAG> <TCAGCA>

分词后的序列最大长度为1000。

掩码处理采用了Bert-style训练的标准处理方式:

  • 15%的标记被掩码。
  • 80%的情况下,掩码的标记被替换为[MASK]。
  • 10%的情况下,掩码的标记被替换为一个随机的(与被替换的标记不同的)标记。
  • 剩下的10%的情况下,掩码的标记保持不变。

预训练

该模型在8台A100 80GB GPU上进行了300B个标记的训练,有效批处理大小为1M个标记。所使用的序列长度为1000个标记。使用Adam优化器[38],学习率遵循一个线性增加和平方根衰减的时间表,并使用标准的指数衰减率和epsilon常数,β1=0.9,β2=0.999,ε=1e-8。在第一个热身期间,学习率在16k步之间线性增加从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}
}