概要
自然言語処理の勉強の過程でrinnaの日本語GPT-2モデルをファインチューニングしました。
以下、私がファインチューニングしたrinnaの日本語GPT-2モデルのことを、作成したWebアプリケーションの画面表示に基づき、「もこなGPT」と呼称します。
プログラミングをした事がない人(ターミナルやエディタの操作に不慣れな人)も、もこなGPTとおしゃべりしてもらいたいと考え、操作がしやすいWebアプリケーションのインターフェースを作成することにしました。
使用言語、ライブラリなど
- Python 3.8.14
- Flask 2.2.3
- Flask-SQLAlchemy 3.0.3
- transformers 4.23.1
使用コード
以下のGithubのページにプログラムをアップロードしてあります。
https://github.com/MokonaSato/ChatConnector.git
ただし、以下はアップロードしていないので、ご自身でご用意ください。
- staticディレクトリ配下のcat.png (猫のイラスト画像)
- gpt2ディレクトリ配下のoutput (ファインチューニング済み言語モデル)
参考:rinnaの日本語GPT-2モデルのファインチューニングを試す
つまづいたポイント
私が想定していたのは
これを実現する方法がなかなか見つからず、苦戦しました。
解決策
- ユーザが画面上のテキストボックスに文字列を入力する
- 1がindex.html内のJavaScript文とApp.pyに送られる
- JavaScript文により画面上に既に表示されている文字列と1の文字列が表示される
- App.pyにおいて、Databaseに1の文字列と入力者 (ユーザ、表示名は「あなた」) が登録される
- App.pyにおいてもこなGPTが呼び出され、1の入力に対する応答が生成される
- 4の応答と入力者 (もこなGPT、表示名は「もこな」) が登録される
- App.pyにおいて、Database上に記録された全レコードが取得される
- App.pyがindex.htmlに7の全レコードが送信され、画面上に表示される
この方法により、想定していたアプリケーションを作ることができました。
M1 Macでtransformersをインストールする方法
私はM1チップ搭載Macbook Airで開発したので、transformersは以下の記事に従ってインストールしました。
参考:Install Hugging Face Transformers on Apple M1
開発に際して参考にしたサイト
【保存版】30分でFlask入門!Webアプリの作り方をPythonエンジニアが解説
【Flask】formからサーバーサイドにテキストや各種コントロール、ファイルを渡す