【ローカル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に読み込ませます。
Latex形式の数式画像をほぼ完璧に読み取ります。
日本語グラフの読み込み
※ 失敗したので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モデルが利用できます。画像はコピー&ペーストまたは、ドラッグ&ドロップで入力できます。
応用
Ollamaの制御下にないモデルを同時に利用すると、適切なメモリ管理ができないので(GPUメモリが足りず)実用的ではないのですが、手動でQwen2-vlを終了させたり、別マシンで別モデルを利用したりすると、次のような使い方ができます。
まとめ
日本語対応ローカルLLMは実用的なモデルが出揃ってきたように思いますが、日本語VLMはまだまだ簡単に利用できません。
ChatGPT等のクラウドサービスでは既にVLMが当たり前になっていますが、ローカルでも充実してほしいものです。
以下、関連する記事の【PR】です。