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?

gpt-oss-20bをIntel Arc A770とAMD Radeon 780Mで試す(llama-cpp-python/Vulkan API/Windows)

Last updated at Posted at 2025-08-11

普段はollamaを使用しているが、2025/8/11時点ではipex-llm版のollamaがgpt-ossに対応していないので「Vulkan APIllama-cpp-pythonを使用してA770でgpt-oss動かしたよ。ついでに780Mでも試したよ。」というお話。結論としては両方とも動いた。純粋なWindows環境のみ。

llama-cpp-pythonとは?

llama.cppのPythonラッパーで、OpenAI互換APIサーバとしての機能もある。恐らくllama.cppをそのまま内包しており最新のllama.cppの反映が早い。モデルの管理などはollamaほど統合されておらず、ggufファイルを自分で管理する必要があるが、何をしているのか理解しやすいとも言える。

(llama.cppも単体でサーバとして動作させることができるようになったが、同時に設定できるモデルは1つだけなので不便だ。)

Vulkan版llama-cpp-pythonをインストールする

pip install時にネイティブコードをコンパイルするので、Vulkanのネイティブコードが扱える環境を整えておく必要がある。

しかし、llama-cpp-pythonのドキュメントの「Vulkan」の項には『「CMAKE_ARGS="-DGGML_VULKAN=on"」せよ』としか書いていないので「少なくともCMAKEは要るんだよね」というところから始まる。オリジナルのllama.cppがmakeできる環境を構築するのが近道。

llama.cppの公式ドキュメントの「Vulkan」>「For Windows Users:」>「Git Bash MINGW64」の項に沿って環境を構築する。

スタートメニューから「Git Bash」を起動して以下のコマンドを実行する。

Git Bash
git clone https://github.com/ggml-org/llama.cpp
cd llama.cpp
cmake -B build -DGGML_VULKAN=ON
cmake --build build --config Release

これでエラーなくmakeが通ればOK。念のために動作確認をする場合、適当なggufファイルを

などからダウンロードして以下のコマンドを実行する。

Git Bash
bin/Release/llama-cli -m "X:\Downloads\qwen2.5-3b-instruct-q4_k_m.gguf" -c 8192 -cnv

これでネイティブコードをコンパイルする環境は構築できた。本題のllama-cpp-pythonのインストールを実施する。

私はminoforgeを使用しているので「Miniforge Prompt」を起動し、以下のコマンドでPythonの仮想環境を作成&有効化する(Pythonの環境管理は何でもよいはず)。

Miniforge Prompt
conda create -n llama-cpp-python-vulkan python=3.9.23
conda activate llama-cpp-python-vulkan

その場(llama-cpp-python-vulkanがactiveとなったMiniforge Prompt内)で「Git Bash」を起動する。

Miniforge Prompt
"C:\Program Files\Git\git-bash.exe" --cd-to-home

起動した「Git Bash」内で以下のコマンドを実行する。

Git Bash
export CMAKE_ARGS="-DGGML_VULKAN=on"
pip install -v llama-cpp-python[server]

最後に「Successfully」と表示されたら成功。

「Miniforge Prompt」に戻ってOpenAI互換APIのサーバとして起動してみる。

Miniforge Prompt
python -m llama_cpp.server --model "C:\Users\yamag\Downloads\qwen2.5-3b-instruct-q4_k_m.gguf" --n_ctx 16384

「Git Bash」で以下のコマンドを実行し呼び出してみる。

Git Bash
curl http://localhost:8000/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
 "messages": [
  {"role": "system", "content": "You are a helpful assistant."},
  {"role": "user", "content": "Hello!"}
  ]
}'

それらしいレスポンスがあれば成功である。

llama-cpp-pythonをサーバとして仕立てる

目的のモデルをダウンロードする。

今回は上記から「Q8_0」と「F16」をダウンロードした。

以下のようなJSONファイルを作成する。

llama-cpp-python-server.json
{
	"host" : "0.0.0.0",
	"port" : 18880,
	"models" : [
		{
			"model" : "X:\\Downloads\\gpt-oss-20b-Q8_0.gguf",
			"model_alias" : "gpt-oss-20b-Q8_0",
			"n_gpu_layers" : -1,
			"n_threads" : -1,
			"n_batch" : 512,
			"n_ctx" : 16384
		},
		{
			"model" : "X:\\Downloads\\gpt-oss-20b-F16.gguf",
			"model_alias" : "gpt-oss-20b-F16",
			"n_gpu_layers" : -1,
			"n_threads" : -1,
			"n_batch" : 512,
			"n_ctx" : 16384
		}
	]
}

以下のようなバッチファイルを作成する。環境変数「GGML_VK_VISIBLE_DEVICES」で使用するデバイスを指定できる。

llama-cpp-python-server.bat
chcp 65001

call C:\Users\you\miniforge3\Scripts\activate.bat
call conda activate llama-cpp-python-vulkan

REM AMD Radeon 780Mを使用する
REM set GGML_VK_VISIBLE_DEVICES=0

REM Intel Arc A770を使用する
set GGML_VK_VISIBLE_DEVICES=1

python -m llama_cpp.server --config_file "X:\llama-cpp-python-server.json"

バッチファイルを実行すればサーバが起動する。

あとは「 http://locahost:18880/v1 」をエンドポイントとして指定すればOpenAI互換APIサーバとして使用可能だ。

b1.jpg
Open Web UIでの設定例。APIキーは適当で良し。

パフォーマンス

Open Web UIから「gpt-oss-20b-F16」を選択して『おみくじアプリを作って。Webベースで1画面。すべてを1つのhtmlファイルに記述して。』と問いかけた時の速度は以下の通り。

b3.jpg
Intel Arc A770 16GB: 45.26 tps

b2.jpg
AMD Radeon 780M 16GB+: 15.68 tps

思考中の文字列が画面に生で出てしまうが(Open Web UI側の対応が必要なようだ)最終的な出力内容に問題はないようだ。追ってOpenHands CLIやVS Codeのcontinueでも試してみたい。

感想

  • A770はVulkan APIでも十分パフォーマンスが出る
  • やはりiGPUとdGPUの差は大きい
  • gpt-oss-20bはいまのところ期待したほどではない
  • ollamaでA770、llama-cpp-pythonで780Mを動かせばPC1台でLLM同士の対話など試せるかも?
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?