0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

llama.cppとllama-swapを使用してFreeBSDでローカルLLMを動かす

Posted at

粗筋

ミニPCを購入してサーバを構築したがiGPUを活用する用途がないので、LLMを動かす方法を試みることにした。

ハードウエア

Minisforum UM690S にはCPUとしてRyzen 9 6900HXが登載され、iGPUとしてRadeon 680Mを持つ。GPUはVRAMをメインメモリを共有して動作する。メインメモリは上限の64Gまで登載してあるので、BIOSでVRAMに8Gの領域を設定しておく。

ソフトウエア

サーバはFreeBSD 14.3-RELEASEを使用する。

依存パッケージ

llama.cppでiGPUを使用するには依存パッケージを導入する必要がある。

pkg install drm-kmod mesa-dri vulkan-loader vulkan-tools llama-cpp

インストールが完了したら、/etc/rc.conf に kld_list="amdgpu" を追記して再起動する。vulkaninfoでiGPUが使用可能か確認しておく。

$ vulkaninfo | grep deviceType
	deviceType        = PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU
	deviceType        = PHYSICAL_DEVICE_TYPE_CPU

llama-swap稼働用ユーザの作成

llama-swapを動作するユーザを作成する。ユーザはiGPUを利用可能にする必要があるので、vigrで追加したユーザをvideoグループに追加すること。

llama-swapのインストール

llama-swapのgithubからインストールする。FreeBSDのバイナリがあるのでそれを使用すると良い。これを先に追加したユーザのホームに展開した。

設定ファイルの作成

ホームディレクトリに設定ファイルを作成する。

config.yaml
models:
  "gemma-3n-E4B":
    cmd: |
      /usr/local/bin/llama-server
      --model /path_to_models/gemma-3n-E4B-it-Q4_K_S.gguf
      -ngl 99
      --ctx-size 32768
      --temp 1.0
      --top-k 64
      --top-p 0.95
      --min-p 0.0
      --port ${PORT}

  "phi-4-mini-reasoning":
    cmd: |
      /usr/local/bin/llama-server
      --model /path_to_models/Phi-4-mini-reasoning-Q4_K_M.gguf
      -ngl 99
      --prio 3
      --temp 0.8
      --top-p 0.95
      --jinja
      --min-p 0.00
      --ctx-size 32767
      --port ${PORT}

使用したLLMはunsloth版で、ローカルに保存したものを流用した。llama-serverへ引き渡すパラメータは、unsloth版の設定を使用した。

llama-swapの起動

設定が完了したのでllama-swapを起動する。

$ llama-swap&

ポート8080で待ち受けするので、ブラウザから http://サーバIP:8080/ でアクセスする。llama-swapのWeb-UIが表示されたら、Modelsから使用するモデルをLoadする。モデル名のリンクからチャットI/Fに遷移して、動作を確認する。

OpenWeb-UIでの利用

llama-swapはOpenAI APIを持つので、外部アプリから利用も可能だ。既に稼働したOpenWeb-UIがあるので、そちらを設定してllama-swapを利用する。OpenWeb-UIの管理者パネルから「接続」を選び、OpenAI APIとして http://サーバIP:8080/v1 を設定する。これでllama-swapのモデルがOpenWeb-UIからも利用可能となる。

パフォーマンスについて

iGPUを使用したLLMは、CPUと較べると速いがdGPUに較べると性能に劣る。またVRAMが8Gなので小さなLLMしか動作しない。試しにQwen3-32BをLoadしてみたが、辛うじて動作するものの利用するのには不向きだ。しかし、8GでもLLMを動かせるのはありがたいものなので、サーバのiGPU利用手段として活用して欲しい。

御精讀ありがたうございました。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?