Ubuntu日和

【第78回】Intel Arc B580で話題のgpt-oss-120bモデルを動かしてみた

第54回オマージュ

 アークでアークを購入した。

 最初のアークはパソコンショップアークで、次のアークはIntel Arc B580である。Intel Arc B580 Challenger 12GB OCは発売当初から狙っていたものの、初値が5万円弱、その後1割ぐらいは下がったものの、まだ手は出せない感じであった。しかしパソコンショップアークのサマーセールにて4万円以下で販売されていることを知り、思わずポチってしまった。

 第54回で紹介したように、うちには前モデルとなるA580がある。その後も検証のたびに引っ張り出してきてはいたのだが、やはりいまいちパッとしない。その点、後継となるB580は期待していた。あわよくば値段が倍なので性能も倍になってほしい。

 また今回は最新のllama.cppをビルドして話題のgpt-oss-120bを動作させてみる。gpt-oss-20bであれば動作することに疑いはないが、より大きなモデルを動かせるかどうか試してみたい。

検証用PC

 最近検証用PCをガラッと変えた。理由としては、うちのハイエンドPCを生成AI専用機にしたからである。ハイエンドとはいってもRyzen 9 7950XとRadeon RX 7800 XTなのであまり大したことはないのだが。

 それはさておき、具体的なスペックは次の通りだ。

パーツメーカー型番備考
CPUIntelCore-i5 13500
マザーボードASRockB760M Pro RS Wifi
メモリーCrucialCP2K32G56C46U54枚挿しの合計128GB
SSDKIOXIASSD-CK1.0N4P/N
ビデオカードASRockIntel Arc B580 Challenger 12GB OC
電源ユニット玄人志向KRPW-SXP600W/90+
ケースSilverStoneSG11

 ベンチマークで使用するのはGeForce RTX 3060 AERO ITX 12G OCAR-A580D6-E8GB/DFにした。A580を持ってくるのは当然として、あと1枚を何にするかは迷うところだったが、VRAMが同じ12GBのGeForce RTX 3060が適切であろうと判断した。

ドライバのインストール

 ドライバのインストールが必要なので以下のコマンドを実行するが、 おおむねドキュメントの通りである。ちなみにUbuntuは24.04.3で、カーネルのバージョンは6.14に上がっているが、特に問題がないことを確認している。

$ sudo add-apt-repository -y ppa:kobuk-team/intel-graphics
$ sudo apt install -y libze-intel-gpu1 libze1 intel-metrics-discovery intel-opencl-icd clinfo intel-gsc
$ sudo apt install -y libze-intel-gpu-raytracing
$ sudo usermod -aG render $USER
$ sudo usermod -aG video $USER

 ここまでできたら、一度再起動しておこう。

ベンチマーク

 軽くベンチマークを見ていこう。使用するのは相変わらずPhoronix Test Suiteだ。UbuntuではVulkanが速いとだいたいオッケーということで、Vulkanのテストのみを実施している。

 まずはVulkanで画像を拡大するベンチマークだ。

Waifu2x-NCNNその1
Waifu2x-NCNNその2

 のっけから何だこれという結果である。A580はなにかの間違いではないかと数回計測し直してみたが、特に変化はなかった。B580もちょっと考えにくいほどに遅い。vulkaninfoというコマンドがあり、これでVulkanが正しく動作するかが分かるのだが、もちろんきちんと意図したように認識していた。

 お次はSuperTuxKartとカーレースゲームでの結果である。

SuperTuxKartその1
SuperTuxKartその2

 今度はA580とB580で差がなさすぎて首を傾げる結果である。とはいえハードウェアのポテンシャルをちょっとくらい感じられるかなという結果ではある。

 レイトレーシングのベンチマークも計測してみた。

Ray Tracing In Vulkanその1
Ray Tracing In Vulkanその2

 5種類のテストがあり、そのうちもっとも差があったものともっとも差がなかったものを抜粋している。

 そもそもA580はレイトレーシングが動作しなかった。ハードウェア的には対応しているはずなので、ドライバの出来なのだろう。またB580の結果が悪いことからも、ドライバの不出来が予想される。

 Hothotレビュー Intel Arc B580、ついにRTX 4060の壁を超えた?待望の新GPUをテストを読む限り、B580が3060に負けるとはちょっと思えないので、やはり全体的にドライバの不出来であろうという予想で差し支えないだろう。がんばれIntel。

 最後にVKMarkという複数のVulkan関連ベンチマークの実行結果だ。

VKMark

 B580がA580の倍くらいの数値で、期待に近い結果だ。しかし絶対値としてはかなり低いようで、どうもRadeon RX 6400とどっこいどっこいらしい。

LLM

oneAPIとOpenVINO GenAIとIPEX-LLM

 続いてLLMの動作に移るが、そもそもIntelはLLMの動作環境を複数種類用意しており、oneAPIOpenVINO GenAIIPEX-LLMなどがある。今回は最新のllama.cppがビルドできるoneAPIを使用する。

oneAPI

 llama.cppをビルドするために、まずはoneAPI Base Toolkitをインストールする。方法はおおむねドキュメントの通りだが、次のコマンドを実行する。

$ wget -O- https://apt.repos.intel.com/intel-gpg-keys/GPG-PUB-KEY-INTEL-SW-PRODUCTS.PUB | gpg --dearmor | sudo tee /usr/sh
are/keyrings/oneapi-archive-keyring.gpg > /dev/null
$ echo "deb [signed-by=/usr/share/keyrings/oneapi-archive-keyring.gpg] https://apt.repos.intel.com/oneapi all main" | sudo
 tee /etc/apt/sources.list.d/oneAPI.list
$ sudo apt update
$ sudo apt install intel-oneapi-base-toolkit cmake pkg-config build-essential git

 次のコマンドを実行して動作を確認する。

$ source /opt/intel/oneapi/2025.2/oneapi-vars.sh
$ sycl-ls
[level_zero:gpu][level_zero:0] Intel(R) oneAPI Unified Runtime over Level-Zero, Intel(R) Arc(TM) B580 Graphics 20.1.0 [1.6.34303+6]
[opencl:cpu][opencl:0] Intel(R) OpenCL, 13th Gen Intel(R) Core(TM) i5-13500 OpenCL 3.0 (Build 0) [2025.20.8.0.06_160000]
[opencl:gpu][opencl:1] Intel(R) OpenCL Graphics, Intel(R) Arc(TM) B580 Graphics OpenCL 3.0 NEO  [25.27.34303]

 B580の文字列があり、これで正しく認識していることが分かる。

モデルのダウンロード

 今回使用するモデルはgpt-oss-120bとする。これをllama.cpp(だけではないが)で使用できるようにしたものがこちらからダウンロードできる。(直リンクその1直リンクその2)

 量子化は一般的なQ4_K_Mとする。2つあわせて64GBくらいだ。これを~/Downloadsにダウンロードしたものとする。

llama.cpp

 続けてllama.cppのビルドを行なう。ビルド用のシェルスクリプトが用意されており、かなり簡単だ。

$ mkdir ~/git
$ cd ~/git
$ git clone https://github.com/ggml-org/llama.cpp.git
$ cd llama.cpp
$ source /opt/intel/oneapi/setvars.sh
$ bash ./examples/sycl/build.sh

 注意点としてはllama.cppを動作させる前には必ず source /opt/intel/oneapi/setvars.sh を実行する必要があることだ。その端末を使用し続けている限り、最初の1回だけでいいのだが。

 これで動作確認も含めてベンチマークを実行してみよう。

$ ./build/bin/llama-bench -m ~/Downloads/gpt-oss-120b-Q4_K_M-00001-of-00002.gguf --n-gpu-layers 99
gpt-oss-120bでのベンチマーク結果

 テスト結果は上がプロンプト、下が回答だ。というわけで11tok/sは速くないが、遅くて使い物にならないというものでもない。むしろ120Bというローカルで動かすには大きなモデルであり、精度を考えれば充分というものであろう。

 次のコマンドを実行して、実際に問い合わせをしてみた。

$ ./build/bin/llama-cli -m ~/Downloads/gpt-oss-120b-Q4_K_M-00001-of-00002.gguf --n-gpu-layers 99 --n-cpu-moe 36 --flash-attn -no-cnv -p
 "偏りのないコインを表が出るまで投げ続け、表が出たときに、賞金をもらえるゲームがあるとする。もらえる賞金は、1回目に表が出たら1円、1回目は裏が出て2回目に表が出たら倍の2円、2回目まで裏が出ていて3回目に初めて表が出たらそのまた倍の4円、3回目まで裏が出ていて4回目に初めて表が出たらそのまた倍の8円、というふうに倍々で増える賞金がもらえるというゲームである。ここで、このゲームには参加費(=賭け金)が必要であるとしたら、参加費の金額が何円までなら払っても損ではないと言えるだろうか。"
gpt-oss-120bで問い合わせ結果

 ベンチマーク結果とあまり変わらない速度が出ていることが分かる。

結論

 確かにB580の進化は目覚ましく、A580から買い替える価値は充分にある。oneAPIであれば最新のllama.cppがビルドでき、gpt-oss-120bまで動くとが分かった。実売価格を考えるとなかなかにお買い得なビデオカードといえるだろう。

 一方LM StudioでoneAPIサポートがなくllama.cppを直接使わなくてはいけないことや、そもそもドライバの出来がお世辞にもいいとはいえない事実もある。会社はいろいろ経済的に厳しい話も聞こえてくるが、ここはIntelに踏ん張ってもらってこのあたりの改善を図ってほしいところである。