WSL2でPhi-4(phi-4とphi-4-gguf)を試してみる
「小型かつ高性能で複雑なタスクに強く、企業向けセキュリティやコンプライアンスにも対応した新世代の言語モデルとして、文書要約からチャットボット開発まで多彩な用途への活用が期待されている」らしいPhi-4を試してみます。
今回は「phi-4」とその量子化モデルである「phi-4-gguf」の2つを試します。
使用するPCはドスパラさんの「GALLERIA UL9C-R49」。スペックは
・CPU: Intel® Core™ i9-13900HX Processor
・Mem: 64 GB
・GPU: NVIDIA® GeForce RTX™ 4090 Laptop GPU(16GB)・GPU: NVIDIA® GeForce RTX™ 4090 (24GB) ※外付け
・OS: Ubuntu22.04 on WSL2(Windows 11)
です。
1. phi-4を試す
(1) 準備
環境作ります。
python3 -m venv phi4
cd $_
source bin/activate
# phi-4
pip install accelerate transformers torch
(2) 流し込むコード
コードはこちら。ダウンロードして保存してお使いください。
phi-4向け: llm-scripts/scripts/query.py
(3) 試してみる
RTX 4090(24GB)一枚だと乗りきらないので、二枚(40GB = 24+16)で載せます。
CUDA_VISIBLE_DEVICES=0,1 python -i ~/scripts/query.py \
--model-path microsoft/phi-4 \
--max-tokens 16384
では聞いてみます。
>>> history = q("ドラえもんとはなにか")
--- prompt
<|im_start|>system<|im_sep|>あなたは誠実で優秀な日本人のアシスタントです。<|im_end|><|im_start|>user<|im_sep|>ドラえもんとはなにか<|im_end|><|im_start|>assistant<|im_sep|>
--- output
主要キャラクターの本名にかなりの誤りが・・・。
小説を書いてもらいましょう。
>>> history = q("ドラえもんを主人公とした小説を5万文字程度で書いてください。")
なんだか面白そう。
2. phi-4-ggufを試す
続いて量子化モデルを試します。
(1) 準備
環境を作ります。
python3 -m venv phi-4-gguf
cd $_
続いてパッケージのインストールです。
CMAKE_ARGS="-DGGML_CUDA=on" pip install llama-cpp-python
アップグレードするときは
CMAKE_ARGS="-DGGML_CUDA=on" pip install llama-cpp-python --upgrade --force-reinstall --no-cache-dir
です。
(2) 流し込むコード
コードはこちら。ダウンロードして保存してお使いください。
phi-4-gguf向け: llm-scripts/scripts/query4llama-cpp.py
(3) 試してみる
pythonコマンド実行します。4bit量子化モデルを指定します。
CUDA_VISIBLE_DEVICES=0 python -i ~/scripts/query4llama-cpp.py \
--model-path microsoft/phi-4 \
--ggml-model-path microsoft/phi-4-gguf \
--ggml-model-file phi-4-q4.gguf \
--max-tokens 16384 \
--n-ctx 16384
実行時に出力される内容を見るに14Bではなく、15Bなんですね。
ggml_cuda_init: GGML_CUDA_FORCE_MMQ: no
ggml_cuda_init: GGML_CUDA_FORCE_CUBLAS: no
ggml_cuda_init: found 1 CUDA devices:
Device 0: NVIDIA GeForce RTX 4090, compute capability 8.9, VMM: yes
llama_model_load_from_file: using device CUDA0 (NVIDIA GeForce RTX 4090) - 22994 MiB free
llama_model_loader: loaded meta data with 33 key-value pairs and 243 tensors from /home/shoji_noguchi/.cache/huggingface/hub/models--microsoft--phi-4-gguf/snapshots/b1e764cfdbdd0a3ed824d6a8424129eb0a2232ff/phi-4-q4.gguf (version GGUF V3 (latest))
llama_model_loader: Dumping metadata keys/values. Note: KV overrides do not apply in this output.
llama_model_loader: - kv 0: general.architecture str = phi3
llama_model_loader: - kv 1: general.type str = model
llama_model_loader: - kv 2: general.name str = Phi 4
llama_model_loader: - kv 3: general.version str = 4
llama_model_loader: - kv 4: general.organization str = Microsoft
llama_model_loader: - kv 5: general.basename str = phi
llama_model_loader: - kv 6: general.size_label str = 15B
llama_model_loader: - kv 7: general.license str = mit
(snip)
では聞いてみましょう。
>>> history = q("ドラえもんとはなにか")
VRAMは、13GB超過です。16GBあればOKですね。