BERTでチャットボット

2024.05.07

■経緯
自然言語の機械学習のデモを作る必要があり、何かブラウザで見せられるものを作りたい。
ChatGPTは従量課金なので、できれば無料で動かせるものがよい。
BERTをJavascriptで動かすのが一番早そう。

■デモ作成の流れ
(仮説)
tensorflow.jsで出来そう。

(実際)
BERT用の事前学習モデルはpytorch形式が多く、tensorflow形式が少ない。

PyTorch -> ONNX -> OpenVINO -> TensorFlow / Tensorflow Lite の流れでモデルを変換する方法もあったが、バージョンの兼ね合いなどでなかなか変換がうまくいかない。

(対策)
tensorflowへの変換は諦め、transformers.js を使う
https://github.com/xenova/transformers.js
https://xenova.github.io/transformers.js/

(1)transformers.js が用意してくれているconvert.pyを使って Question-Answering用の日本語事前学習モデルをmodel_quantized.onnx に変換
(2)transformer.js でmodel_quantized.onnxを読み込む
(3)推論を行う

■デモサイト
https://booster-test.com/qa/

■所感
・BERTはオープンソースで、日本語の事前学習モデルも多く公開されているので使いやすい。
transformers.jsを使えばWebシステムに組み込める。

・ChatGPTだと従量課金なので、どうしても月額費用が気になってしまう。
よってカスタムで作れる方が望ましい。

・会社の製品紹介やFAQなどで使えると思う。
—————
(2024.05.25 改修)
→ model_quantized.onnx の初期ロードに時間がかかり過ぎるので、Flaskで予測用のAPIサーバを立ててAjaxでレスポンスを返すように改修。
transformer.js で実現できることがわかっただけでも収穫。

最新記事

過去の記事一覧