【ubuntu-20.10】rinnaの日本語GPT-2モデルを動かしてみる

rinnaの日本語GPT-2モデルを動かしたかったのでやってみました。
いつもどおりwindows10homeでvagrant動かしてやっています。

参考

2021/4/7 日本語に特化したGPT-2の大規模言語モデルを開発しオープンソース化

Download Windows 10 Pro 64-bit English EN - You Windows World
Free download Windows 10 Pro 64-bit english. Microsoft Windows 10 Pro 64 bit english for new installations or to upgrade Windows 7 SP1 and Windows 8.1 ...

japanese-gpt2

GitHub - rinnakk/japanese-pretrained-models: Code for producing Japanese pretrained models provided by rinna Co., Ltd.
Code for producing Japanese pretrained models provided by rinna Co., Ltd. - GitHub - rinnakk/japanese-pretrained-models: Code for producing Japanese pretrained ...

Huggingface Transformers 入門 (27) – rinnaの日本語GPT-2モデルの推論

Huggingface Transformers 入門 (27) - rinnaの日本語GPT-2モデルの推論|npaka|note
「rinna」の日本語GPT-2モデルが公開されたので、推論を試してみました。 ・Huggingface Transformers 4.4.2 ・Sentencepiece 0.1.91 前回 1. rinnaの日本語GPT-2モデル 「rinna」の日本語GPT-2モデルが公開されました。 ...

やったこと

いつもどおりbentoのboxファイルでubuntu20のを探します。

Vagrant Cloud by HashiCorp
Vagrant Cloud by HashiCorp

コマンドプロンプトでubuntu20の仮想マシンを立ち上げてログイン


C:\> vagrant init bento/ubuntu-20.10
C:\> vagrant up
C:\> vagrant ssh

ubuntu20に入れたのを確認


$ cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=20.10
DISTRIB_CODENAME=groovy
DISTRIB_DESCRIPTION=”Ubuntu 20.10″

ソフトウェアをアップデート、アップグレードする。
ついでにpythonのバージョン確認、pipもインストールする。


$ sudo apt-get update
$ sudo apt -y upgrade
$ python3 -V
Python 3.8.6
$ sudo apt install -y python3-pip

pythonの仮想環境をインストールして作成


$ sudo apt-get install python3-venv
$ python3 -m venv –system-site-packages ./venv

仮想環境へ移動


$ source ./venv/bin/activate

仮想環境に移動すると(venv)がつく、仮想環境のpipをアップグレードしてtensorflowをインストール、tensorflowの動作確認


(venv)$ pip install –upgrade pip
(venv)$ pip install –user –upgrade tensorflow
(venv)$ python -c “import tensorflow as tf; print(tf.reduce_sum(tf.random.normal([1000, 1000])))”

Transformersをインストール


(venv)$ pip install transformers

pythonを実行し、Transformersを動かしてみる。
pipeline(‘sentiment-analysis’)で感情分析ができるらしいのでやってみる。


(venv)$ python
>>> from transformers import pipeline
>>> classifier = pipeline(‘sentiment-analysis’)
>>> classifier(‘We are very happy to show you the Transformers library.’)
[{‘label’: ‘POSITIVE’, ‘score’: 0.999799370765686}]

Transformersはとりあえず動いてるみたいなので、いったんpythonの対話モードから抜ける。


>>> exit()

rinnaのjapanese-GTP-2モデルを動かしてみる。
なにもせず実行した際にSentencePieceとpytorchがないと怒られたので、インストールする。


(venv)$ pip install sentencepiece
(venv)$ pip install torch

pythonの対話モード(入力したコードをすぐ実行するモードのこと)で日本語GTP-2モデルを動かす準備をする。
(最初は失敗してkillされたのでVirtualBoxのメモリを4Gに上げるとうまくいった)


(venv)$ python
>>> from transformers import T5Tokenizer, AutoModelForCausalLM
>>> tokenizer = T5Tokenizer.from_pretrained(“rinna/japanese-gpt2-medium”)
>>> model = AutoModelForCausalLM.from_pretrained(“rinna/japanese-gpt2-medium”)

実際に推論を動かしてみる。


>>> input = tokenizer.encode(“胃が痛い、森のようだ”, return_tensors=”pt”)
>>> output = model.generate(input, do_sample=True, max_length=50, num_return_sequences=3)
>>> print(tokenizer.batch_decode(output))
[‘胃が痛い、森のようだ #はなまるうどん #はれのひ https://t.co/b3jzy4i3rgb はははははははははは’, ‘胃が痛い、森のようだ 胃は小さくなっているが もっと奥がある。 何事にも 良い面も悪い面も持ち合わせていて それは 人間社会に 必要な面と 悪い一面。 悪面’, ‘胃が痛い、森のようだ >>527 のコメントにも出てくるとおり、2年くらい前からずっと言われてることなんだ よ。 俺自身は、こういう書き込みを見るたびに、この板で主張してる人達がいる’]

Twittrerとかでよく見かける語彙なのかな・・・(twitterのURLついてるぞ・・・)。
max_length50だと10秒ぐらいで文字生成が終わった。
500文字にしたら2分20秒ぐらいかかって下記の文章ができた。


[‘胃が痛い、森のようだ pic.twitter.com/xo0lqyjl8n 【速報】ニンテンドースイッチ予約完了!!11月19日に同時発売!! nintendo switch スプラトゥーン2 発売!!11月19日 予約開始!! #スプラトゥーン2 pic.twitter.com/4r0hlkm4gw 【psn】「nintendo switch 」の購入について ※ご注意…※ ※11月19日(月)のサービス開始時間は予定です。※ nintendoswitch… nintendo switch発売を記 念して,「スプラトゥーン2」について, nintendo switch の仕様についてのお知らせを追加しました。 #スプラトゥーン2 #スプラトゥーン2週間前! nintendo switch発売を記念して,「スプラトゥーン2」について, nintendo switch の仕様についてのお知 らせを追加しました。 #スプラトゥーン2週間前! nintendo switch ニンテンドースイッチ発売を記念して,switch の仕様 についてのお知らせを追加しました。 (… 「nintendo switch」の発売日は11月19日に決定!! 詳しくはこちら→https://t.co/lm9m0gnwsl7 【nintendo switch】「nintendo switch online」が2019年4月スタート!! 予約受付中!! nintendo switch online 2019年3月 まで、月額324円(税込)でご利用いただけます。… 「nintendo switch」の発売日は9月13日。 詳しくはこちら→https://t.co/jqa8yjcxmjl… 【nintendo switch】「スプラトゥーン2」のswitch化が決定! https://t.co/mvgv3qljrd nintendo switchが2019年3月15日にnintendo onlineに加入! https://t.co/b9vgqcwjxh pic.twitter.com/kxqoe1nbps ・nintendo switch 「スプラトゥーン2」発売日が2019年3月15日に決定!! ニンテンドースイッチ… 「スプラトゥーン2」のswitch化が決定! https://t.co/fqxk8′, ‘胃が痛い 、森のようだ こんな日は、冷たいビールを飲みたくなる。 今日も暑かったな〜。 今日のブログは、暑さのお悩み、お悩み解決!… 今日は、7月31日。8月1日は、「にごり酒」の日だって? それは、ビールの日じゃないんですよ〜。 そう、“日本酒の日”です。 ということで、今日は、夏の暑さのせいか、ビールが美味しい日でもあります。 これは僕が、最近はまっている、”にごり酒” の 美味しい季節の到来! ということで、今日もおすすめのビールをご紹介します。… 昨日の、ブログで書きましたが、この暑さだと、ビールは、ビールで、冷えてるし、美味しいから、飲みたくなりますね。 暑いけど、ビールは飲みたい、そんな僕には、うってつけ のビールです。… 昨日のブログで、たくさんの、ビールについてのコメントをいただき、ありがとうございました。 僕は、今、お 酒を飲まない、ビールも飲めない、お酒は好きだけど、健康には、何ら問題ない。 だから、ビールを飲んでも、健康には、問題がな い、と勘違いしてしまっているようですね。 つまり、ビールは、健康的なんじゃないか、お酒は、健康になるんじゃないか・・・と 思っているんですね。… お酒の飲み過ぎには、気をつけてください。 今年の夏は、暑いですね。 ビールが大好きなら、ビールの飲み過ぎには、気をつけてください。 しかし、そうはいっても、なかなか、ビールがやめられな… この前、久し振りに、実家に帰ろ うと思い、実家に行ってたら、母が、なんかしっくりこない・・・・・と、いうことで、1時間ぐらい、一緒にいてもらって、母に、 「どう?」って、いうと、「うん、これいいね!」って。 それくらい、美味しいもんなんですね〜。 しかし、この、ビール! これは、凄いと、僕は思います。… 僕は、毎年、ビールを3本ぐらい飲みますが、今年は、暑くて、まだ、ビールは、1本しか飲んでいません。 毎日、ビールを飲む、僕が’, ‘胃が痛い、森のようだ…と言っていましたが、こんなに元気なのは胃腸だけだと思うのですが・・・ そして、お隣さんのお知り合いの方が、ごはんを作ってくれていた。。。。 前は、あまり食べる方ではなかったし、そんなにたくさん食べられませんでした。 今日は、朝からずっと天気が悪く、朝食を食べた後はぐったりでした。 雨が降ったりでお外遊びが出来ない1日ではありますが、私は朝から予定があったので、 まだ起きていて、食事も食べていないということを伝えてあるそうです。 昨日の夕食は、いつもお世話になっている「とんかつ しの」さんにお願いしました。。。。 もう1軒は私の大好きな「まるまる」さんです。こちらは朝食が美味しい・・・・・ 今日は、ごはんのお代わりを持って行って、お昼にパンを持っていくこともお願いし ました。 昨日の深夜には、お店の方からお電話があり、予約が取れなくなってしまいそうとのことだったので、 今日から雨の予報( 午後3時ごろは晴れる予報)なので、お休みにします。 10月は、あと3週ありますので、皆さんのご予定はいかがでしょうか? 先日、お邪魔したときは、お天気が悪く、お外遊びは無理な感じでしたが・・・・ 今日も良いお天気だったので、昨日の2階からも見える「しのぶ」さんへ行ってきました。 外にもたくさんの猫がいるので、猫も安心しているみたいでした。。。。 昨日は、お天気が悪く、1 日お外遊びも出来なかったので、今日は朝から おうちの中で、ごはんをお庭に出してあげたいという希望を、お持ちの方には お持ちでない方にも(予約でokです)ご提供する予定でおります。 猫がいるから外に出にくいと思っているオーナーさんには、お願いしたい ことなので、 『いつも食べているごはん』も、味を変えたものを、ご用意しました。 先週、ブログを更新した後から、2階の窓から 顔を出せるようになったので、 いつも、いつも、たくさんの猫がいるので、猫はとても警戒心が強いんです。 私は、そのお宅にお邪魔したときに、猫を抱っこしながら(という’]


3分で500文字書いてくれると考えるとちょっと面白いかもしれない。

pythonの対話モードを出て、仮想環境を終了


>>> exit()
(venv)$ deactivate

おわり。