LemonadeというAMDバックのローカルLLMサーバーをDebian上のAMD内蔵GPU(Radeon 760M)で動かしてみました。
以下の一連の投稿の第一弾です。
-
ASRock 4X4 BOX-8640U上のDebianでAMD iGPU(Radeon 760M)にLemonadeを動かすまで #Vulkan - Qiita
-
ASRock 4X4 BOX-8640U上のAMD iGPU(Radeon 760M )に Lemonadeを動かして、生成AIのローカル推論ベンチマーク #Vulkan - Qiita
-
ASRock 4X4 BOX-8640U上のProxmoxでLemonade Serverをsystemdデーモンとして常駐させる #Vulkan - Qiita
公式はUbuntu向けのPPAに移行していてDebianには直接インストールできないので、ソースからビルドすることになりました。
1. Lemonadeとは
Lemonade(lemonade-sdk/lemonade)はAMDが支援するオープンソースのローカルLLMサーバーです。llama.cppをバックエンドに、VulkanやROCm経由でAMD GPU上のLLMを動かせます。OpenAI互換APIを提供しているので、既存のツールにそのままつなぎやすいです。ROCmはAMD GPUドライバーが必要ですが、Vulkanであればmesa-vulkan-driversがLinuxにインストールされていれば動きます。
対応バックエンド:
| バックエンド | デバイス |
|---|---|
| llamacpp:vulkan | AMD iGPU/dGPU、CPU |
| llamacpp:rocm | 対応AMD GPU |
| llamacpp:cpu | CPU fallback |
Radeon 760M(gfx110X / RDNA3)はVulkanバックエンドで動作します。
2. 環境
2-1. ビルド環境(Proxmox LXCコンテナ)
コンパイルテスト用にProxmox上にLXCコンテナを立てました。
- OS: Ubuntu 24.04(Proxmox CT)
- メモリ: 11GB(重要。後述します)
- CPU: 8コア
2-2. 実機
ASRock Industrial 4X4 BOX-8640Uのベアボーンにメモリとストレージをフル実装した構成です。
| 項目 | スペック |
|---|---|
| ベアボーン | ASRock Industrial 4X4 BOX-8640U |
| CPU | AMD Ryzen 5 8640U (6コア12スレッド / 最大4.9GHz) |
| GPU | AMD Radeon 760M (RDNA3 / gfx110X) |
| メモリ | DDR5 96GB (48GB×2 / SO-DIMM フル実装) |
| ストレージ | NVMe M.2 2TB |
| OS | Debian 13 (Trixie) |
2-3. v10のバイナリ構成
v10でバイナリ名が大きく変わっているので注意が必要です。
| バイナリ | 役割 |
|---|---|
lemond |
HTTPサーバー本体(旧lemonade-router) |
lemonade |
CLIクライアント |
lemonade-server |
deprecated shim(使いません) |
インストール先は/opt/bin/です。PATHへの追加が必要になります。
3. ソースビルド
3-1. ビルド依存パッケージのインストール
apt install -y \
git \
cmake \
ninja-build \
build-essential \
libssl-dev \
pkg-config \
curl
3-2. クローン
git clone https://github.com/lemonade-sdk/lemonade.git
cd lemonade
3-3. setup.shの実行
./setup.sh
setup.shが不足パッケージを検出してapt installしてくれます。GTK3/AppIndicator3(トレイ用)や各種ライブラリも含みます。途中でインストール確認が出たらyで進めます。
最後に以下が出れば成功です:
[SUCCESS] CMake configured successfully
[SUCCESS] Setup completed successfully!
3-4. ビルド
cmake --build --preset default
OOMで死にました
最初はCTに4GBで、512MBのSwapしかなく、8コア並列でcc1plusが8プロセス同時起動してOOMで死にました。
c++: fatal error: Killed signal terminated program cc1plus
server.cppが巨大なのでコンパイル時のメモリ消費が激しいです。
メモリを11GBに増やしたら-j8でも問題なく通りました。最低8GB、できれば11GB以上を推奨します。
ビルド完了後の成果物:
ls -lh build/lemond build/lemonade build/lemonade-tray
# build/lemond 4.3MB サーバー本体
# build/lemonade 1.6MB CLIクライアント
# build/lemonade-tray 1.3MB システムトレイ
3-5. .debパッケージの生成
cd build
cpack
lemonade-server-10.0.1.x86_64.deb(約3.8MB)が生成されます。DEB/TGZ/STGZ/TZの複数形式が同時に出ます。
4. Debian 13(実機)へのインストール
4-1. .debを転送
CTから実機にscpで転送します。
# CT側で実行
scp ~/lemonade/build/lemonade-server-10.0.1.x86_64.deb root@<実機IP>:~/
4-2. インストール
apt install ./lemonade-server-10.0.1.x86_64.deb
4-3. libwebsocketsエラーの対処
Ubuntu 24.04でビルドしたバイナリをDebian 13に持っていくとlibwebsocketsのバージョン差異でエラーになります。
lemond: error while loading shared libraries: libwebsockets.so.19: cannot open shared object file
apt install -y libwebsockets19t64
これで解決します。
4-4. PATHの設定
/opt/binはデフォルトでPATHに入っていません。
export PATH=$PATH:/opt/bin
# 永続化
echo 'export PATH=$PATH:/opt/bin' >> ~/.bashrc
確認:
lemond --version # lemond version 10.0.1
lemonade --version # lemonade version 10.0.1
5. 動作確認
5-1. Vulkanバックエンドのインストールとサーバー起動
# サーバーをバックグラウンドで起動
lemond --llamacpp vulkan &
# Vulkanバックエンドのバイナリをダウンロード(初回のみ・約45MB)
lemonade recipes --install llamacpp:vulkan
ログにこれが出れば認識成功です:
ggml_vulkan: 0 = AMD Radeon Graphics (RADV PHOENIX) (radv) | uma: 1 | fp16: 1
5-2. system-infoでGPU確認
curl -s http://localhost:8000/api/v1/system-info | python3 -m json.tool | grep -A 6 "amd_igpu"
"amd_igpu": {
"available": true,
"family": "gfx110X",
"name": "110003",
"virtual_mem_gb": 46.8,
"vram_gb": 0.5
}
vram_gb: 0.5と小さく見えますが、virtual_mem_gb: 46.8がGTT(Graphics Translation Table)経由でシステムRAMをGPUメモリとして使える実質的な容量です。BIOS設定が低くても動きます。
5-3. 推論テスト
lemonade run Qwen3-0.6B-GGUF --llamacpp vulkan
モデルが未ダウンロードの場合は自動的にHuggingFaceから落としてくれます。
curl -s http://localhost:8000/api/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"model": "Qwen3-0.6B-GGUF",
"messages": [{"role": "user", "content": "日本語で自己紹介してください"}]
}' | python3 -m json.tool
5-4. 結果
| 項目 | 結果 |
|---|---|
| GPUオフロード | 29/29レイヤー全オフロード |
| Flash Attention | 自動有効化 |
| Prompt eval | 211 tokens/sec |
| Generation | 122 tokens/sec |
| TTFT | 76ms |
| VRAM使用 | 358MB(モデル) + 448MB(KVキャッシュ) = 約806MB |
Qwen3-0.6BでRadeon 760M / Vulkan経由で122 tok/s出ました。十分実用的な速度ですね。
まだVRAMのサイズが小さいので大きくしてから再度テストしたいと思います。
6. まとめ
6-1. インストール方法の選択
v10.0.1時点でのDebianへのインストール方法をまとめます:
| OS | 使える方法 |
|---|---|
| Ubuntu 24.04 |
ppa:lemonade-team/stableからapt install |
| Debian(全バージョン) | ソースビルド or Snap |
| Fedora | .rpm(GitHub Releases) |
DebianにPPAは使えません。 add-apt-repositoryコマンド自体が存在しませんし、そもそもPPAはUbuntu専用の仕組みです。v10.0.1から.debの直接配布も廃止されたので、Debianで使うなら今回のようにソースからビルドするのが現状一番クリーンな方法です。
6-2. ハマりポイントまとめ
| ポイント | 内容 |
|---|---|
| ビルドメモリ | 11GB以上推奨。並列コンパイル時にcc1plusがOOMで死にます |
| Debian 13の追加対応 | Ubuntu 24.04でビルドした.debはlibwebsockets19t64の追加が必要です |
| VRAMについて | BIOS設定が0.5GBでもGTT経由で46GB分使えます |
| バックエンド選択 | VulkanはMesa RADVで動きます。ROCmは/dev/kfdが必要でハードルが高いです |
Vulkan経由でほぼ設定なしにGPU推論が動いたのは素直に便利でした。大きいモデル(8B以上)はBIOSでUMA Frame Bufferを増やしてからテストする予定です。