← Log に戻る

🍓 Raspberry Piの導入 [07] Raspberry Pi で Ollama と軽量モデルを試す

ぴーちゃん
Raspberry Pi DevLog PochomLab

Raspberry Pi 4 の導入シリーズ

👀目次


🔥Raspberry Piで軽量モデルを動かしてみる

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

今回は、Raspberry Pi 4 8GB に Ollama を入れて、Raspberry Pi 自身で軽量モデルを動かしてみます。

あわせて、応答速度・発熱・体感の重さも確認し、Raspberry Pi 単体でどのくらいローカルLLMを扱えるのかを見ていきます。


✅事前確認

まず、Raspberry Pi 側でOSやCPU、メモリ、ストレージの状態を確認しておきます。

OSとCPUの確認です。

$ uname -a

メモリの確認です。

$ free -h

ストレージの確認です。

$ df -h

CPU温度の確認です。

$ vcgencmd measure_temp

vcgencmd が使えない場合は、次のコマンドでインストールできます。

$ sudo apt install -y libraspberrypi-bin

ここでは、Ollama を入れる前の状態を確認しておくことで、あとから発熱や負荷の変化を見やすくしておきます。

各コマンドを実行した結果


🔃OSを更新する

Ollama をインストールする前に、Raspberry Pi OS を更新しておきます。

$ sudo apt update
$ sudo apt upgrade -y

必要であれば再起動します。

$ sudo reboot

📥Ollamaをインストールする

Linux版の Ollama は、公式ダウンロードページで次のインストールコマンドが案内されています。

$ curl -fsSL https://ollama.com/install.sh | sh

インストール後、Ollama が使えるようになっているか確認します。

$ which ollama
$ ollama --version

続いて、サービスの状態を確認します。

$ systemctl status ollama

動いていない場合は、次のコマンドで起動します。

$ sudo systemctl start ollama

自動起動も有効にしておきます。

$ sudo systemctl enable ollama

最後に、API が応答するか確認します。

$ curl http://localhost:11434/api/tags

まだモデルを入れていない場合でも、JSONが返ってくれば Ollama 自体は動作しています。


🤖軽量モデルを入れる

Raspberry Pi 4 8GB で試すため、最初は 0.5B〜1B台 の軽量モデルから始めます。

まずは、かなり小さいモデルから確認します。

$ ollama pull qwen2.5:0.5b
$ ollama pull tinyllama

Ollama のライブラリでは、Qwen2.5 は 0.5b、1.5b、3b など複数のサイズが用意されています。

Raspberry Pi での軽量検証なら、まずは 0.5b から始めるのが安全そうです。

余裕がありそうなら、次にこのあたりも試してみます。

$ ollama pull qwen2.5:1.5b
$ ollama pull gemma3:1b

最後に、ストレステストとして少し大きめのモデルも試してみます。

$ ollama pull gemma3:4b

4Bクラスになると、Raspberry Pi 4 ではかなり重くなる可能性がありますが、実際にどのくらい動くのか確認してみます。


⌨️CLIで動作確認

まずは CLI からモデルを起動してみます。

$ ollama run qwen2.5:0.5b

プロンプト例です。

> 日本語で短く自己紹介してください。

これで応答が返ってくれば、Ollama とモデルの基本的な動作確認は完了です。

CLIで動作を確認した画像


📡PythonからRaspberry Pi自身のOllamaへ接続する

[06] では、Raspberry Pi から PochomLabマシンの Ollama へリクエストを送りました。

今回は、Raspberry Pi 自身で動いている Ollama にリクエストを送ります。

ollama_pi_test.py

import time
import requests

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

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

start = time.time()

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

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

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

実行します。

$ python ollama_pi_test.py

このスクリプトでは、応答内容と実行時間を表示しています。

同じモデルでも、初回はモデルの読み込みに時間がかかるため、2回目の応答時間は初回より短くなりました。


📊結果一覧

実際に試した結果は、以下のようになりました。

モデル容量初回応答時間2回目応答時間CPU温度メモ
qwen2.5:0.5b397MB10.33 sec1.52 sec42.3℃
tinyllama637MB8.14 sec2.68 sec43.3℃日本語が不自然
gemma3:1b815MB7.24 sec2.17 sec43.3℃
qwen2.5:1.5b986MB9.54 sec2.32 sec43.8℃
gemma3:4b3.3GB24.18 sec6.46 sec45.2℃動作が重い

今回の範囲では、0.5B〜1.5Bクラスのモデルは、Raspberry Pi 4 8GB でも動作確認用としては十分試せる印象でした。

一方で、4Bクラスになると応答までの待ち時間がかなり長くなり、軽快に使うには少し厳しい印象です。

応答結果のスクリーンショットもいくつか載せておきます。

tinyllama の応答結果です。 tinyllamaの応答結果画像

gemma3:4b の応答結果です。 gemma3:4b の応答結果画像


✍️今回の整理

今回は、Raspberry Pi 4 8GB に Ollama をインストールし、Pythonプログラムからリクエストを送って、軽量モデルの動作を確認しました。

実行速度からすると、0.5B〜1.5B が現実的な選択肢になりそうです。

4Bモデルも動作はしましたが、実行速度の面では Raspberry Pi 4 で扱うには厳しい結果となりました。

次回は、今回の結果を踏まえて、Raspberry Pi 上で簡単な応答プログラムを作っていきます。