🧊

続・ブラウザ上でEmbeddingsを作る

lealog.hateblo.jp

これの続編。

あらすじ

  • 前回の記事で、Tensorflow.jsのUSEを使って、ブラウザ上でEmbeddingsは作れた
  • しかし精度がいまいち

というところで、より大きいモデルがあれば・・?それをブラウザから使えたら・・?と思い、いろいろ探してみた。

すると、Web AIっていう野心的なプロジェクトがあって、T5みたいなモデルも使えるらしいことがわかった。

GitHub - visheratin/web-ai: Run modern deep learning models in the browser.

ので、やってみた。

が、しかし

https://github.com/leader22/text-embeddings-by-webai

動かせるようになるまで本体にPRを送ったりと時間はかかったけど、まあできた。

ただ、やっぱ日本語の精度はイマイチだな〜という感想に終わった。


精度の問題をさておいても、

  • デカいモデルを使うためにはめちゃめちゃローディング時間が必要
  • 結果を得るにもローディングが必要
    • Workerに逃がしても遅い

みたいなUXまわりとの兼ね合いも考えると、ブラウザで完結させようという路線自体が、一考の余地がありそう。
もっと何かに特化したタスクを、それ用のモデルで行う、みたいな制約がないと。

ビルトインじゃなく、もし日本語に特化したモデルがあるならそれを使ってみる?ってことも考えたけど、うまく見つけられなかった。

https://huggingface.co/models?pipeline_tag=feature-extraction&library=onnx&language=ja&sort=downloads

ML力が足りない。

Transformers.js

Web AIと同じで、`onnxruntime-web`に依存してML系のタスクができるライブラリは他にもあるらしく。

PythonのTransformersのJSポートがあったのでそれでも試してみた。

https://github.com/leader22/text-embeddings-by-transformers

結局のところ、どれだけ目的に沿った太ったモデルを使うかが全てって感じ。
楽をしようとpre-trainedなものを使おうとする限り、こと日本語を精度良く扱うことはできなそう。

デバッグしようにも、どこに原因があるのかわからず難しいケースも多いし。