「マルチモーダルAIをローカルで動かしたい」
「GPT-4Vのように画像を解析できるAIをシステムに組み込みたい」
このような場合には、Fuyu-8Bがオススメです。
この記事では、マルチモーダルAIのモデルであるFuyu-8Bについて説明しています。
本記事の内容
- Fuyu-8Bとは?
- Fuyu-8Bの利用方法
- Fuyu-8Bの動作確認
それでは、上記に沿って解説していきます。
Fuyu-8Bとは?
Fuyu-8Bとは、Adept AI社によってトレーニングされたマルチモーダルモデルです。
Fuyu-8Bは、Adept AI社が開発しているマルチモーダルモデルFuyuの小型版になります。
Fuyuは、GPT-4Vと同じようなモノだと考えればよいでしょう。
GPT-4Vと同じように画像を解析してくれます。
また、Fuyu-8BのライセンスはCC-BY-NC-4.0になります。
簡単に言うと、営利目的が禁止されたオープンソースです。
Fuyu-8Bでお金儲けを考えなければ、自由に使って良いと言えます。
このFuyu-8Bは、以下のページで試すことができます。
https://huggingface.co/spaces/adept/fuyu-8b-demo
ただ、私がアクセスしたときはサーバーが混んでいました。

以上、Fuyu-8Bについて説明しました。
次は、Fuyu-8Bの利用方法を説明します。
Fuyu-8Bの利用方法

Fuyu-8Bの利用方法は、上記ページで記載されています。

正直、これでは不便過ぎます。
システムに組み込むなら、コードの表示で十分でしょうけど。
そうじゃない場合は、Hugging Face上のデモのようなツールが必要です。
これのインストール方法は、簡単です。
まず、仮想環境を用意します。
この環境にPyTorchをインストール。
2.0系を前提にしているようです。
最新版をインストールしても問題ありません。
「cu121」部分は、各自の環境に合わせてください。
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121
次のHugging Faceから、デモのソースを丸ごダウンロードします。
git clone https://huggingface.co/spaces/adept/fuyu-8b-demo
ダウンロードできたら、リポジトリルートに移動します。
cd fuyu-8b-demo
リポジトリルートには、以下のファイルが存在しています。
requirements.txt
git+https://github.com/huggingface/transformers.git accelerate torch==2.0.1
PyTorchはインストール済みのため、「torch」を無効にします。
そして、Gradioを追記。
変更後requirements.txt
git+https://github.com/huggingface/transformers.git accelerate #torch==2.0.1 gradio
requirements.txtを変更できたら、次のコマンドを実行します。
pip install -r requirements.txt
インストールが終わったら、デモのインストールは完了です。
以上、Fuyu-8Bの利用方法を説明しました。
次は、Fuyu-8Bの動作確認を説明します。
Fuyu-8Bの動作確認
リポジトリルートで、次のコマンドを実行します。
python app.py
初回起動時は、必要なファイルのダウンロード処理が始まります。
そこそこ時間がかかります。

それもそのはずで、全部で17.5GBのサイズになります。
GPUメモリがこれ以上ないと厳しいのかもしれません。
(検証は24GBのGeForce RTX 3090搭載マシンで実施)

起動は、次のように表示されたら成功です。
Running on local URL: http://0.0.0.0:7860 To create a public link, set `share=True` in `launch()`.
Windowsの場合、「http://0.0.0.0:7860」にアクセスするとエラーになります。

「0.0.0.0」の部分を「127.0.0.1」に置き換える必要があります。
つまり、「http://127.0.0.1:7860」にアクセスすればOKということです。
ただ、毎回これを置き換えるのは面倒です。
その場合は、app.pyの次の部分を変更します。

次のように変更するだけです。

利用方法は、デモと全く同じです。
機能的には、以下の3つが用意されています。

ここでは、デフォルトの「Visual Question Answering」を試します。
画像をアップロードして、ボタンをクリック。

質問を入れなければ、画像の内容をテキストにしてくれます。
質問を入れたら、その質問の回答を表示するようになっています。
Whet is an astronaut riding ?
この質問に対しては、次のように表示されます。

以上、Fuyu-8Bの動作確認を説明しました。