注釈
こんにちは。SunFounder Raspberry Pi & Arduino & ESP32 Facebook 愛好家コミュニティへようこそ! Raspberry Pi、Arduino、ESP32 について、仲間の愛好家と一緒にさらに深く探求しましょう。
参加する理由
専門的なサポート :コミュニティメンバーや公式チームの支援を受けて、購入後の問題や技術的な課題を解決できます。
学びと共有 :ヒントやチュートリアルを交換し、スキルを向上させましょう。
限定先行情報 :新製品の発表やプレビュー情報をいち早く入手できます。
特別割引 :最新製品を対象とした限定割引をお楽しみいただけます。
季節限定プロモーションとプレゼント企画 :プレゼントキャンペーンや祝日限定のプロモーションに参加できます。
👉 私たちと一緒に探求し、創造する準備はできましたか? [here] をクリックして、今すぐ参加しましょう!
4. Ollama で Text / Vision / Talk
このレッスンでは、ローカルで大規模言語モデルおよびビジョンモデルを実行できるツールである Ollama の使い方を学びます。Ollama のインストール、モデルのダウンロード、そして Fusion HAT+ を接続する方法を紹介します。
この設定により、Fusion HAT+ はカメラでスナップショットを撮影でき、モデルが 見て説明 します。画像についてどんな質問でもでき、モデルは自然言語で返信します。
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 を直接動かしたい場合:
64 ビット版 Raspberry Pi OS を使用する
強く推奨: Raspberry Pi 5( 16GB RAM )
以下のコマンドを実行してください:
# Install Ollama
curl -fsSL https://ollama.com/install.sh | sh
# Pull a lightweight model (good for testing)
ollama pull llama3.2:3b
# Quick run test (type 'hi' and press Enter)
ollama run llama3.2:3b
# Serve the API (default port 11434)
# Tip: set OLLAMA_HOST=0.0.0.0 to allow access from LAN
OLLAMA_HOST=0.0.0.0 ollama serve
Mac / Windows / Linux(デスクトップアプリ)にインストール
Ollama Download Page から Ollama をダウンロードしてインストールします。
Ollama アプリを開き、 Model Selector に移動して検索バーでモデルを探します。例えば、
llama3.2:3bと入力します(小さく軽量で、最初に試すのに適したモデルです)。
ダウンロードが完了したら、チャットウィンドウに「Hi」などの簡単な文章を入力してみてください。初回利用時には、Ollama が自動的に必要なデータのダウンロードを開始します。
Go to Settings → enable Expose Ollama to the network. This allows your Raspberry Pi to connect to it over LAN.
警告
次のようなエラーが表示される場合:
Error: model requires more system memory ...
モデルがマシンに対して大きすぎます。より小さいモデル を使用するか、RAM の多いコンピュータに切り替えてください。
2. Ollama をテストする
Ollama のインストールが完了し、モデルの準備ができたら、最小限のチャットループで素早く動作確認できます。
プログラムを実行
cd ~/fusion-hat/examples sudo python3 llm_ollama.py
これで、ターミナルから Fusion HAT+ と直接チャットできます。
Ollama Hub で提供されている 任意のモデル を選べますが、RAM が 8~16GB しかない場合は、小さいモデル(例:
moondream:1.8b、phi3:mini)がおすすめです。コードで指定するモデル名が、Ollama ですでに pull 済みのモデルと一致していることを確認してください。
exitまたはquitを入力すると、プログラムを終了します。接続できない場合は、Ollama が起動していることを確認してください。リモートホストを使用している場合は、両方のデバイスが同じ LAN 上にあることも確認してください。
コード
from fusion_hat.llm import Ollama
INSTRUCTIONS = "You are a helpful assistant."
WELCOME = "Hello, I am a helpful assistant. How can I help you?"
# Change this to your computer IP, if you run it on your pi, then change it to localhost
llm = Ollama(
ip="localhost",
model="llama3.2:3b"
)
# Set how many messages to keep
llm.set_max_messages(20)
# Set instructions
llm.set_instructions(INSTRUCTIONS)
# Set welcome message
llm.set_welcome(WELCOME)
print(WELCOME)
while True:
input_text = input(">>> ")
# Response without stream
# response = llm.prompt(input_text)
# print(f"response: {response}")
# Response with stream
response = llm.prompt(input_text, stream=True)
for next_word in response:
if next_word:
print(next_word, end="", flush=True)
print("")
3. Ollama で Vision Talk
このデモでは、質問を 入力するたびに Pi カメラがスナップショットを撮影します。プログラムは、 入力したテキスト + 新しい写真 を Ollama 経由でローカルのビジョンモデルに送信し、モデルの回答を平易な英語でストリーミング表示します。これは最小限の「 see & tell 」のベースラインで、後から色/顔/QR のチェックなどに拡張できます。
始める前に
Open the Ollama app (or run the service) and make sure a vision-capable model is pulled.
十分なメモリ( 16GB RAM 以上)がある場合は、
llava:7bを試すこともできます。RAM が 8GB のみの場合は、
moondream:1.8bまたはgranite3.2-vision:2bのような小さいモデルを推奨します。
デモを実行
サンプルフォルダに移動し、スクリプトを実行します:
cd ~/fusion-hat/examples python3 llm_ollama_with_image.py
実行時の動作:
プログラムがウェルカムメッセージを表示し、入力(
>>>)を待ちます。何かを入力するたびに (例:「hello」、「Is there yellow?」、「Any faces?」、「What is on the desk?」)次を実行します:
Pi カメラから 写真を撮影 し(
/tmp/llm-img.jpgに保存)、Ollama 経由で テキスト + 写真 をビジョンモデルへ送信し、
モデルの回答をターミナルへ ストリーミング表示 します。
exitまたはquitを入力すると、プログラムを終了します。
コード
from fusion_hat.llm import Ollama
from picamera2 import Picamera2
import time
'''
You need to setup ollama first, see llm_local.py
You need at leaset 8GB RAM to run llava:7b large multimodal model
'''
INSTRUCTIONS = "You are a helpful assistant."
WELCOME = "Hello, I am a helpful assistant. How can I help you?"
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
)
# Set how many messages to keep
llm.set_max_messages(20)
# Set instructions
llm.set_instructions(INSTRUCTIONS)
# Set welcome message
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(">>> ")
# Capture image
img_path = '/tmp/llm-img.jpg'
camera.capture_file(img_path)
# Response without stream
# response = llm.prompt(input_text, image_path=img_path)
# print(f"response: {response}")
# Response with stream
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 を確保してください。