2026/01/21追記:CPU N100、12GBメモリのWindowsPCでllama.cppで動作したところ10tokens/sというスピードでした。
前回はGPUなしで動く!1GB小型LLM「LFM 2.5」の導入方法と実力検証という内容で、軽量なLLMモデルLFM 2.5をGPUのないノートPC環境で動かす方法を紹介しました。
記事の最後にRaspberryPiでも動作を試してみたいという風に結んでいましたが、Ollamaではモデルが対応しておらず、LM Studioは動作しないので、どうやって試すかを考えていました。いろいろ考えて、そういえば…llama.cppが動作したのではと思いました🤔 個人的には、OllamaやLM StudioのようにWebインターフェース無いしな🥲…と思っていたのですが、昨年末辺りにllama.cppにもWebインターフェースが追加され、その上APIサーバーとしても動作するようになっていたようです。
そういうわけで、今回はllama.cppをRaspberry Piにインストールして試してみました。
llama.cppとは
あまり使ったことが無い方もいるとは思うので、簡単に説明します。
llama.cppは、Meta社のLLaMAモデルをC/C++で実装した軽量な推論エンジンです。GPUがなくてもCPUのみで動作し、ARMアーキテクチャもサポートしているため、Raspberry Piでも動作します。また、モデルの変換や量子化ツールも含まれており、軽量モデルを効率的に動かすことができます。LFM 2.5で公開されているGGUF形式のモデルもllama.cppで動作します。
LinuxやmacOS、Windowsでは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
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 PiのIPアドレスを使って他のPCやスマホからもアクセスできます。

事前に、使用するLLMモデルはHugging FaceなどからGGUF形式のものをダウンロードしておいてください。 今回は軽量なLFM 2.5軽量モデルを使用します。
オプションの説明
| オプション | 説明 |
|---|---|
-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.cppをRaspberry Piにインストールして試してみました。
Ollamaでは対応していないLLMモデルも変換させることなく動作させることができ、更にllama-serverを使うことでWebインターフェースやOpenAI互換APIも利用可能です。OllamaにWebUIがあるので便利でしたが、これならllama.cppに移行するのも十分実用的だと感じました😊
また、llama-serverを使うことで家の中でLLMサーバーを立てるといったことも現実的です。IoT機器でのエッジAI実験や、オフライン環境でのLLM活用など、さまざまな用途も考えられそうですね。