No module named ‘torch._six’

Dollyを試してみようと思い、

git clone https://github.com/databrickslabs/dolly.git
cd dolly
pip install -r requirements.txt

をして、Getting Started with Response Generationを実行してみたけど、

ModuleNotFoundError: No module named 'torch._six'

という感じで怒られる…。ぐぐってみると、._sixを消せば良いとのことなので、

sed -i "s/._six//" /usr/local/lib/python3.9/dist-packages/deepspeed/runtime/utils.py
sed -i "s/._six//" /usr/local/lib/python3.9/dist-packages/deepspeed/runtime/zero/stage_1_and_2.py

みたいな感じで、対象箇所を修正。でも、40Gのメモリーを積んだGPUでも、

from transformers import pipeline

from transformers import pipeline

instruct_pipeline = pipeline(model="databricks/dolly-v2-12b", trust_remote_code=True, device_map="auto")

の方はメモリー不足と言われる…。(厳しい時代だな…)

なので、

import torch
from transformers import pipeline

instruct_pipeline = pipeline(model="databricks/dolly-v2-12b", torch_dtype=torch.bfloat16, trust_remote_code=True, device_map="auto")

を実行したら、処理できた。でも、24Gのメモリーを使っているっぽい…。Colab ProのGPUプレミアム設定で確認した感じです。

Dolly自体については、ChatGPTと比べると、現時点では、これから頑張っていく感じなのかなみたいな感じかな。

OpenAPI対応

Fessでは、検索APIを提供していますが、今まで放置してきたOpenAPI対応に取り組むことにしました。既存のAPIをベースにopenapi.yamlを作れば良いかなと思っていたのですが、いろいろと作業していると、サジェストAPIとの整合性もほぼないですし、統一性がないので、思い切って、一新することにしました。

今回作成したOpenAPIのyamlファイルは、openapi-user.yamlという感じです。現時点では、足りない情報とかもある気はしますが、ちょっとずつ対応していこうと思います。ということで、14.8からはこのAPIがデフォルトになります。

で、今までのJSON APIやGSA APIはどうするか?ということですが、本体からは取り除いて、プラグイン化して、利用するようにしようと思います。なので、過去と互換性が必要であれば、プラグインを追加して、対応するみたいな感じを想定しています。

という感じで、次のバージョンからOpenAPIのyamlが提供される予定です。

Fess 14.7.0のリリース

Fess 14.7.0をリリースしました。細々としたものをいろいろと修正したような気もしますが、振り返っていきます。

まず、#2716はログファイルが指定した保存期間で古いのが消えるようにしました。90日以前のファイルは消すようになります。

#2717はサムネイルの保存ディレクトリのパス階層を変更しました。ファイルやディレクトリの数を減らすためです。

#2719はログファイルの出力形式をECS形式で出力できるようにしました。Docker版を利用すると、このバージョンからログがJSON形式で出力されるようになります。

#2721はjQueryのバージョンを最新化しました。

#2722はクロール時にHTMLのタグを取り除く機能があるのですが、取り除くタグをクロール設定の設定パラメーターにconfig.html.pruned.tagsで指定できるようにしました。クロール時にHTML上で無視したい利用域とかあれば、これでタグを指定できます。

#2723は内部で利用しているOpenSearchのバージョンを2.6にしました。

#2725はサムネイルの出力ログ周りの改善です。問題調査のログの整理をしました。

#2727は検索に失敗したときにシステムエラーでなく、検索失敗的なエラーメッセージを出す感じに変更しました。

#2728はドキュメントの部分更新の方法でupdate by queryで更新する対応を入れました。OpenSearchのNeural Searchを使うときにingest pipelineを使うのですが、pipelineはupdateを受け付けないためです。

#2729はScroll APIが動いていなかったので、修正しました…。

#2730はCopyrightが2022年のままだったので、更新しました。

という感じで、細々とした修正を入れた感じですが、そろそろOpenSearchのNeural Searchを使えるような状態にしていきたいなと思い、その辺の対応を入れている感じになります。現状でも、ベクトルで検索ができるのですが、いろいろと整理して、画像や音声もベクトル化して検索できるようにしていきたいなとは思っています。あとは、そろそろKubernetesでも簡単に使えるようにHelmチャートも用意しようと思ってはいますが、未着手です…。そんな感じですが、何かあればフォーラムに投げてください。