模型简介
模型特点
模型能力
使用案例
🚀 RNAErnie
RNAErnie 是一个基于非编码 RNA(ncRNA)序列进行自监督预训练的模型。它采用多阶段掩码语言建模(MLM)目标,在大量非编码 RNA 序列语料库上进行训练,能够为 RNA 相关研究和应用提供强大的特征表示能力。
🚀 快速开始
安装依赖库
该模型文件依赖于 multimolecule
库,你可以使用以下命令进行安装:
pip install multimolecule
直接使用
你可以使用以下代码直接调用该模型进行掩码填充任务:
>>> import multimolecule # 必须导入 multimolecule 以注册模型
>>> from transformers import pipeline
>>> unmasker = pipeline("fill-mask", model="multimolecule/rnaernie")
>>> unmasker("gguc<mask>cucugguuagaccagaucugagccu")
[{'score': 0.09252794831991196,
'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'},
{'score': 0.09062391519546509,
'token': 11,
'token_str': 'R',
'sequence': 'G G U C R 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.08875908702611923,
'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.07809742540121078,
'token': 20,
'token_str': 'V',
'sequence': 'G G U C V 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.07325706630945206,
'token': 13,
'token_str': 'S',
'sequence': 'G G U C S 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, RnaErnieModel
tokenizer = RnaTokenizer.from_pretrained("multimolecule/rnaernie")
model = RnaErnieModel.from_pretrained("multimolecule/rnaernie")
text = "UAGCUUAUCAGACUGAUGUUG"
input = tokenizer(text, return_tensors="pt")
output = model(**input)
序列分类/回归
⚠️ 重要提示
该模型未针对任何特定任务进行微调。你需要在下游任务上对模型进行微调,才能将其用于序列分类或回归任务。
以下是在 PyTorch 中使用该模型作为骨干网络进行序列级任务微调的示例代码:
import torch
from multimolecule import RnaTokenizer, RnaErnieForSequencePrediction
tokenizer = RnaTokenizer.from_pretrained("multimolecule/rnaernie")
model = RnaErnieForSequencePrediction.from_pretrained("multimolecule/rnaernie")
text = "UAGCUUAUCAGACUGAUGUUG"
input = tokenizer(text, return_tensors="pt")
label = torch.tensor([1])
output = model(**input, labels=label)
标记分类/回归
⚠️ 重要提示
该模型未针对任何特定任务进行微调。你需要在下游任务上对模型进行微调,才能将其用于标记分类或回归任务。
以下是在 PyTorch 中使用该模型作为骨干网络进行核苷酸级任务微调的示例代码:
import torch
from multimolecule import RnaTokenizer, RnaErnieForTokenPrediction
tokenizer = RnaTokenizer.from_pretrained("multimolecule/rnaernie")
model = RnaErnieForTokenPrediction.from_pretrained("multimolecule/rnaernie")
text = "UAGCUUAUCAGACUGAUGUUG"
input = tokenizer(text, return_tensors="pt")
label = torch.randint(2, (len(text), ))
output = model(**input, labels=label)
接触分类/回归
⚠️ 重要提示
该模型未针对任何特定任务进行微调。你需要在下游任务上对模型进行微调,才能将其用于接触分类或回归任务。
以下是在 PyTorch 中使用该模型作为骨干网络进行接触级任务微调的示例代码:
import torch
from multimolecule import RnaTokenizer, RnaErnieForContactPrediction
tokenizer = RnaTokenizer.from_pretrained("multimolecule/rnaernie")
model = RnaErnieForContactPrediction.from_pretrained("multimolecule/rnaernie")
text = "UAGCUUAUCAGACUGAUGUUG"
input = tokenizer(text, return_tensors="pt")
label = torch.randint(2, (len(text), len(text)))
output = model(**input, labels=label)
✨ 主要特性
- 自监督预训练:在大量非编码 RNA 序列语料库上进行自监督预训练,学习到强大的特征表示能力。
- 多阶段掩码策略:采用特殊的 3 阶段训练管道,包括碱基级掩码、子序列级掩码和基序级掩码,提高模型的泛化能力。
- 广泛适用性:可用于多种下游任务,如序列分类、标记分类、接触分类等。
📦 安装指南
该模型文件依赖于 multimolecule
库,你可以使用以下命令进行安装:
pip install multimolecule
📚 详细文档
模型详情
RNAErnie 是一个基于 BERT 架构的模型,在大量非编码 RNA 序列语料库上进行自监督预训练。在转换过程中,会移除额外的标记,如 [IND]
和 ncRNA 类符号。
模型规格
层数 | 隐藏层大小 | 头数 | 中间层大小 | 参数数量(M) | FLOPs(G) | MACs(G) | 最大标记数 |
---|---|---|---|---|---|---|---|
12 | 768 | 12 | 3072 | 86.06 | 22.37 | 11.17 | 512 |
相关链接
- 代码:multimolecule.rnaernie
- 权重:multimolecule/rnaernie
- 数据:multimolecule/rnacentral
- 论文:Multi-purpose RNA language modelling with motif-aware pretraining and type-guided fine-tuning
- 开发者:Ning Wang, Jiang Bian, Yuchen Li, Xuhong Li, Shahid Mumtaz, Linghe Kong, Haoyi Xiong.
- 模型类型:BERT - ERNIE
- 原始仓库:CatIIIIIIII/RNAErnie
训练详情
训练目标
RNAErnie 使用掩码语言建模(MLM)作为预训练目标:给定一个序列,模型随机掩码输入中 15% 的标记,然后将整个掩码句子输入模型,并预测被掩码的标记。这类似于语言建模中的完形填空任务。
训练数据
RNAErnie 模型在 RNAcentral 上进行预训练。RNAcentral 是一个免费的公共资源,提供对一组全面且最新的非编码 RNA 序列的集成访问,这些序列由一组 专家数据库 提供,代表了广泛的生物体和 RNA 类型。
RNAErnie 使用了 RNAcentral 的一个子集进行预训练,该子集包含 2300 万个序列。在预处理过程中,所有标记中的 "T" 被替换为 "S"。
注意,[RnaTokenizer
][multimolecule.RnaTokenizer] 会自动将 "T" 转换为 "U",你可以通过传递 replace_T_with_U=False
来禁用此行为。
训练过程
预处理
RNAErnie 使用的掩码过程与 BERT 类似:
- 15% 的标记被掩码。
- 在 80% 的情况下,被掩码的标记被
<mask>
替换。 - 在 10% 的情况下,被掩码的标记被一个随机标记(与被替换的标记不同)替换。
- 在剩下的 10% 的情况下,被掩码的标记保持不变。
预训练
RNAErnie 使用特殊的 3 阶段训练管道进行预训练,每个阶段采用不同的掩码策略:
- 碱基级掩码:对序列中的每个核苷酸进行掩码。
- 子序列级掩码:对序列中 4 - 8bp 的子序列进行掩码。
- 基序级掩码:在基序数据集上进行训练。
模型在 4 块 NVIDIA V100 GPU(32GiB 内存)上进行训练,训练参数如下:
- 批次大小:50
- 步数:2,580,000
- 优化器:AdamW
- 学习率:1e-4
- 学习率预热:129,000 步
- 学习率冷却:129,000 步
- 最小学习率:5e-5
- 权重衰减:0.01
🔧 技术细节
声明
《Multi-purpose RNA language modelling with motif-aware pretraining and type-guided fine-tuning》发表在 Nature Machine Intelligence 上,这是一本闭源访问/作者付费期刊。
机器学习一直处于推动研究免费和开放获取运动的前沿。
我们认为闭源访问或作者付费出版在机器学习研究的未来没有立足之地,并相信采用这些期刊作为机器学习社区的记录渠道将是一种倒退。
MultiMolecule 团队致力于开放获取和开放科学的原则。我们不支持在闭源访问/作者付费期刊上发表论文,并鼓励社区支持开放获取期刊和会议。
请考虑签署 关于 Nature Machine Intelligence 的声明。
免责声明
这是 RNAErnie 的非官方实现,由 Ning Wang、Jiang Bian、Haoyi Xiong 等人提出的 RNAErnie 的官方仓库位于 CatIIIIIIII/RNAErnie。
⚠️ 重要提示
MultiMolecule 团队无法确认所提供的模型和检查点是否能产生与原始实现相同的中间表示。这是因为该方法发表在闭源访问/作者付费期刊上。
发布 RNAErnie 的团队没有为该模型编写此模型卡片,此模型卡片由 MultiMolecule 团队编写。
📄 许可证
该模型遵循 AGPL-3.0 许可证。
SPDX-License-Identifier: AGPL-3.0-or-later
引用
由于该论文发表在闭源访问/作者付费期刊上,因此无法提供引用信息。
联系我们
如果你对模型卡片有任何问题或建议,请使用 MultiMolecule 的 GitHub 问题进行反馈。
如果你对论文或模型有任何问题或建议,请联系 RNAErnie 论文的作者。







