みらいテックラボ

音声・画像認識や機械学習など, 週末プログラマである管理人が興味のある技術の紹介や実際にトライしてみた様子などメモしていく.

Paspberry PiでGemma 3 270Mを試してみる(1)

Googleが今年(2025)の8月中旬に新たにリリースした「Gemma 3 270M」[1]は, わずか2.7億パラメータという超軽量サイズでありながら, 日本語処理も可能なオープン非推論モデルである.

developers.googleblog.com

今回は, Raspberry Pi 5 8GBでGemma 3 270Mを動かし, ローカルLLMサーバを構築してみる.


1. インストール
Gemma 3を動かす方法[2]はいくつかあると思うが, 今回は大規模言語モデル(LLM)をローカル環境で簡単に実行・管理できるOllamaを使って行った.

1. 1 Ollamaのインストール[3]
以下のコマンドで, Ollamaをインストールする.

$ curl -fsSL https://ollama.com/install.sh | sh
>>> Installing ollama to /usr/local
>>> Downloading Linux arm64 bundle
######################################################################## 100.0%
>>> Creating ollama user...
>>> Adding ollama user to render group...
>>> Adding ollama user to video group...
>>> Adding current user to ollama group...
>>> Creating ollama systemd service...
>>> Enabling and starting ollama service...
Created symlink /etc/systemd/system/default.target.wants/ollama.service 竊・/etc/systemd/system/ollama.service.
>>> The Ollama API is now available at 127.0.0.1:11434.
>>> Install complete. Run "ollama" from the command line.
WARNING: No NVIDIA/AMD GPU detected. Ollama will run in CPU-only


1.2 Gemma 3 270Mのインストール
Ollamaを使って, Gemma 3 270Mモデルをインストールし, モデルを確認する.

$ ollama pull gemma3:270m 
pulling manifest 
pulling 735af2139dc6: 100% ▕██████████████████▏ 291 MB                         
pulling 4b19ac7dd2fb: 100% ▕██████████████████▏  476 B                         
pulling 3e2c24001f9e: 100% ▕██████████████████▏ 8.4 KB                         
pulling 339e884a40f6: 100% ▕██████████████████▏   61 B                         
pulling 74156d92caf6: 100% ▕██████████████████▏  490 B                         
verifying sha256 digest 
writing manifest 
success

$ ollama list
NAME           ID              SIZE      MODIFIED      
gemma3:270m    e7d36fb2c3b3    291 MB    7 minutes ago


1.3 Gemma 3の動作確認
Gemma 3 270Mに簡単なメッセージを渡し, 正常に動作しているか確認してみる.

$ ollama run gemma3:270m "Hello"
Hello! How can I help you today? 

正しくインストールできていれば, こんな感じで応答が返ってくると思う.


2. APIサーバ化
Gemma 3 270Mを他のPCからAPIアクセスできるようにし, ローカルLLMサーバ化する.

2.1 Ollamaのネットワーク設定
Ollamaは, インストール後に特に設定を行わなくても, "http://localhost:11434"からアクセスが可能である.
しかし, この状態では他のPCからのアクセスができないので, ネットワークの設定を行う.
具体的には, "override.conf"ファイルを以下のように作成する.

$ sudo mkdir -p /etc/systemd/system/ollama.service.d
$ sudo nano /etc/systemd/system/ollama.service.d/override.conf

[override.conf]

[Service]
Environment="OLLAMA_HOST=0.0.0.0"

Ollamaを再起動する.

$ sudo systemctl deamon-reload
$ sudo systemctl restart ollama

$ ss -tulpn | grep 11434
tcp   LISTEN 0      4096               *:11434            *:*  


2.2 APIの動作確認
他のPCから, 以下のようなコードを実行し, Raspberry Pi上で動作するGemma 3が応答するか試してみる.

[コード]

import json
import requests
import sys

API_SERVER_URL = "http://<Raspberry Piのアドレス>:11434/api/chat"

def main():
    headers = {"Content-Type": "application/json"}
    payload = {
        "model": "gemma3:270m",
        "messages": [{
            "role": "user",
            "content": "自己紹介してください",
        }]
    }

    with requests.post(API_SERVER_URL, headers=headers, json=payload, stream=True, timeout=60) as r:
        r.raise_for_status()
        chunks = []
        for line in r.iter_lines(decode_unicode=True):
            if not line:
                continue
            obj = json.loads(line)
            # /api/chat は各チャンクに message:{content:"..."} が入る
            msg = obj.get("message", {})
            chunks.append(msg.get("content", ""))
            if obj.get("done"):
                break

    text = "".join(chunks)
    print(text)

if __name__ == "__main__":
    main()

実行結果として, 例えば以下のように応答が返ってくれば, 正常に動作している.

私は、AIアシスタントとして、あなたの質問に答え、情報提供、翻訳、文章作成、コード生成など、様々なタスクを実行できます。

どのようなタスクをしたいか、具体的な指示を教えていただけると、より的確にサポートできます。例えば、

*   **質問に答える:** どんな質問でも、あなたの質問を具体的に、かつ正確に教えてください。
*   **情報提供:** 特定の分野に関する情報を、分かりやすく、かつ最新の情報を提供できます。
*   **文章作成:** 詩、レポート、ブログ記事、メール、プレゼンテーションなど、様々な文章を作成できます。
*   **コード生成:** 複雑なタスクを、Python、JavaScript、Rなど、さまざまな言語で実行できます。

何か特定のタスクに特化した場合は、遠慮なくお申し付けください。


今回は, Raspberry Pi 5上で, Ollamaを使用してGemma 3 270MをローカルLLMサーバ化するところまでを少しまとめてみた.
ローカルLLMには, 外部への情報漏洩リスク低減や高速な応答などのメリットがあり, 用途によってはクラウドLLMよりもローカルLLMの方がよい場合もあるので, 引き続き活用内容も含めて考えていきたい.

他のプラットフォーム, オープンモデルでも, Ollamaを使用すると簡単にローカルLLMサーバを構築できるので, 試してみてください.

---
[1] Gemma 3 270Mの概要: 超高効率 AI のためのコンパクト モデル
[2] Gemma のコンテンツ生成と推論を実行する | Google AI for Developers
[3] GitHub - ollama/ollama: Get up and running with OpenAI gpt-oss, DeepSeek-R1, Gemma 3 and other models.