見出し画像

【ローカルVLM】Qwen2-VLをOpen WebUIで利用する【Visionモデル】

はじめに

この記事は視覚能力をもたせたLLMであるQwen2-VL(2B)をOllama Open WebUIで利用する方法の記録です。動作環境は、

  • Windows 11 + WSL2 + Open WebUI(docker版)

  • Qwen2-VLはWLS2上での動作です

  • システムメモリ64GB←Flux.1が辛いので、32GBから増やしました

  • RTX 3060 12GB

です。GPUメモリは12GBでも足りないぐらいですが、システムメモリは32GBでも問題ないと思います。

Qwen2-VLとは、中国Alibaba社が開発しているローカルで利用できる日本語対応のVLMで、商用クラウドサービスに匹敵する最高性能モデルのひとつです。ただし、現状はollamaでは利用できないので、OpenAI API互換で動作させます。

Open WebUIの詳細な導入方法は下記事で紹介しています

何ができるのか?

数式のある画像を読み込む

Open WebUIで動作させたものです。画面のスクリーンショットをQwen2-VLに読み込ませます。

Wikipedia 「自由落下」より引用
Qwen2-VLの読み取り(解析)結果

Latex形式の数式画像をほぼ完璧に読み取ります。

日本語グラフの読み込み

政府統計データ集(生活総研)https://seikatsusoken.jp/family30/statistics/ より引用

※ 失敗したので3回再生成しています。
他のローカルVLMのllava-llama3やllava-phi3.5でもグラフは読み込めますが、Qwen2-VLほどの性能はありません。

導入方法

Anacondaのcondaコマンドを利用します。ただし、Windowsでは上手く動作しなかったため、WSL2上(Linux)での動作になります。

※ あらかじめWSL2上で、Linux版のAnacondaのインストールと、WSL用CUDA設定が必要になります。筆者の過去の記事ではWindowsのみで、WSL2(Linux)上での設定をまだ書けていません。

Python仮想環境の作成

condaコマンドで仮想環境を作ります。

conda create -n qwen2-vl python=3.11
conda activate qwen2-vl

Qwen2-VLの導入

公式レポジトリはこちら、公式ドキュメントに従って導入します。

公式ドキュメント「Deployment」そのまま実行します。

pip install git+https://github.com/huggingface/transformers@21fac7abba2a37fae86106f87fcf9974fd1e3830
pip install accelerate
pip install qwen-vl-utils
# Change to your CUDA version
CUDA_VERSION=cu121
pip install 'vllm==0.6.1' --extra-index-url https://download.pytorch.org/whl/${CUDA_VERSION}

正常に終了すれば、OpenAI APIサービスを起動します。ただし公式ドキュメントは7Bモデルの例になっていますが、2Bに変更し、エラーが出たので --max_model_len 6752を追記しています。

python -m vllm.entrypoints.openai.api_server --served-model-name Qwen2-VL-2B-Instruct --model Qwen/Qwen2-VL-2B-Instruct --max_model_len 6752

大きなモデルもダウンロードするため時間がかかります。エラー無く次の表示が出れば成功です。

INFO:     Started server process [450404]
INFO:     Waiting for application startup.
INFO:     Application startup complete.
INFO:     Uvicorn running on http://0.0.0.0:8000 (Press CTRL+C to quit)

Open WebUI側の設定

Ollama Open WebUIの設定から、OpenAI APIとして登録します。APIキーは適当な数字を入力しています(何か入力しないと保存できないため)。

Open WebUIがDocker上で動作しているため、localhostではなく「host.docker.internal」になっています。

接続設定

正常に通信できれば、設定を保存した後にQwen2-VL-2B-Instructモデルが利用できます。画像はコピー&ペーストまたは、ドラッグ&ドロップで入力できます。

一般的なVLMは固有人物名をブロックするチューニングが入っているのですが、中国AIは気にしないといったところでしょうか

応用

Ollamaの制御下にないモデルを同時に利用すると、適切なメモリ管理ができないので(GPUメモリが足りず)実用的ではないのですが、手動でQwen2-vlを終了させたり、別マシンで別モデルを利用したりすると、次のような使い方ができます。

画像を読み込んだ後に、@を利用して別LLMモデルで解説させる

まとめ

日本語対応ローカルLLMは実用的なモデルが出揃ってきたように思いますが、日本語VLMはまだまだ簡単に利用できません。

ChatGPT等のクラウドサービスでは既にVLMが当たり前になっていますが、ローカルでも充実してほしいものです。

以下、関連する記事の【PR】です。


いいなと思ったら応援しよう!