モデル概要
モデル特徴
モデル能力
使用事例
🚀 RiNALMo
非コードRNA(ncRNA)に対してマスク言語モデリング(MLM)を用いて事前学習されたモデルです。このモデルは、RNA構造予測タスクにおいて良好な汎化性能を発揮します。
🚀 クイックスタート
このモデルを使用するには、まずmultimolecule
ライブラリをインストールする必要があります。以下のコマンドを使用してインストールできます。
pip install multimolecule
直接使用
マスク言語モデリングのパイプラインを使用して、このモデルを直接利用できます。
>>> 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'}]
✨ 主な機能
- 非コードRNA(ncRNA)に対する事前学習モデルで、構造予測タスクに汎化性能を持つ。
- マスク言語モデリング(MLM)を用いた事前学習により、RNA配列のマスクされたトークンを予測できる。
📦 インストール
モデルファイルはmultimolecule
ライブラリに依存しています。以下のコマンドでインストールできます。
pip install multimolecule
💻 使用例
基本的な使用法
マスク言語モデリングのパイプラインを使用して、モデルを直接利用する例です。
>>> 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'}]
高度な使用法
特徴抽出
与えられた配列の特徴を取得する例です。
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)
配列分類/回帰
このモデルは特定のタスクに対してファインチューニングされていません。配列分類または回帰に使用するには、下流タスクでモデルをファインチューニングする必要があります。
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)
トークン分類/回帰
このモデルは特定のタスクに対してファインチューニングされていません。ヌクレオチド分類または回帰に使用するには、下流タスクでモデルをファインチューニングする必要があります。
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)
接触分類/回帰
このモデルは特定のタスクに対してファインチューニングされていません。接触分類または回帰に使用するには、下流タスクでモデルをファインチューニングする必要があります。
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)
📚 ドキュメント
モデル詳細
RiNALMoは、非コードRNA配列の大規模コーパスで自己教師付き学習により事前学習されたbertスタイルのモデルです。これは、モデルがRNA配列の生のヌクレオチドのみを使用して訓練され、それらのテキストから入力とラベルを自動的に生成するプロセスを経ていることを意味します。訓練プロセスの詳細については、訓練詳細セクションを参照してください。
モデル仕様
層の数 | 隠れ層のサイズ | ヘッドの数 | 中間層のサイズ | パラメータ数 (M) | FLOPs (G) | MACs (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は、マスク言語モデリング(MLM)を事前学習の目的として使用しました。具体的には、シーケンスを入力として受け取り、入力中のトークンの15%をランダムにマスクし、その後、マスクされた文章全体をモデルに通して、マスクされたトークンを予測する必要があります。これは、言語モデリングにおけるClozeタスクに相当します。
訓練データ
RiNALMoモデルは、RNAcentral、Rfam、Ensembl Genome Browser、およびNucleotideを含むデータベースの組み合わせで事前学習されました。訓練データには、3600万の一意のncRNA配列が含まれています。
各訓練バッチ内の配列の多様性を確保するために、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%のケースで、マスクされたトークンはそのまま残されます。
事前学習
モデルは、80GiBのメモリを持つ7つのNVIDIA A100 GPUで訓練されました。
- 学習率: 5e-5
- 学習率スケジューラ: コサイン
- 学習率ウォームアップ: 2,000ステップ
- 学習率の最小値: 1e-5
- エポック数: 6
- バッチサイズ: 1344
- ドロップアウト: 0.1
🔧 技術詳細
RiNALMoは、マスク言語モデリング(MLM)を用いて非コードRNA配列の事前学習を行います。この手法により、モデルはRNA配列の構造情報を学習し、構造予測タスクにおいて良好な汎化性能を発揮します。
📄 ライセンス
このモデルは、AGPL-3.0ライセンスの下でライセンスされています。
SPDX-License-Identifier: AGPL-3.0-or-later
免責事項
これは、Rafael Josip PenićらによるRiNALMo: General-Purpose RNA Language Models Can Generalize Well on Structure Prediction Tasksの非公式実装です。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論文の著者に連絡してください。











