注釈

こんにちは。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(デスクトップアプリ)にインストール

  1. Ollama Download Page から Ollama をダウンロードしてインストールします。

    ../_images/llm_ollama_download.png
  2. Ollama アプリを開き、 Model Selector に移動して検索バーでモデルを探します。例えば、 llama3.2:3b と入力します(小さく軽量で、最初に試すのに適したモデルです)。

    ../_images/llm_ollama_choose.png
  3. ダウンロードが完了したら、チャットウィンドウに「Hi」などの簡単な文章を入力してみてください。初回利用時には、Ollama が自動的に必要なデータのダウンロードを開始します。

    ../_images/llm_olama_llama_download.png
  4. Go to Settings → enable Expose Ollama to the network. This allows your Raspberry Pi to connect to it over LAN.

    ../_images/llm_olama_windows_enable.png

警告

次のようなエラーが表示される場合:

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.8bphi3: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 のチェックなどに拡張できます。

始める前に

  1. 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 のような小さいモデルを推奨します。

    ../_images/llm_ollama_image_model.png

デモを実行

  1. サンプルフォルダに移動し、スクリプトを実行します:

    cd ~/fusion-hat/examples
    python3 llm_ollama_with_image.py
    
  2. 実行時の動作:

    • プログラムがウェルカムメッセージを表示し、入力( >>> )を待ちます。

    • 何かを入力するたびに (例:「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 を確保してください。