注釈
こんにちは、SunFounderのRaspberry Pi & Arduino & ESP32愛好家コミュニティへようこそ!Facebook上でRaspberry Pi、Arduino、ESP32についてもっと深く掘り下げ、他の愛好家と交流しましょう。
参加する理由は?
エキスパートサポート:コミュニティやチームの助けを借りて、販売後の問題や技術的な課題を解決します。
学び&共有:ヒントやチュートリアルを交換してスキルを向上させましょう。
独占的なプレビュー:新製品の発表や先行プレビューに早期アクセスしましょう。
特別割引:最新製品の独占割引をお楽しみください。
祭りのプロモーションとギフト:ギフトや祝日のプロモーションに参加しましょう。
👉 私たちと一緒に探索し、創造する準備はできていますか?[here]をクリックして今すぐ参加しましょう!
17. Ollama を使った Text Vision Talk
このレッスンでは、大規模言語モデル(LLM)とビジョンモデルをローカルで動かすツール Ollama の使い方を学びます。 Ollama のインストール、モデルのダウンロード、PiCar-X との接続方法を紹介します。
このセットアップにより、PiCar-X がカメラでスナップショットを撮り、 モデルがそれを「見て、説明」することができるようになります。 つまり、画像について自由に質問すると、モデルが自然な言葉で答えてくれるようになります。
始める前に
以下を完了していることを確認してください:
すべてのモジュールをインストールする(重要) —
robot-hat、vilib、picar-xモジュールをインストールし、その後スクリプトi2samp.shを実行します。
1. Ollama(LLM)のインストールとモデルのダウンロード
Ollama は以下のどちらにでもインストールできます:
Raspberry Pi(ローカル実行)
同じローカルネットワーク内の別のコンピュータ(Mac / Windows / Linux)
ハードウェア別の推奨モデル
Ollama Hub にある任意のモデルを選べます。 モデルには 3B、7B、13B、70B… などさまざまなサイズがあります。 小さいモデルは軽くて速い一方、大きなモデルは高品質ですが高性能なハードウェアが必要です。
以下の表を参考に、デバイスに合ったモデルサイズを選びましょう。
モデルサイズ |
最小RAM要件 |
推奨ハードウェア |
|---|---|---|
約3Bパラメータ |
8GB(16GB推奨) |
Raspberry Pi 5(16GB)または中性能PC/Mac |
約7Bパラメータ |
16GB以上 |
Pi 5(16GB、ぎりぎり動作)または中性能PC/Mac |
約13Bパラメータ |
32GB以上 |
RAMを多く積んだデスクトップPC/Mac |
30B以上 |
64GB以上 |
ワークステーション/サーバー/GPU推奨 |
70B以上 |
128GB以上 |
複数GPU搭載の高性能サーバー |
Raspberry Pi にインストールする場合
Raspberry Pi に Ollama を直接インストールして実行する場合:
64bit版 Raspberry Pi OS を使用
強く推奨: Raspberry Pi 5(16GB RAM)
以下のコマンドを実行します:
# Ollama をインストール
curl -fsSL https://ollama.com/install.sh | sh
# 軽量モデルを取得(テストに最適)
ollama pull llama3.2:3b
# 簡単な実行テスト('hi' と入力して Enter)
ollama run llama3.2:3b
# API を起動(デフォルトポート11434)
# LANアクセスを許可する場合は以下のように設定
OLLAMA_HOST=0.0.0.0 ollama serve
Mac / Windows / Linux(デスクトップ)にインストール
Ollama Download Page から Ollama をダウンロードしてインストール。
Ollama アプリを開き、Model Selector でモデルを検索。 例えば、軽量な
llama3.2:3bを入力して選択。
ダウンロード完了後、チャットウィンドウで「Hi」と入力すると、自動的にモデルが起動します。
Settings → Expose Ollama to the network を有効化します。 これで Raspberry Pi から LAN 経由で接続可能になります。
警告
以下のようなエラーが出た場合:
Error: model requires more system memory ...
→ モデルが大きすぎてマシンのメモリが不足しています。 小さいモデルを使用 するか、メモリの多いコンピュータに切り替えてください。
2. Ollama のテスト
Ollama のインストールとモデルの準備が完了したら、最小限のチャットループで簡単にテストできます。
手順
新しいファイルを作成:
cd ~/picar-x/example nano test_llm_ollama.py
以下のコードを貼り付けて保存(
Ctrl+X→Y→Enter):from picarx.llm import Ollama INSTRUCTIONS = "You are a helpful assistant." WELCOME = "Hello, I am a helpful assistant. How can I help you?" # If Ollama runs on the same Raspberry Pi, use "localhost". # If it runs on another computer in your LAN, replace with that computer's IP address. llm = Ollama( ip="localhost", model="llama3.2:3b" # you can replace with any model ) # Basic configuration llm.set_max_messages(20) llm.set_instructions(INSTRUCTIONS) llm.set_welcome(WELCOME) print(WELCOME) while True: text = input(">>> ") if text.strip().lower() in {"exit", "quit"}: break # Response with streaming output response = llm.prompt(text, stream=True) for token in response: if token: print(token, end="", flush=True) print("")
プログラムを実行:
python3 test_llm_ollama.pyこれで、PiCar-X とターミナルから直接チャットできます。
Ollama Hub にある 任意のモデル を選択可能ですが、RAM が 8〜16GB しかない場合は
moondream:1.8bやphi3:miniなどの小型モデルを推奨。コードに指定したモデル名と、Ollama で
pullしたモデル名が一致していることを確認。exitまたはquitと入力するとプログラムを終了します。接続できない場合は、Ollama が起動しているか、リモート利用時は両方のデバイスが同一 LAN 上にあるかを確認してください。
3. Ollamaとのビジョン対話
このデモでは、 質問を入力するたびに Pi カメラでスナップショットを撮影 します。 プログラムはあなたの入力テキストと撮影した写真を、Ollama のローカルビジョンモデルに送信し、 モデルが英語でストリーミング返信を返します。 これは「見て、話す」シンプルなベースラインで、今後カラー/顔/QR認識などにも拡張可能です。
事前準備
Ollama アプリ(またはサービス)を起動し、 ビジョン対応モデル を pull しておく。
メモリが 16GB 以上ある場合 →
llava:7bがおすすめ。メモリが 8GB の場合 →
moondream:1.8bやgranite3.2-vision:2bのような軽量モデルを推奨。
デモの実行
サンプルフォルダへ移動してスクリプトを実行:
cd ~/picar-x/example python3 17.text_vision_talk.py
実行時の流れ:
プログラムがウェルカムメッセージを表示し、
>>>で入力待ち。何か入力するたびに (例:「hello」「黄色はある?」「顔はある?」「机の上に何がある?」など):
Pi カメラで写真を撮影(
/tmp/llm-img.jpgに保存)テキストと画像を Ollama 経由でビジョンモデルに送信
モデルからの応答をストリーミングでターミナルに表示
exitまたはquitと入力すると終了します。
from picarx.llm import Ollama
from picamera2 import Picamera2
import time
"""
You need to set up Ollama first.
Note: At least 8GB RAM is recommended for small vision models (e.g., moondream:1.8b).
For llava:7b, more memory is preferred (≥16GB).
"""
INSTRUCTIONS = "You are a helpful assistant."
WELCOME = "Hello, I am a helpful assistant. How can I help you?"
# If Ollama runs on the same Pi, use "localhost".
# If it runs on another computer in your LAN, replace with that computer's IP.
llm = Ollama(
ip="localhost", # e.g., "192.168.100.145" if remote
model="llava:7b" # change to "moondream:1.8b" or "granite3.2-vision:2b" for 8GB RAM
)
# Basic configuration
llm.set_max_messages(20)
llm.set_instructions(INSTRUCTIONS)
llm.set_welcome(WELCOME)
# Init camera
camera = Picamera2()
config = camera.create_still_configuration(
main={"size": (1280, 720)},
)
camera.configure(config)
camera.start()
time.sleep(2)
print(WELCOME)
while True:
input_text = input(">>> ")
if input_text.strip().lower() in {"exit", "quit"}:
break
# Capture image
img_path = "/tmp/llm-img.jpg"
camera.capture_file(img_path)
# Response with stream (text + image)
response = llm.prompt(input_text, stream=True, image_path=img_path)
for next_word in response:
if next_word:
print(next_word, end="", flush=True)
print("")
トラブルシューティング
「model requires more system memory ...」のようなエラーが出る
モデルが大きすぎて、デバイスのメモリが不足しています。
moondream:1.8bやgranite3.2-vision:2bのような小型モデルを使用してください。または、RAM の多いマシンに切り替えて、Ollama をネットワーク越しに利用してください。
Ollama に接続できない(connection refused)
以下を確認してください:
Ollama が実行中であること(
ollama serveまたはデスクトップアプリが開いている)。リモート利用の場合、Ollama の設定で Expose to network が有効になっている。
コード内の
ip="..."が正しい LAN IP アドレスになっている。両方のデバイスが同じローカルネットワーク上にあることを確認する。
Pi カメラで何も撮影できない
Picamera2がインストールされ、テストスクリプトで正常に動作するか確認する。カメラケーブルが正しく接続され、
raspi-configで有効化されていることを確認する。スクリプトが
/tmp/llm-img.jpgへの書き込み権限を持っているか確認する。
出力が遅い
小さいモデルを使うと応答速度は速くなるが、返答内容はシンプルになる傾向があります。
カメラの解像度を下げる(例:1280×720 → 640×480)と画像処理が速くなります。
Pi 上で他のプログラムを閉じて、CPU と RAM を解放してください。