模型概述
模型特點
模型能力
使用案例
🚀 RNA-FM
RNA-FM 是一個基於非編碼 RNA(ncRNA)進行預訓練的模型,採用掩碼語言建模(MLM)目標。該模型能夠為 RNA 結構和功能的預測提供有力支持,在生物領域具有重要的應用價值。
🚀 快速開始
本模型文件依賴於 multimolecule
庫。你可以使用 pip 進行安裝:
pip install multimolecule
✨ 主要特性
- 預訓練模型:基於非編碼 RNA 序列進行預訓練,可用於多種 RNA 相關任務。
- 多任務支持:支持掩碼語言建模、RNA 二級結構預測、特徵提取、序列分類/迴歸、標記分類/迴歸、接觸分類/迴歸等任務。
- 模型變體:提供基於非編碼 RNA 序列和信使 RNA 序列預訓練的不同變體。
📦 安裝指南
模型依賴於 multimolecule
庫,使用以下命令進行安裝:
pip install multimolecule
💻 使用示例
基礎用法
掩碼語言建模
你可以直接使用該模型進行掩碼語言建模:
>>> import multimolecule # 必須導入 multimolecule 以註冊模型
>>> from transformers import pipeline
>>> unmasker = pipeline("fill-mask", model="multimolecule/rnafm")
>>> unmasker("gguc<mask>cucugguuagaccagaucugagccu")
[{'score': 0.2752501964569092,
'token': 21,
'token_str': '.',
'sequence': 'G G U 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.22108642756938934,
'token': 23,
'token_str': '*',
'sequence': 'G G U 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.18201279640197754,
'token': 25,
'token_str': 'I',
'sequence': 'G G U C I 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.10875876247882843,
'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.08898332715034485,
'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'}]
RNA 二級結構預測
你可以直接使用該模型進行 RNA 二級結構預測:
>>> import multimolecule # 必須導入 multimolecule 以註冊模型
>>> from transformers import pipeline
>>> predictor = pipeline("rna-secondary-structure", model="multimolecule/rnafm")
>>> predictor("ggucuc")
{'sequence': 'G G U C U C',
'secondary_structure': '([(].)',
'contact_map': [[0.5174561142921448, 0.49224206805229187, 0.5099285244941711, 0.4873944818973541, 0.4782561957836151, 0.49956777691841125],
[0.49224206805229187, 0.5018295645713806, 0.4795883297920227, 0.5186688303947449, 0.4944656491279602, 0.4980457127094269],
[0.5099285244941711, 0.4795883297920227, 0.5018683671951294, 0.4938940703868866, 0.4913065433502197, 0.5082612633705139],
[0.4873944818973541, 0.5186688303947449, 0.4938940703868866, 0.4948427081108093, 0.479320764541626, 0.5107203722000122],
[0.4782561957836151, 0.4944656491279602, 0.4913065433502197, 0.479320764541626, 0.5626780986785889, 0.47851765155792236],
[0.49956777691841125, 0.4980457127094269, 0.5082612633705139, 0.5107203722000122, 0.47851765155792236, 0.48973602056503296]]}
高級用法
提取特徵
以下是在 PyTorch 中使用該模型提取給定序列特徵的示例:
from multimolecule import RnaTokenizer, RnaFmModel
tokenizer = RnaTokenizer.from_pretrained("multimolecule/rnafm")
model = RnaFmModel.from_pretrained("multimolecule/rnafm")
text = "UAGCUUAUCAGACUGAUGUUG"
input = tokenizer(text, return_tensors="pt")
output = model(**input)
序列分類 / 迴歸
⚠️ 重要提示
該模型未針對任何特定任務進行微調。你需要在下游任務上對模型進行微調,才能將其用於序列分類或迴歸。
以下是在 PyTorch 中使用該模型作為骨幹進行序列級任務微調的示例:
import torch
from multimolecule import RnaTokenizer, RnaFmForSequencePrediction
tokenizer = RnaTokenizer.from_pretrained("multimolecule/rnafm")
model = RnaFmForSequencePrediction.from_pretrained("multimolecule/rnafm")
text = "UAGCUUAUCAGACUGAUGUUG"
input = tokenizer(text, return_tensors="pt")
label = torch.tensor([1])
output = model(**input, labels=label)
標記分類 / 迴歸
⚠️ 重要提示
該模型未針對任何特定任務進行微調。你需要在下游任務上對模型進行微調,才能將其用於標記分類或迴歸。
以下是在 PyTorch 中使用該模型作為骨幹進行核苷酸級任務微調的示例:
import torch
from multimolecule import RnaTokenizer, RnaFmForTokenPrediction
tokenizer = RnaTokenizer.from_pretrained("multimolecule/rnafm")
model = RnaFmForTokenPrediction.from_pretrained("multimolecule/rnafm")
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, RnaFmForContactPrediction
tokenizer = RnaTokenizer.from_pretrained("multimolecule/rnafm")
model = RnaFmForContactPrediction.from_pretrained("multimolecule/rnafm")
text = "UAGCUUAUCAGACUGAUGUUG"
input = tokenizer(text, return_tensors="pt")
label = torch.randint(2, (len(text), len(text)))
output = model(**input, labels=label)
📚 詳細文檔
模型詳情
變體
multimolecule/rnafm
:基於非編碼 RNA 序列預訓練的 RNA-FM 模型。multimolecule/mrnafm
:基於信使 RNA 序列預訓練的 RNA-FM 模型。
模型規格
變體 | 層數 | 隱藏層大小 | 頭數 | 中間層大小 | 參數數量(M) | 浮點運算次數(G) | 內存訪問次數(G) | 最大標記數 |
---|---|---|---|---|---|---|---|---|
RNA-FM | 12 | 640 | 20 | 5120 | 99.52 | 25.68 | 12.83 | 1024 |
mRNA-FM | 12 | 1280 | 20 | 5120 | 239.25 | 61.43 | 30.7 | 1024 |
鏈接
- 代碼:multimolecule.rnafm
- 數據:RNAcentral
- 論文:Interpretable RNA Foundation Model from Unannotated Data for Highly Accurate RNA Structure and Function Predictions
- 開發者:Jiayang Chen, Zhihang Hu, Siqi Sun, Qingxiong Tan, Yixuan Wang, Qinze Yu, Licheng Zong, Liang Hong, Jin Xiao, Tao Shen, Irwin King, Yu Li
- 模型類型:BERT - ESM
- 原始倉庫:ml4bio/RNA-FM
訓練詳情
訓練數據
RNA-FM 模型在 RNAcentral 上進行預訓練。RNAcentral 是一個免費的公共資源,提供對一組全面且最新的非編碼 RNA 序列的集成訪問,這些序列由一組 專家數據庫 提供,涵蓋了廣泛的生物和 RNA 類型。
RNA-FM 應用 CD-HIT (CD-HIT-EST) 以 100% 的序列同一性為閾值去除 RNAcentral 中的冗餘序列。最終數據集包含 2370 萬個非冗餘 RNA 序列。
RNA-FM 對所有標記進行預處理,將 "U" 替換為 "T"。
請注意,在模型轉換期間,"T" 會被替換為 "U"。[RnaTokenizer
][multimolecule.RnaTokenizer] 會為你將 "T" 轉換為 "U",你可以通過傳遞 replace_T_with_U=False
來禁用此行為。
訓練過程
預處理
RNA-FM 使用掩碼語言建模(MLM)作為預訓練目標。掩碼過程與 BERT 中使用的過程類似:
- 15% 的標記被掩碼。
- 在 80% 的情況下,被掩碼的標記被
<mask>
替換。 - 在 10% 的情況下,被掩碼的標記被一個與它們替換的標記不同的隨機標記替換。
- 在剩下的 10% 的情況下,被掩碼的標記保持不變。
預訓練
該模型在 8 個具有 80GiB 內存的 NVIDIA A100 GPU 上進行訓練。
- 學習率:1e-4
- 權重衰減:0.01
- 學習率調度器:逆平方根
- 學習率預熱:10,000 步
🔧 技術細節
RNA-FM 採用掩碼語言建模(MLM)作為預訓練目標,通過隨機掩碼輸入序列中的部分標記,讓模型預測這些被掩碼的標記。這種方法類似於語言建模中的完形填空任務,能夠讓模型學習到 RNA 序列的內在結構和語義信息。
在訓練過程中,模型使用了一系列的優化策略,如在 8 個 NVIDIA A100 GPU 上進行分佈式訓練,採用逆平方根學習率調度器和 10,000 步的學習率預熱,以提高模型的訓練效率和性能。
📄 許可證
本模型採用 AGPL-3.0 許可證。
SPDX-License-Identifier: AGPL-3.0-or-later
引用
BibTeX:
@article{chen2022interpretable,
title={Interpretable rna foundation model from unannotated data for highly accurate rna structure and function predictions},
author={Chen, Jiayang and Hu, Zhihang and Sun, Siqi and Tan, Qingxiong and Wang, Yixuan and Yu, Qinze and Zong, Licheng and Hong, Liang and Xiao, Jin and King, Irwin and others},
journal={arXiv preprint arXiv:2204.00300},
year={2022}
}
聯繫信息
如果你對本模型卡片有任何問題或建議,請使用 MultiMolecule 的 GitHub 問題。
如果你對論文或模型有任何問題或建議,請聯繫 RNA-FM 論文 的作者。











