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で最小限で実施しました。
データセットは、こちらを利用します。
*クリエイティブ・コモンズライセンス「表示 – 改変禁止」
Average F1 Score (weighted) across 5 folds: 0.977480720836069
eval f1 across 5 folds: 0.981906
十分なスコアじゃないかなと思います。