simple-spladeを作った勢いで、ChatGPTと相談しながら、simple-*的な派生品を作り始めているのですが、ひとまず、simple-spladeppとして、SPLADE++を作ってみた。
teacherモデルをどうするかはあるけど、ざっとみた感じでは、こんな感じかなと思われる。日本語をどうするか?を考えるなら、ベースモデルを作るところも考えた方が良いような気もするけど、それは気が向いたら考えることにする。
そんな感じで、今後もsimple-*シリーズを増やしてみようかなと。
Challange IT For Future
simple-spladeを作った勢いで、ChatGPTと相談しながら、simple-*的な派生品を作り始めているのですが、ひとまず、simple-spladeppとして、SPLADE++を作ってみた。
teacherモデルをどうするかはあるけど、ざっとみた感じでは、こんな感じかなと思われる。日本語をどうするか?を考えるなら、ベースモデルを作るところも考えた方が良いような気もするけど、それは気が向いたら考えることにする。
そんな感じで、今後もsimple-*シリーズを増やしてみようかなと。
naverのSPLADEの実装は、GitHubのnaver/spladeにあるけど、これが商用不可だったりするので、ゼロから実装して、何かで使いたいときの際にベースとして利用できるものがほしいなーと思ってました。というわけで、シンプルなSPLADEの実装を作ろうということで、marevol/simple-spladeとして、作ってみました。ChatGPTと壁打ちしながら、作っていった感じではあるけど、たぶん、それっぽい感じにはなったかなと思います。
main.pyでAmazonのECSIデータを利用して、クエリー(query)と商品名(product_title)を学習する感じになってます。ExactのEをpositiveで、それ以外をnegativeとして扱ってます。コード量も多くないので、簡単に眺めることができるのではないかな…と思いますし、たぶん、手を加えやすいと思います。
マルチリンガルで、とChatGPTに言ったら、xlm-roberta-baseになったので、そのままですが、別なモデルでも良いような気もしてます…。
勢いで作った感じはありますが、何かあれば、修正してください。
OpenAIのAPIは有料なので気軽に使うにはちょっと厳しいので、気軽に使う方法がないかなと言うときに良さそうなのが、llama-cpp-pythonというのがあります。Llama2とか、いい感じのものも増えてきていますし、これと合わせて使うと、気軽に試したりすることができます。
llama.cppで、量子化してたりして、利用する環境に合わせたサイズのモデルを事前に準備しておくと良いです。事前に準備しておいたら、llama-cpp-pythonは
pip install llama-cpp-python
でインストールすることができます。GPU環境とかであれば、ドキュメントを参考にして、cuBlasなどを有効にして、インストールしてください。
あとは、
python3 -m llama_cpp.server --model models/7B/ggml-model.bin
みたいな感じで、モデルを指定すれば起動できます。–portとか、オプションもいろいろとあるので、指定すれば、一部の層をGPUに置いたりとか、できたりで便利です。
OpenAIのライブラリ経由とかで使う場合は、OPENAI_API_BASE環境変数とかで、http://localhost:8000/v1とか指定すれば、差し替えて使えることもできると思います。
補足:llama.cppにもserverコマンドでAPI化できるのですが、これはllama-cpp-pythonほど、実装されていなかったので、まだ使えなかった…。