模型简介
模型特点
模型能力
使用案例
🚀 RiNALMo
RiNALMo是一个基于自监督学习方式,在大量非编码RNA(ncRNA)序列语料库上预训练的模型。它采用掩码语言建模(MLM)目标,能够对RNA结构预测任务有良好的泛化能力。
🚀 快速开始
该模型文件依赖于multimolecule
库,你可以使用pip进行安装:
pip install multimolecule
直接使用
你可以使用pipeline直接调用该模型进行掩码语言建模:
>>> import multimolecule # you must import multimolecule to register models
>>> from transformers import pipeline
>>> unmasker = pipeline("fill-mask", model="multimolecule/rinalmo")
>>> unmasker("gguc<mask>cucugguuagaccagaucugagccu")
[{'score': 0.3932918310165405,
'token': 6,
'token_str': 'A',
'sequence': 'G G U C A C U C U G G U U A G A C C A G A U C U G A G C C U'},
{'score': 0.2897723913192749,
'token': 9,
'token_str': 'U',
'sequence': 'G G U C U C U C U G G U U A G A C C A G A U C U G A G C C U'},
{'score': 0.15423105657100677,
'token': 22,
'token_str': 'X',
'sequence': 'G G U C X C U C U G G U U A G A C C A G A U C U G A G C C U'},
{'score': 0.12160095572471619,
'token': 7,
'token_str': 'C',
'sequence': 'G G U C C C U C U G G U U A G A C C A G A U C U G A G C C U'},
{'score': 0.0408296100795269,
'token': 8,
'token_str': 'G',
'sequence': 'G G U C G C U C U G G U U A G A C C A G A U C U G A G C C U'}]
下游任务使用
特征提取
以下是在PyTorch中使用该模型提取给定序列特征的方法:
from multimolecule import RnaTokenizer, RiNALMoModel
tokenizer = RnaTokenizer.from_pretrained("multimolecule/rinalmo")
model = RiNALMoModel.from_pretrained("multimolecule/rinalmo")
text = "UAGCUUAUCAGACUGAUGUUGA"
input = tokenizer(text, return_tensors="pt")
output = model(**input)
序列分类/回归
注意:该模型未针对任何特定任务进行微调。若要用于序列分类或回归,你需要在下游任务上对模型进行微调。 以下是在PyTorch中使用该模型作为骨干网络进行序列级任务微调的方法:
import torch
from multimolecule import RnaTokenizer, RiNALMoForSequencePrediction
tokenizer = RnaTokenizer.from_pretrained("multimolecule/rinalmo")
model = RiNALMoForSequencePrediction.from_pretrained("multimolecule/rinalmo")
text = "UAGCUUAUCAGACUGAUGUUGA"
input = tokenizer(text, return_tensors="pt")
label = torch.tensor([1])
output = model(**input, labels=label)
标记分类/回归
注意:该模型未针对任何特定任务进行微调。若要用于核苷酸分类或回归,你需要在下游任务上对模型进行微调。 以下是在PyTorch中使用该模型作为骨干网络进行核苷酸级任务微调的方法:
import torch
from multimolecule import RnaTokenizer, RiNALMoForTokenPrediction
tokenizer = RnaTokenizer.from_pretrained("multimolecule/rinalmo")
model = RiNALMoForTokenPrediction.from_pretrained("multimolecule/rinalmo")
text = "UAGCUUAUCAGACUGAUGUUGA"
input = tokenizer(text, return_tensors="pt")
label = torch.randint(2, (len(text), ))
output = model(**input, labels=label)
接触分类/回归
注意:该模型未针对任何特定任务进行微调。若要用于接触分类或回归,你需要在下游任务上对模型进行微调。 以下是在PyTorch中使用该模型作为骨干网络进行接触级任务微调的方法:
import torch
from multimolecule import RnaTokenizer, RiNALMoForContactPrediction
tokenizer = RnaTokenizer.from_pretrained("multimolecule/rinalmo")
model = RiNALMoForContactPrediction.from_pretrained("multimolecule/rinalmo")
text = "UAGCUUAUCAGACUGAUGUUGA"
input = tokenizer(text, return_tensors="pt")
label = torch.randint(2, (len(text), len(text)))
output = model(**input, labels=label)
✨ 主要特性
- 基于BERT架构,在大量非编码RNA序列上进行自监督预训练。
- 使用掩码语言建模(MLM)作为预训练目标,能够学习到RNA序列的内在特征。
- 对RNA结构预测任务具有良好的泛化能力。
📦 安装指南
该模型依赖于multimolecule
库,你可以使用以下命令进行安装:
pip install multimolecule
📚 详细文档
模型详情
RiNALMo是一个类似bert的模型,以自监督方式在大量非编码RNA序列语料库上进行预训练。这意味着模型仅在RNA序列的原始核苷酸上进行训练,并通过自动过程从这些文本中生成输入和标签。
模型规格
层数 | 隐藏层大小 | 头数 | 中间层大小 | 参数数量(M) | 浮点运算次数(G) | 乘累加运算次数(G) | 最大标记数 |
---|---|---|---|---|---|---|---|
33 | 1280 | 20 | 5120 | 650.88 | 168.92 | 84.43 | 1022 |
相关链接
- 代码:multimolecule.rinalmo
- 权重:
multimolecule/rinalmo
- 数据:RNAcentral
- 论文:RiNALMo: General-Purpose RNA Language Models Can Generalize Well on Structure Prediction Tasks
- 开发者:Rafael Josip Penić, Tin Vlašić, Roland G. Huber, Yue Wan, Mile Šikić
- 模型类型:BERT
- 原始仓库:lbcb-sci/RiNALMo
训练详情
训练数据
RiNALMo模型在多个数据库的组合上进行预训练,包括RNAcentral、Rfam、Ensembl Genome Browser和Nucleotide。训练数据包含3600万个独特的非编码RNA序列。
为确保每个训练批次中的序列多样性,RiNALMo使用MMSeqs2将序列聚类为1700万个簇,然后从不同的簇中采样每个批次的序列。
RiNALMo对所有标记进行预处理,将“U”替换为“T”。注意,在模型转换期间,“T”会被替换为“U”。[RnaTokenizer
][multimolecule.RnaTokenizer]会为你将“T”转换为“U”,你可以通过传递replace_T_with_U=False
来禁用此行为。
训练过程
预处理
RiNALMo使用掩码语言建模(MLM)作为预训练目标,掩码过程与BERT中使用的过程类似:
- 15%的标记被掩码。
- 在80%的情况下,被掩码的标记被
<mask>
替换。 - 在10%的情况下,被掩码的标记被一个与它们替换的标记不同的随机标记替换。
- 在剩下的10%的情况下,被掩码的标记保持不变。
预训练
模型在7个具有80GiB内存的NVIDIA A100 GPU上进行训练。
- 学习率:5e-5
- 学习率调度器:余弦
- 学习率预热:2000步
- 最小学习率:1e-5
- 训练轮数:6
- 批次大小:1344
- 丢弃率:0.1
🔧 技术细节
RiNALMo使用掩码语言建模(MLM)作为预训练目标,即取一个序列,模型随机掩码输入中15%的标记,然后将整个掩码后的句子输入模型,并预测被掩码的标记。这类似于语言建模中的完形填空任务。
📄 许可证
该模型遵循AGPL-3.0许可证。
SPDX-License-Identifier: AGPL-3.0-or-later
免责声明
这是RiNALMo: General-Purpose RNA Language Models Can Generalize Well on Structure Prediction Tasks的非官方实现,作者为Rafael Josip Penić等人。RiNALMo的官方仓库位于lbcb-sci/RiNALMo。
💡 使用提示
MultiMolecule团队已确认,提供的模型和检查点产生的中间表示与原始实现相同。发布RiNALMo的团队没有为该模型编写此模型卡片,此模型卡片由MultiMolecule团队编写。
引用
如果你使用了该模型,请引用以下论文:
@article{penic2024rinalmo,
title={RiNALMo: General-Purpose RNA Language Models Can Generalize Well on Structure Prediction Tasks},
author={Penić, Rafael Josip and Vlašić, Tin and Huber, Roland G. and Wan, Yue and Šikić, Mile},
journal={arXiv preprint arXiv:2403.00043},
year={2024}
}
联系我们
如果你对模型卡片有任何疑问或建议,请使用MultiMolecule的GitHub问题进行反馈。如果你对论文或模型有任何疑问,请联系RiNALMo论文的作者。











