模型概述
模型特點
模型能力
使用案例
🚀 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 論文的作者。







