许可协议: cc-by-nc-sa-4.0
组件:
- 文本示例: ACCTGATTCTGAGTC
标签:
- DNA
- 生物学
- 基因组学
数据集:
- InstaDeepAI/nucleotide_transformer_downstream_tasks
核苷酸Transformer-500m-1000g模型
核苷酸Transformer是一系列基于全基因组DNA序列预训练的基础语言模型。与其他方法相比,我们的模型不仅整合了单一参考基因组的信息,还利用了来自3,200多个多样化人类基因组以及850个物种(包括模式和非模式生物)的DNA序列。通过全面严格的评估,我们证明这些大型模型相比现有方法能提供极其准确的分子表型预测。
该系列中的nucleotide-transformer-500m-1000g是一个拥有5亿参数的Transformer模型,基于3,202个遗传多样性人类基因组进行预训练。模型提供Tensorflow和Pytorch两种版本。
开发团队: InstaDeep、NVIDIA与慕尼黑工业大学
模型来源
使用方式
在下个版本发布前,需通过以下命令从源码安装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-500m-1000g")
model = AutoModelForMaskedLM.from_pretrained("InstaDeepAI/nucleotide-transformer-500m-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}")
训练数据
nucleotide-transformer-500m-1000g模型基于千人基因组计划中来自非洲、美洲、东亚和欧洲27个地理结构人群的3,202个遗传多样性人类基因组进行预训练。该数据集包含1.25亿个突变(其中1.11亿为SNP,140万为插入缺失突变),总核苷酸数量达19,212亿,约合3,202亿个词元。
训练流程
预处理
DNA序列使用核苷酸Transformer分词器处理,优先采用6-mer分词(词汇量4,105),具体分词方案见代码库说明。输入格式示例如下:
<CLS> <ACGTGT> <ACGTGC> <ACGGAC> <GACTAG> <TCAGCA>
序列最大长度限制为1,000词元。
掩码策略采用标准BERT方案:
- 15%词元被掩码
- 80%概率替换为
[MASK]
- 10%概率替换为随机词元
- 10%概率保留原词元
预训练
使用8块A100 80GB显卡在3,000亿词元上训练,有效批处理量为100万词元。采用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={冷泉港实验室}
}