ollamaのバージョン0.20.x以降でRadeon780MのiGPUが認識しなくなった不具合と、lemonadeの導入でRadeon780Mでの推論の稼働が復活した備忘録

不具合の前の状態

ollama 16.xではRadeon780Mで動作していた

  • rocmでは動かない
  • vulkanで動作(※環境変数にvulkan用の設定)
  • GPUが認識しない場合は、CPUで動作する

不具合のトリガー

ollama 20.xへのアップデート後にRadeon780Mが認識しなくなった

  • rocm最新版の再インストール
  • vulkanの再インストール
  • ollamaの再インストール
  • vulkanの環境変数を再割り当て

すべて効果なし


lemonadeを導入

これが少々メンドイ

  • docker版
    dockerを使う人で、カスタマイズが不要ならこれが無難
  • ubuntu
    aptパッケージだがdebian不可、snapが使われている危険性あり?
  • snap版パッケージ
    課金トラップなので使わない方がいい
  • fedora版
    fedoraのみでRedhatはない
  • arch版
    yayパッケージ
  • その他
    ソースビルド

ソースビルド

  • メモリ消費が大きい
    lemonadeのソースビルドの実行にはメモリ消費量が大きい。16GBだとSWAPを大きく割り当てても厳しい、32GBでもSWAPが無いとキツイかもしれない。

  • ストレージ消費も大きい
    ストレージの消費も大きい。ソースビルドで構築する場合フルビルドして小型のモデルを1つダウンロードする程度でもストレージを30GB以上消費する。

  • ビルド手順も要注意
    手順は複雑ではないが、バージョンによってCLIの引数やらツールが頻繁に変わるのでAIやまとめサイト等をアテにせず、公式の手順を熟読したほうが良い。

debian環境でのlemonadeのソースビルドの手順

※参考まで

サーバー用の実行ファイルを作成するまでならステップ数は少ない。
注意点としては、ビルド環境としてnode.js環境とrustcの最新版の環境を整える必要があり、lemonadeは環境設定のツールやコマンド引数が頻繁に変わる点にも警戒が必要。

lemonadeユーザー作成

username=lemonade
sudo useradd  --system  --create-home  --home-dir /opt/var/lib/$username  --shell /bin/bash  --user-group $username

git clone

※lemonade version10.2.0 で確認

git clone https://github.com/lemonade-sdk/lemonade

setup

cd lemonade
./setup.sh

Build the project

cmake --build --preset default

エラーがなければbuildディレクトリに実行ファイルが配置されている

buildから必要なファイルを配置する

実行ファイルを配置

sudo mkdir -p /opt/bin
sudo cp ./build/lemond  /opt/bin
sudo cp ./build/lemonade  /opt/bin
sudo cp ./build/lemonade-server  /opt/bin
sudo cp ./build/lemonade-tray  /opt/bin
sudo cp -r ./build/resources  /opt/bin/
sudo chmod  +x  /opt/bin/lemon*
sudo chown lemonade: /opt/bin/lemon*

systemctlサービス用

sudo cp ./build/lemond.service  /etc/systemd/system/
sudo systemctl daemon-reload

作業ディレクトリ

sudo mkdir -p /opt/var/lib/lemonade
sudo chown lemonade: /opt/var/lib/lemonade
sudo chmod +x /opt/var/lib/lemonade

サービスの実行

GPU設定が不要であれば、これでソースビルド版の導入が完成

sudo systemctl enable lemond 
sudo systemctl start lemond

AMD製GPUの登録

3月下旬のバージョンでは、hostのデフォルトはlocalhost(127.0.0.1)が指定されていたのだが、4月20日頃のバージョンからIPが指定されるようになってしまった。(ビルド仕様なのか環境依存なのかは不明)

myhost=xxx.xxx.xx.xxx  # IPアドレス
lemonade backends install llamacpp:rocm --host $myhost
lemonade backends install llamacpp:vulkan --force --host $myhost
lemonade pull gpt-oss-20b-mxfp4-GGUF  --host $myhost

当方の環境では、この設定でRadeon780Mでの推論が動くようになった。

動作確認

ターミナルを2つ起動する

ターミナル1:モニタリング

amdgpu_top

ターミナル2:推論実行

curl http://localhost:13305/v1/chat/completions \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gpt-oss-20b-mxfp4-GGUF",
    "messages": [
      {"role": "system", "content": "You are a helpful assistant."},
      {"role": "user", "content": "こんにちは、自己紹介してください"}
    ],
    "temperature": 0.7
  }'

結果

amdgpu_topのVRAMとGRBM/GRBM2の棒グラフが使用されていればGPUが動作している。