Ubuntu日和
【第67回】Ubuntu上でIntelのNPUを活用した画像を生成するまで
2025年1月18日 06:19
第58回でRyzen AIをUbuntuで動作させる方法を紹介した。AMDでやったのであればIntelでもやりたいと考えるのが人情というもので、IntelのNPUである「Intel AI Boost」を搭載したPCないしCPUを購入しようと狙っていたものの、その機会はなかなか訪れなかった。
そんな中、本連載担当の劉デスクから「Core UltraにせっかくNPUが付いてるのでLLMや画像生成を動かしてみた!ミニPC「UH125 Pro」」の記事でで紹介されたUH125 Proが送られてきた。
UH125 Proはすでに終売していて、採用しているCore Ultra 5 125Hもリリースされてから1年以上経過しているので、Ubuntuも難なく動作するものと予想していたが、なかなか一筋縄ではいかなかった。ただし動いてしまえば、Ubuntuの機能で環境構築が極めて簡単であった。
なお、UH125 Proの概要については省略する。前出のレビュー記事を参照されたい。
UH125 Proとファームウェア
UH125 ProのUEFI BIOSのバージョンが古かったので(レビュー試供品なので当然なのだが)、第57回を参考にUEFIシェルからアップデートを実行しようとした。しかしUEFIシェルが起動しなかったので、Windowsを再インストールしてそこからアップデートを実行した。
あとから考えてみると、セキュアブートを有効にしている場合はUEFIシェルが起動しないのは自然な挙動である。早とちりして膨大な時間を無駄にしてしまった。
UH125 ProとUbuntu 24.04.1 LTS
UH125 Proで動作させるUbuntuのバージョンを何にするかはちょっと迷ったが、24.04.1 LTSを選択した。24.04.1のカーネル6.8でも最低限動作するものと予想していたが、Wi-Fiは認識するもののNICは認識しなかった。それはまだいいのだが、ランダムでカーネルパニックを引き起こしており、対応していないカーネルの典型的な挙動と見ていい。
インストールが終わったら、マウスポインタの消失が頻発したので、何だこれと思ってディスプレイの設定を見てみたら、存在しないディスプレイが接続されていてちょっとしたホラーだった。
時期的にはそろそろlinux-image-generic-hwe-22.04かlinux-image-generic-hwe-22.04-edgeで24.10のカーネルである6.11が提供されてもよさそうに思えるが、執筆段階では未提供だったので、linux-image-oem-24.04bをインストールして検証した。こちらは現段階で6.11になっている。
正直なところ、UH125 ProでUbuntuを使用するのであれば、3月にはリリースされるであろう24.04.2 LTSを待ったほうがいい。
5GbE NIC
UH125 Proには5GbE NICが搭載されている。10GbEや2.5GbEはよく聞くが、5GbEはあまり聞かない。NICがあっても5GbE対応スイッチングハブは聞いたことがなく、活躍する場面があるのか疑問がある。2.5GbEでよかったのではないだろうか。そんなことを考えつつlspciコマンドで調べてみたところ、どうもRTL8126というNICのようだ。
速度を測定する方法はないものかと思案してみたところ、第64回で試した10GbEが使用できそうだった。実戦投入はできなかったものの、検証環境として使い道があるならそれはそれで買ってよかったというものである。
第64回とほぼ同じ方法でiperf3の結果を見てみたところ、4.71Gb/sとのことで、おおむね5GbEの能力を引き出せることが分かった。
Sambaで10GiBファイル転送も試してみたところ、530,575.3KB/sということで、これをGb/sに変換すると4.244とのことで、やはり5GbEの能力を発揮していることが分かった。
しかしやはり宝の持ち腐れ感が否めない。いつか活躍できる機会を期待したいものである。
NPUドライバのインストール
第58回で紹介したRyzen APUのNPUドライバはインストールが面倒だった。ではIntelではどうなのかというと、CanonicalがIntel NPUドライバのsnapパッケージを用意しているので、端末から次のコマンドを実行するだけであった(Discorseの該当記事)。
$ sudo snap install --beta intel-npu-driver
intel-npu-driver.vpu-umd-testコマンドを実行してみたところ、181のテストのうち失敗したのが1つだけであり、ベータ版のドライバであるにもかかわらずおおむね問題なく動作していることが分かる。
NPUドライバを使用する
Ryzen AIであれば、この段階で活躍するところがないということで締めくくっており、記事のオチとしてもなかなかに傑作であった。一方こちらはさすがのIntel、きちんと活躍する方法を用意している。
前出のレビュー記事でも登場したOpenVINO AI Plugins for GIMPは、実はUbuntuでも動作するのだ。このプラグインを含めたGIMPがsnapパッケージになっており、Ubuntuであれば動作させるのも簡単だ。実際にやっていこう。
まずはコマンドから必要なsnapパッケージをインストールする。もちろん前出のinte-gpu-driverをインストールしていることが前提だ。
$ sudo snap install openvino-toolkit-2404 --beta
$ sudo snap install openvino-ai-plugins-gimp --beta
$ sudo snap install gimp --channel 2.99-openvino/candidate
$ sudo usermod -a -G render $USER
使用しているユーザーがrenderグループに属していない場合は、4行目を実行して再起動する。
筆者が確認した限りでは、次のコマンドも追加で実行する必要があった。このあたりはインストールするバージョンによって異なる可能性もある。
$ sudo snap connect gimp:gpu-2404 mesa-2404
$ sudo snap connect gimp:gnome-46-2404 gnome-46-2404:gnome-46-2404
起動してしまえば、使い方はWindows版のインストール方法にあるとおりではあるのだが、実際に試してみたところ少なくとも検証の段階では事前にモデルを読み込んでおく必要がある。端末からopenvino-ai-plugins-gimp.model-setupコマンドを実行する。
NPUに使用できるモデルは1と2だけなので、それらをインストールするといいだろう。
その後はGIMP起動後「レイヤー」-「OpenVINO-AI-Plugins」-「Stable diffusion」を表示し、使用するモデルを選択してから「Load Models」をクリックして読み込む。「Power Mode」を「Best power efficiency」または「Balanced」に変更するのがコツだ。前者だと可能な限りNPUを使用しようとする。
ここまでできたら、あとはキーワードを入力して「Generate」をクリックするだけだ。
これが実用的かと問われると甚だ疑問であるが、そもそもNPUの速度自体が実用的かという根本的な問題がある。今のところはこのぐらいで遊んでおいて、あとは年内にもあるであろうNPUの性能を底上げした新モデルに期待したい。
実際に生成した画像が冒頭の画像だが、本当は蛇(今年の干支)がパソコン(PC)を見ている(Watch)画像を生成したかったところ、なかなかうまくいかなかったのでキーワードをこねくり回してこうなった。