← Log に戻る

🍓 Raspberry Piの導入 [06] Raspberry Pi からローカルLLMへ接続する

ぴーちゃん
Raspberry Pi DevLog PochomLab

Raspberry Pi 4 の導入シリーズ

👀目次


🎯Raspberry PiからローカルLLMへ接続できるか試してみる

前回は、Raspberry Pi 側で Python の開発環境を整えました。

今回は、その Python 環境から、LAN内にある PochomLabマシンで動いているローカルLLMへ接続してみます。

Raspberry Pi 本体で重いLLMを動かすのではなく、推論は PochomLabマシン側で行い、Raspberry Pi からはネットワーク越しにリクエストを送る構成です。

この形にしておくと、Raspberry Pi は軽い処理やセンサー、簡単な入出力を担当し、LLMの処理は性能の高いマシン側に任せることができます。


🦙Ollama が動いているか確認する

まず、PochomLabマシン側で Ollama が動作しているか確認します。

PowerShell または コマンドプロンプトで、次のコマンドを実行します。

ollama list

インストール済みのモデル一覧が表示されればOKです。

動作確認をする場合は、使用するモデルを指定して起動します。

ollama run gemma3:12b

すでに別のモデルを使っている場合は、そのモデル名で確認します。

ollama run <model-name>

インストール済みのモデル一覧が表示されれば、PochomLabマシン側の Ollama は起動確認できています。

Ollamaのモデル一覧を確認している画面


📍ローカルIPアドレスを確認する

次に、Raspberry Pi から接続するために、PochomLabマシンのローカルIPアドレスを確認します。

Windowsなら PowerShell または コマンドプロンプトで、次のコマンドを実行します。

ipconfig

Wi-Fi または Ethernet の項目にある IPv4 アドレスを確認します。

Windowsでipconfigを実行してIPv4アドレスを確認している画面

この場合、Raspberry Pi から見た Ollama API のURLは次のようになります。

http://192.168.68.61:11434

Ollama の標準ポートは 11434 です。


✅Raspberry Piから疎通確認する

ここからは Raspberry Pi 側で作業します。

まず、Raspberry Pi から PochomLabマシンへネットワーク的に届くかを ping で確認します。

ping 192.168.68.61

応答が返ってくれば、少なくともネットワーク上では PochomLabマシンが見えています。

ping画面

次に、curl を使って Ollama API にアクセスできるか確認します。

curl http://192.168.68.61:11434/api/tags

モデル一覧のような JSON が返ってくれば、Raspberry Pi から PochomLabマシン上の Ollama が見えています。

{
  "models": [
    ...
  ]
}

ここまで確認できれば、Python からも同じURLへリクエストを送れる状態になっています。

モデル一覧画面


➡️PythonからOllama APIに送る

前回の Python環境を整える で作った作業フォルダに入ります。

cd ~/projects/pochomlab-pi
source .venv/bin/activate

まず、ollama_test.py を作ります。

nano ollama_test.py

中身は次のようにします。

import requests

OLLAMA_URL = "http://192.168.68.61:11434/api/generate"

payload = {
    "model": "gemma3:12b",
    "prompt": "日本語で短く挨拶してください。",
    "stream": False,
}

response = requests.post(OLLAMA_URL, json=payload, timeout=120)
response.raise_for_status()

data = response.json()
print(data["response"])

保存したら実行します。

python ollama_test.py

日本語の返答が表示されれば成功です。

この時点で、Raspberry Pi の Python プログラムから、PochomLabマシン側のローカルLLMへリクエストを送れることが確認できました。

Raspberry PiのPythonからOllama APIへリクエストを送り返答が返ってきた画面


⏱️返答にかかる時間を計測してみる

次に、Pythonコードに少し加筆して、返答にかかる時間を計測してみます。

import time
import requests

OLLAMA_URL = "http://192.168.68.61:11434/api/generate"

payload = {
    "model": "gemma3:12b",
    "prompt": "日本語で短く挨拶してください。",
    "stream": False,
}

start = time.time()

response = requests.post(OLLAMA_URL, json=payload, timeout=120)
response.raise_for_status()

elapsed = time.time() - start
data = response.json()

print(data["response"])
print(f"\nElapsed: {elapsed:.2f} sec")

実行します。

python ollama_test.py

最初の1回目は、モデルのロードが入るため、少し時間がかかります。

今回の環境では、最初の呼び出しで約4.7秒ほどかかりました。 2回目以降はモデルが読み込まれた状態になるため、およそ0.8秒ほどで返答が返ってきました。

この差を見るだけでも、ローカルLLMを使うときは「初回のロード時間」と「ロード後の応答時間」を分けて考えた方がよさそうです。

Raspberry PiのPythonからOllama APIへ送信し返答時間を計測している画面


✍️今回の整理

今回は、Raspberry Pi から PochomLabマシン上で動いているローカルLLMへ接続し、Pythonプログラムからリクエストを送るところまで確認しました。

今回確認した流れは、次の通りです。

  • PochomLabマシン側で Ollama の動作を確認する
  • PochomLabマシンのローカルIPアドレスを確認する
  • Raspberry Pi から pingcurl で疎通確認する
  • Python から Ollama API にリクエストを送る
  • 返答にかかる時間を計測する

これで、Raspberry Pi からローカルLLMを呼び出すための最初の確認ができました。

次回は、Raspberry Pi にも Ollama をインストールし、軽量モデルを動かしてみます。