![見出し画像](https://assets.st-note.com/production/uploads/images/160911944/rectangle_large_type_2_a11342a3bb2c445a9f98b11c7d8c0c1d.png?width=1200)
Ollama で llama3.2-vision を試す
tl;dr
Llama 3.2 Vision 11B / 90B が Ollama に対応したよ
Ollama をアップデートするコマンドを書いたよ
`ollama run` コマンドに画像のパスを指定することで使えるよ
CLI と Python 経由で試したよ
Llama 3.2 Vision 11B / 90B が Ollama で使えるようになりました。
使い方は簡単。まずは Ollama をアップデートしましょう。
上記の公式ウェブサイトからご自身の OS に対応する最新版の Ollama をダウンロードしてください。
macOS で Homebrew を使っていらっしゃる方は下記のコマンドで。
brew upgrade --cask ollama
pkill ollama
open -a Ollama
ollama --version
> ollama --version
ollama version is 0.4.0
Ollama のバージョンが 0.4.0 以降であれば問題なく動きます。参考までに 0.4.0 より前のバージョンで Llama 3.2 Vision をダウンロードしようとすると下記のエラーが表示されます。
> ollama pull llama3.2-vision:90b
pulling manifest
Error: pull model manifest: 412:
The model you are attempting to pull requires a newer version of Ollama.
Please download the latest version at:
https://ollama.com/download
Ollama のアップデートができましたら、モデルをダウンロードしてください。Llama 3.2 Vision 11B を試すには最低 8GB の VRAM が必要であることにご注意ください。Mac をお使いの方は Unified Memory が 16GB あれば動きます。Macbook Air 16GB で検証済みですが、レスポンスには 30 秒くらいかかりました。
llama pull llama3.2-vision:11b
あるいは VRAM / Unified Memory が 64GB ある方は 90B のモデルをダウンロードするのも良いです。
ollama pull llama3.2-vision:90b
個人的には、タグなし(`ollama run llama3.2-vision`)あるいは latest 指定(`ollama run llama3.2-vision:latest`)は ollama list 時にモデルのパラメータ数がわかりづらいので、明示的に指定するようにしています。
では Llama 3.2 を実行してみましょう。画像の渡し方はふた通りあります。画像を Terminal にドラッグ&ドロップするやり方と、単に画像のパスを指定する方法です。今回は後者を試してみます。
サンプル画像として Ollama の公式アイコンを拝借しましょう。適当なディレクトリで cURL を実行してください。
![](https://assets.st-note.com/img/1730945175-qNv4yBgCZrt23bjALiUnMT5s.png)
curl -O https://ollama.com/public/ollama.png
~/Downloads
> ollama run llama3.2-vision:11b
>>> What is in this image? /Users/username/Downloads/ollama.png
Added image '/Users/username/Downloads/ollama.png'
This image shows the head of a stylized llama. It is shown from neck to forehead, and has two ears that are slightly rounded at their tips. The llama's nose is small but distinct, with
a dot for its nostril. Its eyes are round and black, appearing almost like dots.
(参考訳)この画像は様式化されたラマの頭部を示しています。首から額までが描かれており、先端がわずかに丸みを帯びた 2 つの耳があります。ラマの鼻は小さいですが特徴的で、鼻孔は点になっています。目は丸くて黒く、まるで点のように見えます。
`ollama run` 自体はこれまでと同様に行ない、プロンプト入力にてファイルパスを指定すればよさそうです。画像入力が行われたか否かは `Added image <image_file_path>` の表示(とレスポンスの時間)で確認できます。
ワンライナーで記述することも可能です。
ollama run llama3.2-vision:11b "What is in this image? /Users/username/Downloads/ollama.png"
> ollama run llama3.2-vision:11b "What is in this image? /Users/username/Downloads/ollama.png"
Added image '/Users/username/Downloads/ollama.png'
This is a simple drawing of a cartoonish bear. It has two triangular ears, and a circular head with a nose and eyes. The rest of the body appears to be a white or light grey blob. The
image is black on top of a white background so it looks like a negative.
(参考訳)これは漫画風のクマの簡単な絵です。三角形の耳が 2 つと、鼻と目が付いた円形の頭があります。体の残りの部分は白または薄い灰色の塊のように見えます。画像は白い背景の上に黒で描かれているため、ネガのように見えます。
いちいちフルパスを書きたくないという方は環境変数をよしなに使ってください。
ollama run llama3.2-vision:11b "What is in this image? $HOME/Downloads/ollama.png"
ファイルパスが間違っていると「ウチにはファイルアクセスの権限がないねん!」と怒られます(単なる LLM のレスポンスになります)。
CLI で Vision Language Model が使えるのは便利ですね。
公式ブログでは Python / JavaScript / cURL で試す方法が記載されています。本記事では Python を試してみます。その他の使い方について気になる方は公式ブログを参照されてください。
環境構築から始めます。私は uv で実行しました。
mkdir playground-ollama-llama32-vision
cd playground-ollama-llama32-vision
uv init --python 3.11
uv add ollama
touch main.py
curl -O https://ollama.com/public/ollama.png
main.py のファイルの中身を下記のように記述してください。公式のサンプルを実際のファイルパスにし、モデル名にタグをつけ、json で整形するよう変更を加えています。
import ollama
import json
response = ollama.chat(
model="llama3.2-vision:11b",
messages=[
{"role": "user", "content": "What is in this image?", "images": ["ollama.png"]}
],
)
print(json.dumps(response, indent=2, ensure_ascii=False))
では実行してみましょう。
uv run main.py
> uv run main.py
{
"model": "llama3.2-vision:11b",
"created_at": "2024-11-07T02:31:45.561316Z",
"message": {
"role": "assistant",
"content": "This image depicts the head of an alpaca. It has two small ears, big round eyes, and a nose that is shaped like a circle with a dot inside it. The mouth is not visible because it is behind the nose. The image does not show the body or legs, so it is unclear what this alpaca's expression would be."
},
"done_reason": "stop",
"done": true,
"total_duration": 1639905459,
"load_duration": 23017959,
"prompt_eval_count": 18,
"prompt_eval_duration": 184000000,
"eval_count": 73,
"eval_duration": 1383000000
}
(参考訳)この画像はアルパカの頭を描いたものです。2 つの小さな耳、大きな丸い目、そして中に点がある円のような形の鼻があります。口は鼻の後ろにあるため見えません。画像には体や足が写っていないため、このアルパカの表情は不明です。
OCR 用にはまだまだ道のりは長いかと思いますが、description タスクのプロプライエタリモデルのリプレイスにはなかなか良いのではないでしょうか?
最後に 90B も動かして終わりにしましょう。レスポンスは変わるのでしょうか?
> ollama run llama3.2-vision:90b "What is in this image? $HOME/Downloads/ollama.png"
Added image '/Users/username/Downloads/ollama.png'
The image features a stylized illustration of an alpaca, showcasing its distinctive characteristics. The animal's head is prominently displayed, with two small ears positioned on top
and large eyes that are not fully visible due to the cropping of the image. A long neck supports the head, which is adorned with soft fur. The body of the alpaca is also covered in
this same type of fur, adding to its endearing appearance.
In terms of coloration, the alpaca's coat features a combination of white and brown hues, creating a visually appealing contrast that enhances its overall charm. Overall, the image
presents a delightful representation of an alpaca, highlighting its unique physical attributes and captivating personality.
(参考訳)この画像には、アルパカの独特の特徴を示す様式化されたイラストが描かれています。動物の頭が目立つように描かれており、その上に 2 つの小さな耳があり、大きな目は画像のトリミングにより完全には見えません。長い首が頭を支え、柔らかい毛皮で飾られています。アルパカの体も同じ種類の毛皮で覆われており、愛らしい外観になっています。色彩に関しては、アルパカの毛皮は白と茶色の組み合わせが特徴で、視覚的に魅力的なコントラストを生み出し、全体的な魅力を高めています。全体として、この画像はアルパカの楽しい表現を示し、そのユニークな身体的特徴と魅惑的な性格を強調しています。
なかなかよさそうな出力を返してくれるようになりました。
以上です。