【これなら実用できる!】Raspberry Pi 5 + llama.cpp + LFM 2.5でローカルLLM環境構築【実測値15tokens/s】

2026/01/21追記:CPU N100、12GBメモリのWindowsPCでllama.cppで動作したところ10tokens/sというスピードでした。

前回はGPUなしで動く!1GB小型LLM「LFM 2.5」の導入方法と実力検証という内容で、軽量なLLMモデルLFM 2.5GPUのないノートPC環境で動かす方法を紹介しました。

uepon.hatenadiary.com

記事の最後にRaspberryPiでも動作を試してみたいという風に結んでいましたが、Ollamaではモデルが対応しておらず、LM Studioは動作しないので、どうやって試すかを考えていました。いろいろ考えて、そういえば…llama.cppが動作したのではと思いました🤔 個人的には、OllamaLM StudioのようにWebインターフェース無いしな🥲…と思っていたのですが、昨年末辺りにllama.cppにもWebインターフェースが追加され、その上APIサーバーとしても動作するようになっていたようです。

そういうわけで、今回はllama.cppRaspberry Piにインストールして試してみました。

llama.cppとは

あまり使ったことが無い方もいるとは思うので、簡単に説明します。

llama.cppは、Meta社のLLaMAモデルをC/C++で実装した軽量な推論エンジンです。GPUがなくてもCPUのみで動作し、ARMアーキテクチャもサポートしているため、Raspberry Piでも動作します。また、モデルの変換や量子化ツールも含まれており、軽量モデルを効率的に動かすことができます。LFM 2.5で公開されているGGUF形式のモデルもllama.cppで動作します。

LinuxmacOSWindowsではGitHub上にバイナリが提供されていますが、Raspberry Pi向けのバイナリは提供されていないため、自分でビルドする必要があります。少しだけ手間がかかりますが、手順はそれほど難しくありません。

動作環境

推奨ハードウェア

推奨のハードウェアとしてはメモリが多いRaspberry Pi 5(8GBモデルや16GBモデル)となるでしょうが、Raspberry Pi 4(4GB/8GBモデル)でも動作します。ただし、メモリ容量に応じて動作可能なLLMサイズが制限されるのでその点は注意が必要です。

モデル メモリ 動作可能なLLMサイズ
Raspberry Pi 5 8GB 7Bモデル(量子化版)
Raspberry Pi 4 8GB 小さめのモデル
Raspberry Pi 4 4GB 2B程度まで?

今回はRaspberry Pi 5(8GBモデル)で試しました。

ビルド手順

1. 依存パッケージのインストール

cmake以外はデフォルトでインストールされていると思いますが、念のため以下のコマンドでインストールしておきます。

$ sudo apt update
$ sudo apt install cmake git

2. ソースコードの取得

GitHubからllama.cppソースコードをクローンします。

$ git clone https://github.com/ggerganov/llama.cpp
$ cd llama.cpp

github.com

3. ビルド(cmakeにて)

最新版ではcmakeを使ったビルドが推奨されています。

$ mkdir build
$ cmake -B build
$ cmake --build build --config Release -j4

ビルドには数分ほどかかります。

⚠️メモリ不足でビルドが失敗する場合

並列度を下げるか、スワップを増やしてください。以下は並列度を下げる例です。 メモリが少なければ-jオプションをなくすことも検討してください。

# 並列度を下げる方法
$ cmake --build build --config Release -j2

4. バイナリの確認

ビルドが成功すると、build/bin/ ディレクトリに以下のバイナリが生成されます。

$ ls build/bin/

様々なバイナリがありますが、主に使うのは以下のものになると思います。

バイナリ名 用途
llama-server OpenAI互換のHTTP APIサーバーおよびWebインターフェース
llama-cli CLIでの対話・推論
llama-quantize モデルの量子化
llama-bench ベンチマーク

今回使用する中心となるのはllama-serverです。これはWebインターフェースやAPIサーバーとして動作します。

llama-serverの起動

基本的な起動方法

基本的には以下のように、モデルファイル(.gguf形式)を指定して起動します。--portオプションでポート番号を指定します。

# 実行例
#./build/bin/llama-server -m models/your-model.gguf --host 0.0.0.0 --port 8080

$./build/bin/llama-server -m models/LFM2.5-1.2B-Instruct-Q4_K_M.gguf --host 0.0.0.0 --port 8080

起動後はブラウザでhttp://localhost:8080 にアクセスすると、Webインターフェースが表示されます。 また、Raspberry PiIPアドレスを使って他のPCやスマホからもアクセスできます。

事前に、使用するLLMモデルはHugging FaceなどからGGUF形式のものをダウンロードしておいてください。 今回は軽量なLFM 2.5軽量モデルを使用します。

huggingface.co

オプションの説明

オプション 説明
-m モデルファイル(.gguf)のパス
--host バインドするホスト(外部アクセスは0.0.0.0
--port ポート番号
-c コンテキスト長
-ngl GPUオフロードレイヤー数(RPiでは通常0)

実行の様子

今回はLFM 2.5モデルを使用していますが、かなり高速に動作します。 コーディングでは少し遅くなっていますが、15tokens/sくらいのスピードがでます。 簡単なやり取りなら20tokens/sも可能のようです。

👉️2026/01/21追記 CPU N100、12GBメモリのWindowsPCで動作させたところ、llama.cppでは10 tokens/s程度というスピードでした。

特にハードウエア的なアクセラレータなども不要で、このスピードが出るのであればかなり嬉しいですね。

APIエンドポイント

llama-serverはOpenAI互換のAPIを提供します。

エンドポイント 用途
POST /v1/chat/completions チャット補完
POST /v1/completions テキスト補完
GET /health ヘルスチェック

APIアクセス例

llama-serverはOpenAI互換APIを提供するため、さまざまな方法でアクセスできます。

curlコマンド

curl http://localhost:8080/v1/chat/completions \
  -H "Content-Type: application/json" \
  -d '{
    "messages": [{"role": "user", "content": "こんにちは"}]
  }'

Python(requestsライブラリの使用)

import requests

response = requests.post(
    "http://localhost:8080/v1/chat/completions",
    json={
        "messages": [{"role": "user", "content": "こんにちは"}]
    }
)
print(response.json())

Python(OpenAI公式ライブラリの使用)

OpenAI互換のため、公式ライブラリがそのまま使えます。

from openai import OpenAI

client = OpenAI(
    base_url="http://localhost:8080/v1",
    api_key="dummy"  # llama-serverはAPIキー不要だが、ライブラリが要求するため設定(空は不可)
)

response = client.chat.completions.create(
    model="local-model",
    messages=[{"role": "user", "content": "こんにちは"}]
)
print(response.choices[0].message.content)

おわりに

LFM 2.5のような軽量モデルの動作をするために、llama.cppRaspberry Piにインストールして試してみました。

Ollamaでは対応していないLLMモデルも変換させることなく動作させることができ、更にllama-serverを使うことでWebインターフェースやOpenAI互換APIも利用可能です。OllamaにWebUIがあるので便利でしたが、これならllama.cppに移行するのも十分実用的だと感じました😊

また、llama-serverを使うことで家の中でLLMサーバーを立てるといったことも現実的です。IoT機器でのエッジAI実験や、オフライン環境でのLLM活用など、さまざまな用途も考えられそうですね。

参考リンク

uepon.hatenadiary.com