注釈
こんにちは、SunFounder Raspberry Pi & Arduino & ESP32 Enthusiasts Community on Facebookへようこそ! Raspberry Pi、Arduino、ESP32について、愛好家仲間とより深く探求しましょう。
参加する理由
専門家によるサポート: コミュニティとチームの助けを借りて、アフターセールスの問題や技術的な課題を解決します。
学びと共有: ヒントやチュートリアルを交換して、スキルを向上させましょう。
先行プレビュー: 新製品の発表や先行情報をいち早く入手できます。
特別割引: 新製品の限定割引をお楽しみいただけます。
お祭りプロモーションとプレゼント: プレゼントキャンペーンやホリデープロモーションに参加しましょう。
👉 私たちと一緒に探求し、創造する準備はできましたか? [here] をクリックして、今すぐ参加しましょう!
4. Ollamaによるテキストビジョントーク
このレッスンでは、大規模言語モデルと視覚モデルをローカルで実行するツールである Ollama の使用方法を学びます。 Ollamaのインストール方法、モデルのダウンロード方法、そしてPironman 5 Pro MAXをOllamaに接続する方法を紹介します。
この設定により、Pironman 5 Pro MAXはカメラでスナップショットを撮影し、モデルが 画像を「見て」説明する ことができます — 画像について任意の質問をすると、モデルが自然言語で回答します。
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へのインストール
OllamaをRaspberry Pi上で直接実行する場合:
64-bit 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_HOST=0.0.0.0 ollama serve
Mac / Windows / Linuxへのインストール(デスクトップアプリ)
Ollama Download Page からOllamaをダウンロードしてインストールします
Ollamaアプリを開き、 Model Selector に移動して検索バーでモデルを探します。例えば、
llama3.2:3b(初心者向けの小型軽量モデル)と入力します。
ダウンロードが完了したら、チャットウィンドウに「Hi」のような簡単な文章を入力します。初回使用時にOllamaは自動的にダウンロードを開始します。
Settings → Expose Ollama to the network を有効にします。これにより、Raspberry PiがLAN経由で接続できるようになります。
警告
以下のようなエラーが表示された場合:
Error: model requires more system memory ...
モデルがお使いのマシンに対して大きすぎます。 より小さいモデル を使用するか、より多くのRAMを搭載したコンピュータに切り替えてください。
2. Ollamaのテスト
Ollamaがインストールされ、モデルの準備ができたら、最小限のチャットループで簡単にテストできます。
プログラムの実行
cd ~/sunfounder-voice-assistant/examples sudo python3 llm_ollama.py
これで、ターミナルから直接Pironman 5 Pro MAXとチャットできるようになります。
Ollama Hub で利用可能な 任意のモデル を選択できますが、8〜16GBのRAMしかない場合は、より小さいモデル(例:
moondream:1.8b、phi3:mini)をお勧めします。コードで指定したモデルが、Ollamaで既にダウンロード済みのモデルと一致していることを確認してください。
プログラムを停止するには
exitまたはquitと入力します。接続できない場合は、Ollamaが実行中であり、リモートホストを使用している場合は両方のデバイスが同じLAN上にあることを確認してください。
コード
from sunfounder_voice_assistant.llm import Ollama
INSTRUCTIONS = "You are a helpful assistant."
WELCOME = "Hello, I am a helpful assistant. How can I help you?"
# これをコンピュータのIPアドレスに変更してください。Piで実行する場合はlocalhostに変更します
llm = Ollama(
ip="localhost",
model="llama3.2:3b"
)
# 保持するメッセージ数を設定
llm.set_max_messages(20)
# 指示文を設定
llm.set_instructions(INSTRUCTIONS)
# ウェルカムメッセージを設定
llm.set_welcome(WELCOME)
print(WELCOME)
while True:
input_text = input(">>> ")
# ストリームなしの応答
# response = llm.prompt(input_text)
# print(f"response: {response}")
# ストリームありの応答
response = llm.prompt(input_text, stream=True)
for next_word in response:
if next_word:
print(next_word, end="", flush=True)
print("")
3. Ollamaによるビジョントーク
このデモでは、 質問を入力するたびに Piカメラがスナップショットを撮影します。 プログラムは 入力されたテキスト + 新しい写真 を、Ollama経由でローカルの視覚モデルに送信し、 モデルの回答をプレーンテキストでストリーム出力します。 これは最小限の「見て説明する」ベースラインであり、後で色検出・顔検出・QRコードチェックなどに拡張できます。
始める前に
Ollama アプリを開き(またはサービスを実行し)、 ビジョン対応モデル がダウンロードされていることを確認します。
十分なメモリ(≥16GB RAM)がある場合は、
llava:7bを試すことができます。8GB RAM しかない場合は、
moondream:1.8bやgranite3.2-vision:2bなどのより小さいモデルを推奨します。
デモの実行
サンプルフォルダに移動し、スクリプトを実行します:
cd ~/sunfounder-voice-assistant/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 sunfounder_voice_assistant.llm import Ollama
from picamera2 import Picamera2
import time
'''
事前に ollama のセットアップが必要です。llm_local.py を参照してください。
llava:7b のような大規模マルチモーダルモデルを実行するには、少なくとも8GBのRAMが必要です。
'''
INSTRUCTIONS = "You are a helpful assistant."
WELCOME = "Hello, I am a helpful assistant. How can I help you?"
llm = Ollama(
ip="localhost", # 例: "192.168.100.145"(リモートの場合)
model="llava:7b" # 8GB RAMの場合は "moondream:1.8b" または "granite3.2-vision:2b" に変更
)
# 保持するメッセージ数を設定
llm.set_max_messages(20)
# 指示文を設定
llm.set_instructions(INSTRUCTIONS)
# ウェルカムメッセージを設定
llm.set_welcome(WELCOME)
# カメラの初期化
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(">>> ")
# 画像の撮影
img_path = '/tmp/llm-img.jpg'
camera.capture_file(img_path)
# ストリームなしの応答
# response = llm.prompt(input_text, image_path=img_path)
# print(f"response: {response}")
# ストリームありの応答
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に接続できません(接続拒否)。
以下を確認してください:
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を解放してください。