Stability AIから日本語画像モデルが出ていたので試してみました。
Windows + RTX 4060 Ti 16GBです。
Stability AIのリリースはこちら
日本語画像言語モデル「Japanese InstructBLIP Alpha」をリリースしました — Stability AI Japan
モデルはこれ。
stabilityai/japanese-instructblip-alpha · Hugging Face
動かすとこんな感じで、5秒くらいで返答が生成されていました。結構ちゃんと画像を説明しています。
Stabitili AIの画像対話モデル、結構的確に答えてくれる。最後に無応答があったけど。
— きしだൠ(K1S) (@kis) 2023年8月21日
8bitで読み込んで応答にRTX4060Tiで5秒程度。 pic.twitter.com/4hDGFDWFl4
※ Google Colab(要課金)で動かすノートブックをからあげさんが公開されています。 https://zenn.dev/karaage0703/articles/8e1da482fbf1d0
基本的に、Hugging Faceにあるサンプルコードをベースに試していきます。
16bit floatだとメモリがギリギリあふれて激遅だったので、8bitで読み込んでいます。
ということでbitsandbytesが必要になるのだけど、pipで普通には入れれないので、text-generation-webuiで使ってるものを利用します。
https://github.com/jllllll/bitsandbytes-windows-webui
こんなコマンド
> python -m pip install bitsandbytes --prefer-binary --extra-index-url=https://jllllll.github.io/bitsandbytes-windows-webui
そして、モデル読み込み時にload_in_8bit
をTrue
に。
model_name = "stabilityai/japanese-instructblip-alpha" model = AutoModelForVision2Seq.from_pretrained(model_name,load_in_8bit=True, trust_remote_code=True)
#model.to(device)
generate時にpad_token_idがどうのこうのという警告が出るのでpad_token_id=tokenizer.pad_token_id,
を付けくわえています。
outputs = model.generate( **inputs.to(device, dtype=model.dtype), num_beams=5, max_new_tokens=32, min_length=1, pad_token_id=tokenizer.pad_token_id, )
GradioでのUIをつけたソースはこちら
https://gist.github.com/kishida/11f09fe9f8494be30070c016b4837ae7
あと、なにやらProtocol Buffersでバージョン違いがあるということで、実行前に環境変数の設定が必要でした。
> Set PROTOCOL_BUFFERS_PYTHON_IMPLEMENTATION=python
GPUメモリは12GBちょい使ってます。ブラウザなどで3GB弱つかっていたので、10GBくらい?
モデル読み込みは12GB RAMのGPUでもいけそうだけど、応答生成時に2GBくらいメモリ使うので、結構ギリギリになるかも。
りんごマークがちょっと見えるだけで「ラップトップコンピューター」って言ってるのはびっくり。
ということで、みんな4060 Ti 16GB買っておうちで動かそう。
中古の3090(24GB)と同じ値段だけど、3090は電源に強いのが必要になってめんどい。