Ubuntu Weekly Recipe

第905回新年度特別企画 llama.cppでコマンドラインベースのローカルLLM入門[VRAM容量別編]

今回はVRAMの容量別でおすすめのローカルLLMのモデルを動作させる方法を紹介します。

ローカルLLM総集編

本連載では、幾度となくローカルLLMを紹介しています。

昨年と今年の記事だけをピックアップしてもこれだけあります。第877回を除いて筆者が執筆しています。興味がOllamaからllama.cppに移行しているのがわかりやすいですね。

これは筆者がローカルLLMに対して強い興味を抱いているからですが、動かしていて面白いというのもあります。クラウドサービスはそもそもUbuntuかどうかは関係ないので本連載の対象外である、という点も大きいですが。

記事も多岐にわたるため、これまでに紹介したGPU、紹介しなかったGPUも含めて、GPUのメーカーとVRAMの容量別でおすすめのモデルの使い方をまとめます。いわば現時点の総集編です。

使用するPC

今回使用するPCの詳細は次のとおりです。

メーカー 型番 備考
CPU AMD Ryzen 7 5700X
メモリー Crucial CT2K32G4DFD832A 64GB
マザーボード MSI MPG B550I GAMING EDGE WIFI
CPUファン サイズ SHURIKEN2
グラフィックボード 本文参照 本文参照
SSD1 MSI SPATIUM S270 SATA 2.5" 960GB NVIDIA用
SSD2 KIOXIA TC10480G02 AMD用
SSD3 CFD CSSD-S6L512MGAX Intel用
電源ユニット Silver Stone SX700-PT
電源ユニットケーブル Silver Stone SST-PP05-E
電源ユニットマウンター Silver Stone SST-PP08B
ケース Silver Stone SG13B

Ubuntuのバージョンは24.04.4 LTSです。

llama.cppの準備

LLMを動作させるのはllama.cppとします。バイナリの用意はGPUのメーカー別に分かれるので個別に紹介します。

NVIDIA CUDA

llama.cppではUbuntuのNVIDIA CUDA用バイナリは配布していないので、自前でビルドする必要があります。

おおむね第891回のとおりですが、NVIDIAドライバーのバージョンは現時点で最新バージョンの590としています(図1)

図1 執筆段階での最新版は590

CUDAのバージョンも最新の13.2としています。インストール方法は次のとおりです。

$ ~/Downloads/
$ wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2404/x86_64/cuda-keyring_1.1-1_all.deb
$ sudo apt install ./cuda-keyring_1.1-1_all.deb 
$ sudo apt update 
$ sudo apt install cuda-toolkit-13-2

nvidia-smiコマンドでは、なぜか13.1と表示されています(図2)

図2 CUDA Versionがなぜか13.1になっている

llama.cppのビルドコマンドは次のとおりです。

$ sudo apt install -y git git-lfs cmake g++ libcurlpp-dev
$ mkdir ~/git
$ cd ~/git
$ git clone  https://github.com/ggml-org/llama.cpp.git
$ cd llama.cpp
$ CUDACXX=/usr/local/cuda-13.2/bin/nvcc cmake -B build-cuda -DGGML_CUDA=ON
$ cmake --build build-cuda --config Release -j 16

実際に実行するコマンドは今回の例だと~/git/llama.cpp/build-cuda/bin/以下にあります。

AMD ROCm

llama.cppのリリースページを見ると、Linuxのところに「Ubuntu x64 (ROCm 7.2)」があります。これがRadeon用のバイナリです。換言すると、自前でビルドする必要はありません。

もちろんこれを使用してもいいのですが、llamacpp-rocmというAMDによる独自のllama.cppがあるので、こちらを使用します。対応GPUが多いというメリットもあります。

複数のバイナリが用意されており、GPU毎に使用するものが異なるため、Supported Devicesを参考にダウンロードしてください。

ダウンロードしたバイナリをunzipコマンドで展開する場合、カレントフォルダーにファイルやフォルダーを展開してしまうので、事前にフォルダーを作成するなど気をつけてください。また実行ファイルに実行権限が付けられていないので、chmod +x llama-*を実行してください。

また重要な点として、実行前に次のコマンドで現在使用しているユーザーをrenderグループに所属させてください。

sudo usermod -a -G render $USER

実行後は再起動してください。

Intel oneAPI

第904回で紹介しているので、ここでは省略します。

Vulkan

速度はさておきllama.cppをビルドするのが面倒だという場合には、リリースページの「Ubuntu x64 (Vulkan)」を使用するという手もあります。⁠Ubuntu x64 (Vulkan)」をクリックしてダウンロードしてください。場合によってはVUlkanのほうが速いこともある、というのは第904回のとおりです。また今回検証はしていませんが、Radeonでもその傾向があります。

VRAM6〜8GBのGPU

では具体的なVRAM容量別での使い方を紹介します。

使用するモデル

VRAMが6〜8GBのグラフィックボードで動作するおすすめのモデルは、Qwen3.5-9Bです。Q4_K_Mで量子化したものでいいでしょう。チャットを使用するのであればこのくらいがミニマムで、これよりも小さいモデルになると快適にはなりますが実用は厳しいと言わざるを得ません。

またQwen3.5-9BはInstructとThinkingの両対応なのも特徴です。Instructは入力した文章をそのまま解釈して結果を返します。一方Thinkingは入力した文章を一旦解釈し、結果を返します。前者のほうが速いですが、後者のほうがより正解に近い結果を返す傾向にあります。

コマンドの実行例は次のとおりです。まずはInstructから。

$ ./build-cuda/bin/llama-server --model ~/Downloads/Qwen3.5-9B-Q4_K_M.gguf --ctx-size 16384 --temp 0.6 --top-p 0.95 --top-k 20 --min-p 0.00 --port 8080 

Thinkingにするには、このコマンドを実行します。

$ ./build-cuda/bin/llama-server --model ~/Downloads/Qwen3.5-9B-Q4_K_M.gguf --ctx-size 16384 --temp 0.6 --top-p 0.95 --top-k 20 --min-p 0.00 --port 8080 --reasoning on

使用するGPU

ここで使用するGPUは次のとおりです。

NVIDIA GeForce RTX 3050

第876回で使用したGeForce RTX 3050 LP 6Gです。この頃は25000円程度で購入できたのですが、今は1万円くらい上がっているようで、正直今から買うならもう少し出してGeForce RTX 5050のほうがいいような気はします。

ベンチマークの結果は図3とおりです。

図3 GeForce RTX 3050での結果

AMD Radeon 6600 XT

AMD Radeon 6600 XTは廃番になって久しいですが、7600や9060のVRAM 8GBモデルと見立ててください。

llamacpp-rocmのSupported Devicesによると、Radeon 6000シリーズはgfx103Xということなので、⁠llama-⁠リビジョン⁠⁠-ubuntu-rocm-gfx103X-x64.zip」をダウンロードし、展開します。

あとは前述のとおりに展開し、実行できる状態にしてください。

ベンチマークの結果は図4のとおりです。

図4 Radeon RX 6600 XTでの結果

VRAM12GBのGPU

使用するモデル

VRAMが12GBのグラフィックボードで動作するおすすめのモデルは、第902回で紹介したgpt-oss-20bです。またその派生版であるGPT-OSS Swallow 20bでもいいでしょう。

ダウンロード元や起動時のオプションは第902回をご覧ください。とはいえVRAMが16GB前提のオプションで、12GBではコンテキストサイズを減らす必要がありました。

$ ./llama-server -m ~/Downloads/gpt-oss-20b-mxfp4.gguf --threads -1 --ctx-size 8192 --jinja -ngl 99 --flash-attn on --port 8080 --temp 1.0 --top-p 1.0 --top-k 0.0 --no-mmap --fit on --no-warmup

使用するGPU

NVIDIA GeForce RTX 3060

第817回で使用したGeForce RTX 3060 AERO ITX 12G OCはVRAMが12GBあるので、2世代前のモデルであってもまだまだ活用できる機会があります。

ベンチマークの結果は図5のとおりです。

図5 GeForce RTX 3060での結果

Intel Arc B860

第904回で紹介したばかりなので、詳細は省略します。

参考のため、Vulkanでのベンチマーク結果を図6に掲載します。

図6 Intel Arc B580のVulkanでの結果

VRAM16GBのGPU

使用するモデル

Qwen 3.5はパラメータ数によってさまざまなモデルがリリースされています。いろいろ試してみた結果、27Bがベストであるという結論に達しました。レビューを見ていても同じ結論に達しているものが少なからずあります。とはいえ27BはVRAMが16GBだと少し荷が重く、Q3_K_Mで量子化したものを使用する必要があります。よって、Q4_K_Mで量子化されたモデルを使用するよりも、精度が落ちることになります。

また27Bは比較的重いモデルで、VRAMが16GBのミドルローのグラフィックボードには若干荷が重いです。筆者のメインPCではRadeon RX 7800 XTを使用しており、このクラスだと快適に動作しています。速度よりも精度を重視してモデルを選択しているということをご承知おきください。

実行例は次のとおりです。

$ ./llama-server -m ~/Downloads/Qwen3.5-27B-Q3_K_M.gguf --threads -1 --ctx-size 16768 --port 8080 --temp 0.7 --top-p 0.8 --top-k 20 --min-p 0.00 --presence_penalty 1.0 --no-warmup --no-mmap --fit on

使用するGPU

NVIDIA GeForce RTX 5060 Ti

第891回で紹介した、GeForce RTX 5060 Ti 16G VENTUS 2X OC PLUSを使用します。

ベンチマークの結果は図7のとおりです。

図7 GeForce RTX 5060 Tiでの結果

AMD Radeon RX 9060 XT

第868回第891回で紹介したRD-RX9060XT-E16GB/DFを使用します。

llamacpp-rocmのSupported Devicesによると、Radeon 6000シリーズはgfx120Xということなので、⁠llama-⁠リビジョン⁠⁠-ubuntu-rocm-gfx120X-x64.zip」をダウンロードし、展開します。

あとは前述のとおりに展開し、実行できる状態にしてください。

ベンチマークの結果は図8のとおりです。

図8 Radeon RX 9060 XTでの結果。正直常用は厳しい

llama-serverの接続先

今回の例では、llama-serverはポート8080で接続できるようにしています。もし変更したい場合は、⁠--port」オプションを変更してください。

また接続元もlocalhostに限定しています。どこからでも接続できるようにしたい場合は、⁠--host」オプションを追加してください。どこからでもアクセスできるようにしたい場合は「--host 0.0.0.0」とします。

おすすめ記事

記事・ニュース一覧