Ubuntu日和

【第87回】UbuntuでもついにLLMでRyzen AI NPU活用できるようになった!

NPUが動作している!

 約1年半前のUbuntu日和の第58回で、ネタっぽくNPUを認識させる方法を紹介し、使い道がないことを指摘した。

 いつかなにかに使える日が来たらいいなと考えて紹介したが、ついぞその日は来なかった。

 しかし、ようやく風向きが変わった。

 FastFlowLMというRyzen AIを使用するためのフレームワークがLinuxにも対応した。

 それに伴い、AMDが開発するローカルLLMサーバーのLemonadeLinuxに対応した。しかもUbuntuのバージョンが3つもサポートされている。

 もうこれは試してみるしかないわけだが、筆者は第80回にもあるように「MINISFORUM AI X1 Pro」を所有しているものの、すでに決まった役割があってほかのことには使いづらい。というわけでCopilot+ PC認証取得のRyzen AI 9 HX 370搭載ミニPC!「MINISFORUM AI X1 Pro」で使用された評価機を提供してもらった。あの(筆者の中で)伝説のネジが外れなくてメモリやSSDの交換/増設ができないヤツである。今回の用途ではまったく問題とならない。

 そもそも筆者はNPUに関して悲観論者で、確かに理想的にはとても素晴らしいものであることは分かるものの、現時点ではさほど実用的ではないのではないか。実用的になるにはまだ数年必要であり、その頃にはNPUを諦めるという選択も出てくるのでは、と予想していた。

 はてさて、実際にどうであったか見ていこう。

使用するPC

 今回使用するPCは前述の通り、MINISFORUM AI X1 Proであり、メモリは(おそらくCrucial製)32GBが2枚で合計64GB、SSDはKingstonの1TBモデルだ。

 OSはWindowsを削除してUbuntu 24.04.4 LTSをインストールしている。25.10でも差し支えないはずではある。

 第58回で紹介したMINISFORUM「UM780XTX」に搭載されているRyzen 7 7840HSにもNPUは搭載されているが、FastFlowLMでは非対応なので注意されたい。

 換言すると、今回のことを試したいならこのメモリが高い中、新PCを購入する可能性が極めて高いということになる。

セットアップをしてみよう

 セットアップの方法は、公式が丁寧に説明されているので難しくないが、多少アレンジして紹介する。まずはFastFlowLMのセットアップから。

$ sudo add-apt-repository ppa:amd-team/xrt
$ sudo apt install libxrt-npu2 amdxdna-dkms
$ sudo usermod -a -G render $USER

 ここで再起動する。現状のドキュメントにはないが、ユーザーをrenderグループに追加する必要がある。

 続けてLemonadeサーバーのセットアップは次の通りだ。

$ sudo add-apt-repository ppa:lemonade-team/stable
$ sudo apt install lemonade-server

 snap版とAppImage版もあるが、今回はPPAからDebianパッケージを取得する。AppImage版は試していないが、snap版を試してみたところNPUが動作しなかった。

 NPUが動作するかどうかは flm validate コマンドで分かる。

flm validateコマンドを実行したところ

Lemonadeを使用してみる

 lemonade-serverパッケージをインストールすると、自動的にChromium Webブラウザもインストールされる。そして「Lemonade Web App」というアプリケーションが追加され、これがすなわちChromiumでLemonadeを使用する専用アプリとなる。

起動直後のLemonade Web App

 Firefoxから使用したい場合は、「localhost:8000」でアクセスできる。

 Lemonadeはチャットのほか、画像生成や文字起こしなども行なえるが、FastFlowLMではチャットにしか対応しないので、ほかの機能に関しては説明を省略する。

 AVALIABLE MODELSのFastFlowLM NPUでは多くのモデルがリストされており、その中にはgpt-oss-20bも含まれる。gpt-oss-sg-20bはおそらくgpt-oss-safeguardだと思われる。

 Download modelボタンをクリックすると、モデルがダウンロードされる。

モデルにカーソルを持っていくと緑のダウンロードボタンが表示されるのでそれをクリックする

 あとは質問を入力するだけだ。

問い合わせ中

iGPUとの速度差は

 「Llama.cpp GPU」にもgpt-oss-20bがある。ということは、GPUとNPUでベンチマークが取れるということで、やってみた。

 NPUでは19.3TPS(Token Per Seconds)で、GPUでは25.7TPSであった。GPUよりは遅いものの、NPUでも十分に実用的な速度が出ているといえる。

NPUでの結果
GPUでの結果

意外と使えるNPUのLLM推論

 現段階でもgpt-oss-20bというそれなりに大きなモデルでも概ね実用的な速度が出ることに率直に驚いた。十分に使い物になるばかりか、今後もNPUの進化が続き、かつメモリの速度が向上すれば、さらに大きなモデルでも快適に動作するようになるだろう。

 Qwen3.5-9Bが(筆者にはやや過大に見えるが)非常に評判がよく、また画像の解析にも対応しているので、NPUで動作すればまた用途が広がるように思われるで、今後に期待したい。

 バグ報告のコメントによると、現在好きなモデルからFastFlowLMで使用できるモデルに変換するのは有償サービスではあるものの、将来的には好きなモデルから変換できるツールを提供予定とのことである。

商用利用は注意

 FastFlowLMはプロプライエタリなバイナリが含まれており、完全オープンソースではない点には注意が必要だ。とはいえ1年間に16億円(1ドル160円換算)以上の売上がある企業で商用利用する場合であり、ほとんどの用途では問題になることはないであろう。

 またデフォルトではコンテキストの量が少なく、あまり凝った問い合わせには対応していないことには注意が必要である。

デフォルトのコンテキストサイズは4,096とのことで、個人的には2桁少ない