Poetry 環境で色んな大規模言語モデルを動かして文章生成させてみた

以下の過去記事の発展形。

前回 rinna/japanese-gpt-neox-3.6b-instruction-sft-v2 を動かすにあたって、Transformers などのライブラリの使い方が大体分かってきたので、他の大規模言語モデルも触れそうだなと思い挑戦。環境は前回と同じく、WSL2 Ubuntu 上に Poetry 環境を構築してコーディング・実行している。

ソースコードは以下。

試した言語モデルは以下のとおり。それぞれ当方環境 (Core i7-7700K・32GB RAM・GTX1080) で簡単な文章を生成した時の大体の実行速度と、言語モデル部分が使用するストレージ容量をメモしておいた。

言語モデル名 実行速度 使用容量
abeja/gpt-neox-japanese-2.7b 22秒 5.0GB
abeja/gpt2-large-japanese 9秒 2.9GB
cyberagent/open-calm-1b 1秒 2.8GB
cyberagent/open-calm-3b 3秒 5.4GB
cyberagent/open-calm-7b (動作せず) 13GB
line-corporation/japanese-large-lm-1.7b-instruction-sft 0.6秒 3.1GB
line-corporation/japanese-large-lm-3.6b-instruction-sft 7秒 6.8GB
rinna/japanese-gpt-neox-3.6b-instruction-ppo 1分57秒 6.9GB
rinna/japanese-gpt-neox-3.6b-instruction-sft-v2 2分11秒 6.9GB
rinna/japanese-gpt2-xsmall 1秒 150MB
Tanrei/GPTSAN-japanese 9秒 5.2GB
yellowback/gpt-neo-japanese-1.3B 4秒 4.9GB

「私が飼っている猫は今、」から始まる文章を生成させてみたのだが、「破綻していない文章になっている」「面白い回答をしてくれる」という観点で見ると、以下のモデルあたりが優秀だった。

私が飼っている猫は今、6歳になったんですが、やっぱり若い猫は成長も早いですし、元気もいいですよ!

私が飼っている猫は今、オスで16歳。そしてもう1匹の猫はメスで8歳と高齢ですが2人とも病気知らず!

私が飼っている猫は今、避妊手術を受けています。手術後、猫の尿臭が増しました。これは再発性の膀胱炎の症状です。原因としては、手術後のストレスや抗生物質の使用が考えられます。また、猫を清潔に保つように心がけ、トイレを頻繁に洗うことで再発を防止できます。

私が飼っている猫は今、4歳です。最近、彼女がよく咳をするようになったので、獣医さんに連れて行きました。猫を診察してもらったところ、彼女は鼻水がたくさん出ているとのことでした。医師によると、彼女の鼻の中にポリープがあり、それが彼女の咳を引き起こしているとのことです。そこで、ポリープを取り除く手術を行うことにしました。私ができる限りお手伝いしようと思います!

…なんとなく、比較的軽量なモデルは「元気です」と返し、学習データ量の多いモデルになると猫が病気しがちという文章が生成されて面白かった。もちろん、各種パラメータを調整したり、プロンプトの与え方なども工夫の余地があるとは思うのだが、素人が乱暴に指示を与えて実行してみた限りではこんな感じだった。

全然続きを書いてくれないモデルもあったり (日本語対応していないのか設定ミスなのか不明)、自分の PC だとスペック不足で動かなかったりするモデルもあったのだが、これらがローカルで動くというのはなかなか面白かった。たかだか数 GB のデータモデル達でよくまぁコレだけ生成できるもんだと感心するばかりであった。