yasuokaの日記: 青空文庫RoBERTa単文字モデルroberta-base-japanese-aozora-charリリース
12月23日の日記の手法を拡張して、青空文庫(2.37億字)をもとにroberta-base-japanese-aozora-charを作ってみた。12層・隠れサイズ768・12ヘッド・トークン幅512とした上で、7772556文3億字(元データ2.37億字+異体字増量分0.64億字)をNVIDIA A100-SXM4-40GBで728679ステップ(32バッチ)学習させたところ、19時間11分かかってしまった。とりあえず、Google Colaboratoryで使ってみよう。
!pip install transformers
from transformers import AutoTokenizer,AutoModelForMaskedLM,FillMaskPipeline
tokenizer=AutoTokenizer.from_pretrained("KoichiYasuoka/roberta-base-japanese-aozora-char")
model=AutoModelForMaskedLM.from_pretrained("KoichiYasuoka/roberta-base-japanese-aozora-char")
pipeline=FillMaskPipeline(model,tokenizer)
print(pipeline("酸素ボ[MASK]ベを充塡する。"))
「酸素ボ[MASK]ベを充塡する。」を穴埋めさせてみたところ、私(安岡孝一)の手元では以下の結果となった。
[{'score': 0.28202304244041443, 'token': 1145, 'token_str': 'ー', 'sequence': '酸素ボーベを充塡する。'}, {'score': 0.20037603378295898, 'token': 1136, 'token_str': 'ン', 'sequence': '酸素ボンベを充塡する。'}, {'score': 0.07854818552732468, 'token': 1128, 'token_str': 'ル', 'sequence': '酸素ボルベを充塡する。'}, {'score': 0.04990103840827942, 'token': 1059, 'token_str': 'ウ', 'sequence': '酸素ボウベを充塡する。'}, {'score': 0.04331567883491516, 'token': 1084, 'token_str': 'タ', 'sequence': '酸素ボタベを充塡する。'}]
2番目に「ン」が出てきたので、まあ良しとすべきだろうか。あるいは、largeモデルにも挑戦してみるべきかな。
青空文庫RoBERTa単文字モデルroberta-base-japanese-aozora-charリリース More ログイン