2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【ローカルLLM】Windows11,WSL2上でのllama-cpp-python環境構築(CPU/GPU利用)

Last updated at Posted at 2024-08-26

概要

ローカルLLMをPython環境で使ってみたかったので環境構築。

llama-cpp-pythonをWSL上の仮想環境で動かそうとしたら、GPU使用の部分でだいぶハマったので自分用にメモ。(2024/8/26)
URL:(https://github.com/abetlen/llama-cpp-python)

環境

OS:Windows11 64bit
CPU:Intel Corei9 13900k
GPU:RTX4090 24GB
WSL:2.2.4.0 (Ubuntu22.04)
CUDA Toolkit:12.2
NVIDIA Driver:560.94
Python:3.12.3
rye:0.39.0

CPU版のインストール

CPUで使用する場合CUDA等は必要ありません。
WSLを立ち上げて、pip installするだけです。

$ wsl 
$ . .venv/bin/activate #仮想環境のアクティベート
$ Python3 -m pip install llama-cpp-python 

※pip installできない場合は、パッケージとPythonのバージョンが対応しているか確認してください。

モデルのダウンロード

Hugging FaceからGGUF形式のものをダウンロードする
目当てのモデルのGGUF形式が無い場合は、llama.cppにGGUF変換の説明があります。
今回はこちらをGGUFに変換したものを使用しました。

動作確認 (モデルのロードに結構時間がかかります)

demo_cpu.py
from llama_cpp import Llama
llm=Llama(model_path="/path/*.gguf")

無事に終了すればOKです。

GPU版のインストール

NVIDIA Driverのバージョン確認

$ nvidia-smi

※表示されているCUDA Versionが対応しているか確認してください。表示されているCUDA Version以下であれば対応しています。

CUDA Toolkitのバージョン確認

※WSLではNVIDIA DriverはWindowsと共通ですが、CUDAやcuDNNは新たに別でインストールする必要があります。

$ wsl
$ . .venv/bin/activate
$ nvcc -V

<確認>
cudaを新たにインストールした場合は再起動する。
versionが出ない場合、~/.bashrcにPATHが通っているか確認する。

念のため、torchでCUDAが使えるか確認 (飛ばしてもOK)

cuda_test.py
from torch
print(torch.cuda.is_available())
True 

Falseが出る場合

$python3 -m pip show torch

でcuda対応versionか確認する。

llama_cpp_pythonのインストール

$ CMAKE_ARGS="-DGGML_CUDA=on -DLLAVA_BUILD=off" pip install --upgrade --force-reinstall llama_cpp_python

動作確認

demo_gpu.py
from llama_cpp import Llama
llm = Llama(model_path="/path/*.gguf", n_gpu_layers=10)

実行時にGPU名、CUDAの表記、BLAS=1等が出ていればOK

---------
llama_new_context_with_model:  CUDA_Host  output buffer size =     0.49 MiB
llama_new_context_with_model:      CUDA0 compute buffer size =   669.48 MiB
llama_new_context_with_model:  CUDA_Host compute buffer size =     9.01 MiB
llama_new_context_with_model: graph nodes  = 1030
llama_new_context_with_model: graph splits = 356
AVX = 1 | AVX_VNNI = 1 | AVX2 = 1 | AVX512 = 0 | AVX512_VBMI = 0 | AVX512_VNNI = 0 | AVX512_BF16 = 0 | FMA = 1 | NEON = 0 | SVE = 0 | ARM_FMA = 0 | F16C = 1 | FP16_VA = 0 | WASM_SIMD = 0 | BLAS = 1 | SSE3 = 1 | SSSE3 = 1 | VSX = 0 | MATMUL_INT8 = 0 | LLAMAFILE = 1 |
---------

(おまけ)なぞなぞを試してみた結果

Riddle.py
from llama_cpp import Llama
llm = Llama(model_path="./path/*.gguf", n_gpu_layers=10)
out=llm("Q:朝は四本足、昼は二本足、夕は三本足。この生き物は何か? A: ")
pritn(out)
out
'choices': [{'text': ' これはイカ。イカは朝にtentacleを伸ばす', 

まさかのイカ、、、イカ???

2
2
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
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?