地平線まで行ってくる。

記録あるいは忘備録。時には検討事項。

ModernBERT, cl-nagoya/ruri-v3-pt-30mを使ってColabで分類のファインチューニングを試みる。

BERTが軽量モデルという位置づけになったのは、いつからだろうか。GPU性能の向上で軽量で分類や固有表現抽出を高速に低リソースで実施できるようになりました。今更・・・と思われるかもしれませんが、後で試したいことがあるので、素振りです。

 

ModernBERTの日本語モデルcl-nagoya/ruri-v3-pt-30mをライブドアニュースのデータセットを使って、分類タスクのファインチューニングを実施します。このモデルは、pretrained versionなので助かります。モデルの公開ありがとうございます。

 

さっそくColabの環境を整えます。Numpyのバージョンをダウングレードし、transformersとpeftがうまく動かないのを調整。Colabのライブラリも時折updateするので、余計に戸惑いました。

 

今のところは以下で動きました。

!pip install -q numpy==1.26.4
!pip install -q -U transformers datasets sentencepiece scikit-learn evaluate peft

 

このモデルは8192 tokensと長いテキストに対応しています。調子にのってmax_lengthを大きく取りすぎるとVRAMが足りなくかもしれないので、与えるテキストを眺めながらほどほどで押さえます。どの程度まで行けそうか、感触を掴みます。まずはMAX_TOKENS = 4096とします。

 

モデルで推奨されている5-fold cross-validationで学習を実施しました。 3 Epoch/Foldで最小限で実施しました。

 

データセットは、こちらを利用します。

huggingface.co

*クリエイティブ・コモンズライセンス「表示 – 改変禁止」

 

Average F1 Score (weighted) across 5 folds: 0.977480720836069

eval f1 across 5 folds: 0.981906

十分なスコアじゃないかなと思います。

 

 

colab.research.google.com