🚀 核苷酸变换器-v2-50m-多物种模型
核苷酸变换器是一系列基础语言模型,它们在全基因组的DNA序列上进行了预训练。与其他方法相比,我们的模型不仅整合了单一参考基因组的信息,还利用了来自3200多个不同人类基因组以及850个来自广泛物种(包括模式生物和非模式生物)的基因组的DNA序列。通过大量且严谨的评估,我们发现这些大模型在分子表型预测方面比现有方法更加准确。
该系列模型中的 nucleotide-transformer-v2-50m-3mer-multi-species 是一个具有5000万参数的变换器模型,它在包含850个来自广泛物种(包括模式生物和非模式生物)的基因组集合上进行了预训练。
此模型是评估基因组语言模型对蛋白质预测能力研究的一部分。在这项工作中,考虑使用3元分词作为一种潜在的架构改进,以提高对下游蛋白质的细粒度预测能力。
开发者: InstaDeep
✨ 主要特性
- 多基因组整合:模型整合了来自3200多个不同人类基因组以及850个来自广泛物种的基因组的DNA序列信息,而非仅依赖单一参考基因组。
- 高精度预测:通过大量严谨评估,在分子表型预测方面比现有方法更加准确。
- 架构改进探索:考虑使用3元分词作为潜在架构改进,以提高下游蛋白质的细粒度预测能力。
📦 安装指南
在模型下一次发布之前,需要从源代码安装 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-v2-50m-3mer-multi-species", trust_remote_code=True)
model = AutoModelForMaskedLM.from_pretrained("InstaDeepAI/nucleotide-transformer-v2-50m-3mer-multi-species", trust_remote_code=True)
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: {embeddings.shape}")
print(f"Embeddings per token: {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: {mean_sequence_embeddings}")
📚 详细文档
模型来源
训练数据
nucleotide-transformer-v2-50m-3mer-multi-species 模型在从 NCBI 下载的总共850个基因组上进行了预训练。这些基因组不包括植物和病毒,因为它们的调控元件与论文任务中的研究对象不同。一些经过深入研究的模式生物被选入基因组集合,这些基因组总共包含1740亿个核苷酸,约290亿个标记。数据已作为HuggingFace数据集发布 在此。
训练过程
预处理
DNA序列使用核苷酸变换器分词器进行分词。该分词器尽可能将序列分词为6元标记,否则将每个核苷酸单独分词,具体方法见关联仓库的 分词 部分。该分词器的词汇表大小为4105。模型的输入格式如下:
<CLS> <ACGTGT> <ACGTGC> <ACGGAC> <GACTAG> <TCAGCA>
分词后的序列最大长度为1000。
使用的掩码策略是Bert式训练的标准策略:
- 15%的标记被掩码。
- 80%的情况下,被掩码的标记被替换为
[MASK]
。
- 10%的情况下,被掩码的标记被替换为一个随机标记(与原标记不同)。
- 10%的情况下,被掩码的标记保持不变。
预训练
模型在64个TPUv4上对3000亿个标记进行训练,有效批量大小为100万个标记。使用的序列长度为1000个标记。采用Adam优化器 [38] 并使用学习率调度,指数衰减率和epsilon常数采用标准值,β1 = 0.9,β2 = 0.999,ε=1e-8。在第一个热身阶段,学习率在16000步内从5e-5线性增加到1e-4,然后在训练结束前按照平方根衰减。
架构
该模型属于第二代核苷酸变换器,架构上的改进包括使用旋转位置嵌入代替学习位置嵌入,并引入了门控线性单元。
引用信息
@article{boshar2024glmsforproteins,
title={Are Genomic Language Models All You Need? Exploring Genomic Language Models on Protein Downstream Tasks},
author={Boshar, Sam and Trop, Evan and de Almeida, Bernardo and Copoiu, Liviu and Pierrot, Thomas},
journal={bioRxiv},
pages={2024--01},
year={2024},
publisher={Cold Spring Harbor Laboratory}
}
📄 许可证
本模型采用CC BY-NC-SA 4.0许可证。