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?

EVO-X2でllama.cppをビルドしてローカルLLMを動かす

Last updated at Posted at 2025-11-15

前回の記事で、EVO-X2 (Ryzen AI Max+ 395) に Ubuntu 24.04+ROCm を導入しました。今回は、ROCm(HIP/rocBLAS)有効の llama.cpp をビルドしてGPU実行できる状態にして、ローカルLLMを動作させ、モニタを実施します。

1. ゴール

  • Python 仮想環境を作って モデル取得系を隔離
  • Hugging Face から Phi-3.5 Mini (GGUF) をダウンロード
  • llama.cpp を GPUオフロード段階的に 実行(-ngl 1 → 8 → 16 → 32)
  • rocm-smi で温度/電力/利用率/VRAM を 軽量モニタ
  • 生成速度(tok/s)を比較し確認

2. Python 仮想環境のセットアップ

いろいろ始める前に、Python仮想環境(venv)を整備します。なぜかというと、

  • huggingface_hub や hf_transfer を安全に更新できる
  • 依存衝突の回避 → プロジェクトごとに分離
  • 再現性の担保 → 壊れたら作り直しが速い
  • sudo pip を避け、安全にユーザー権限で完結

という理由からです。

作成&有効化&ツール更新

# 作成
python3 -m venv ~/venvs/evox2-llm

# 有効化(プロンプト先頭に (evox2-llm) が付けばOK)
source ~/venvs/evox2-llm/bin/activate

# ツール更新
(evox2-llm) python -m pip install -U pip setuptools wheel

3. モデル取得

Hugging Face Hub, Python API 直呼び
CLI は PATH 依存で詰まりがちなので、Python API を推奨。大容量転送高速化を有効化。

# 転送高速化
(evox2-llm) export HF_HUB_ENABLE_HF_TRANSFER=1
# モデル保存先
(evox2-llm) mkdir -p ~/models/phi-3.5-mini-gguf

GGUFモデルを取得します。

(evox2-llm) python - <<'PY'
from huggingface_hub import hf_hub_download
dst = hf_hub_download(
    repo_id="microsoft/Phi-3.5-mini-instruct-GGUF",
    filename="Phi-3.5-mini-instruct-IQ4_XS.gguf",
    local_dir="/home/nabe/models/phi-3.5-mini-gguf",
)
print("DOWNLOADED_TO:", dst)
PY

成功した場合のログ

DOWNLOADED_TO: /home/nabe/models/phi-3.5-mini-gguf/Phi-3.5-mini-instruct-IQ4_XS.gguf
$ ls -lh ~/models/phi-3.5-mini-gguf
-rw-rw-r-- 1 nabe nabe 2.0G ... Phi-3.5-mini-instruct-IQ4_XS.gguf

目的の GGUF が 2.0GB 前後で落ちていればOK

4. llama.cpp のビルド(ROCm/HIP 対応)

Githubから取得して、ビルド用ディレクトリを作成。

git clone https://github.com/ggerganov/llama.cpp.git
cd ~/llama.cpp
mkdir -p build && cd build

ROCm (HIPBLAS) を有効にして CMake を実行
GGML_HIP=ON と GGML_HIPBLAS=ON が鍵。ROCM_PATH は通常 /opt/rocm。

cmake \
  -DGGML_HIP=ON \
  -DGGML_HIPBLAS=ON \
  -DCMAKE_BUILD_TYPE=Release \
  -DCMAKE_PREFIX_PATH=/opt/rocm \
  ..
make -j$(nproc)
  • 補足:libggml-hipblas.so が必ずできるとは限らない(静的リンクや実行ファイル内に組み込まれる構成もある)。実行時ログで ROCm 利用が出ていればOK。

実行時に見るべきログ(判定の決め手)

ggml_cuda_init: found 1 ROCm devices:
  Device 0: AMD Radeon Graphics, gfx1151 ...
...
llama_model_load_from_file_impl: using device ROCm0 (AMD Radeon Graphics) ...
...
load_tensors: offloading N/33 layers to GPU

これが出れば ROCm バックエンドで実行できています。

5. 段階的 GPU オフロード(-ngl 1→8→16→32)

-ngl(GPUに載せる層数)を増やし、tok/s が伸びるか、電力・温度・VRAMはどうなるかを確認していきます。

共通条件:

  • モデル = Phi-3.5-mini-instruct-IQ4_XS.gguf(約1.92GiB)
  • スレッド = -t 8、プロンプトは短文(日本語一文応答)
~/llama.cpp/build/bin/llama-cli \
  -m ~/models/phi-3.5-mini-gguf/Phi-3.5-mini-instruct-IQ4_XS.gguf \
  -p "1文で自己紹介。" \
  -ngl <1|8|16|32> -t 8

実行ログ(抜粋)

# 起動時に ROCm を認識:
ggml_cuda_init: found 1 ROCm devices:
  Device 0: AMD Radeon Graphics, gfx1151 ...
llama_model_load_from_file_impl: using device ROCm0 ... - 65370 MiB free

最終行に実際の出力

== Running in interactive mode. ==
<略>
1文で自己紹介。

私はAIとして、自己紹介する中で人間の形ではないが、情報を提供し、質問に答え、
タスクを支援するプログラムです。

動きました。(パチパチ)
次に、GPUにオフロードを増やすとスループットがどうなるか実測します。

# 1秒間隔で温度/電力/利用率/VRAM変化を見るシンプル版
while true; do
  ts=$(date '+%H:%M:%S')
  /opt/rocm/bin/rocm-smi --showtemp --showpower --showuse --showmeminfo vram -d 0 \
   | awk -v ts="$ts" '
     /Temperature \(Sensor edge\)/{temp=$NF}
     /Current Socket Graphics Package Power/{pwr=$(NF)}
     /GPU use/{use=$(NF)}
     /Total VRAM Memory Used/{vram=$(NF)}
     END{printf "%s Temp=%s Power=%sW Use=%s VRAM=%s\n", ts,temp,pwr,use,vram}'
  sleep 1
done

実測スループット

-ngl 1
eval time ≈ 5615 ms / 255 runs → 約 45 tok/s
-ngl 8
eval time ≈ 5229 ms / 255 runs → 約 49 tok/s
-ngl 16
eval time ≈ 4596 ms / 255 runs → 約 55 tok/s
-ngl 32
eval time ≈ 3159 ms / 255 runs → 約 81 tok/s

結果を表にまとめました。

-ngl tok/s VRAM使用目安 GPU利用率目安 電力ピーク目安
1 45.4 < 0.2 GB 相当 〜4% 〜112 W
8 48.8 ~1.41 GB 〜15% 〜117 W
16 55.5 ~2.30 GB 〜33% 〜113 W
32 80.7 ~4.06 GB 80–87% 80〜90 W 帯

おー!なかなかいい値じゃないですか。

チャッピーの分析では

  • -ngl を上げるほど tok/s は素直に向上
  • VRAM使用量は段階的に増加。EVO-X2のiGPU(大容量UMA)のおかげで 4GB級まで余裕あり
  • 電力は “必ずしも直線的に増えない”。-ngl 32 は効率が良く、高いtok/sに対し消費は抑えめという印象。

6. まとめ(今回の到達点)

  • ROCm(HIP)有効の llama.cpp で EVO-X2 の iGPU を使って Phi-3.5-mini(IQ4_XS)を推論
  • -ngl 1→32 に連れて 45.4 → 80.7 tok/sへ改善。VRAM/電力/温度の挙動も把握

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?