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











