1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

FlaskでAIとおしゃべりするインターフェースを作る

Posted at

概要

自然言語処理の勉強の過程で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. ユーザが入力する
  2. 1で入力した文字列が画面上に表示される
  3. 1の文字列に対し、もこなGPTが返答を生成する
  4. (2秒待つ)
  5. 3で生成した返答が画面上に表示される
    という風に動くアプリケーションでした。
    movie.gif

これを実現する方法がなかなか見つからず、苦戦しました。

解決策

もこなGPT.001.png

  1. ユーザが画面上のテキストボックスに文字列を入力する
  2. 1がindex.html内のJavaScript文とApp.pyに送られる
  3. JavaScript文により画面上に既に表示されている文字列と1の文字列が表示される
  4. App.pyにおいて、Databaseに1の文字列と入力者 (ユーザ、表示名は「あなた」) が登録される
  5. App.pyにおいてもこなGPTが呼び出され、1の入力に対する応答が生成される
  6. 4の応答と入力者 (もこなGPT、表示名は「もこな」) が登録される
  7. App.pyにおいて、Database上に記録された全レコードが取得される
  8. 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からサーバーサイドにテキストや各種コントロール、ファイルを渡す

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?