Stability AIの日本語画像言語モデルをWindows+RTX 4060 Ti 16GBで試す

Stability AIから日本語画像モデルが出ていたので試してみました。
Windows + RTX 4060 Ti 16GBです。

Stability AIのリリースはこちら
日本語画像言語モデル「Japanese InstructBLIP Alpha」をリリースしました — Stability AI Japan

モデルはこれ。
stabilityai/japanese-instructblip-alpha · Hugging Face

動かすとこんな感じで、5秒くらいで返答が生成されていました。結構ちゃんと画像を説明しています。

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_8bitTrueに。

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は電源に強いのが必要になってめんどい。