1
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?

WSL2でCUDAを使ったローカルLLM環境を構築する

Posted at

NVIDIAのGPUが普段遊んでいるので、WSL2で手軽に使えるローカルLLM環境を作ってみます。

参考にしたURL
https://docs.nvidia.com/cuda/wsl-user-guide/contents.html

環境の前提条件

  • NVIDIAのGPUがインストール済み
  • Windows11上のWSL2上にUbuntu 24.04LTSがセットアップ済み

予備知識

WSL2上のNVIDIAドライバはWindows版のドライバに依存します。
WindowsにNVIDIAドライバを入れて、WSL2上のUbuntuにCUDA Toolkitを入れる下準備が必要です。

手順

  • Windows上でNVIDIAビデオドライバが古い場合は、アップデートします。
    最新版だと、CUDA Toolkitのバージョンがないかもしれないので、事前に確認しておくとよいです。Windows のコマンドプロンプトで、nvidia-smiコマンドを使って確認します。
    以下の場合、CUDAバージョンが 12.6 ということがわかります。
nvidia-smi --version
NVIDIA-SMI version  : 561.09
NVML version        : 561.09
DRIVER version      : 561.09
CUDA Version        : 12.6
  • Linuxで、NVIDIAのCUDA Toolkit をダウンロードします。CUDAバージョンが同じものを選びます。
    https://developer.nvidia.com/cuda-toolkit
    WSL2上に入れるので、Linux → x86_64 → WSL-Ubuntu → 2.0 → deb(local) の順で選びます。(Ubuntuのバージョンは特に関係ない模様・・・)

image.png

  • 下のほうに、インストール手順が出てきますので、これを順番に実行していきます。

image.png

本体ファイルは3.1GBほどあるので、少し時間がかかります。

wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2404/x86_64/cuda-ubuntu2404.pin
sudo mv cuda-ubuntu2404.pin /etc/apt/preferences.d/cuda-repository-pin-600
wget https://developer.download.nvidia.com/compute/cuda/12.6.1/local_installers/cuda-repo-ubuntu2404-12-6-local_12.6.1-560.35.03-1_amd64.deb
sudo dpkg -i cuda-repo-ubuntu2404-12-6-local_12.6.1-560.35.03-1_amd64.deb
sudo cp /var/cuda-repo-ubuntu2404-12-6-local/cuda-*-keyring.gpg /usr/share/keyrings/
sudo apt-get update
sudo apt-get -y install cuda-toolkit-12-6
  • CUDA Toolkit のbin と lib64を、環境変数のPATHとLD_LIBRARY_PATH に設定しておきます。
~/.bashrc
export PATH="/usr/local/cuda/bin:$PATH"
export LD_LIBRARY_PATH="/usr/local/cuda/lib64:$LD_LIBRARY_PATH"

現在のシェルにも設定しておきます。

source ~/.bashrc

ターミナルから起動したときは、~/.bashrcが読まれないので、~/.profile から.bashrcが読み込まれるようにしておきます。

~/.profile
#!/bin/bash
if [[ -f ~/.bashrc ]] ; then
    .  ~/.bashrc
fi
  • NVIDIAのドライバーのバージョン確認しておきます。
    ターミナルから以下のように打って、情報出てくれば、大丈夫です。
nvcc -V
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2024 NVIDIA Corporation
Built on Fri_Jun_14_16:34:21_PDT_2024
Cuda compilation tools, release 12.6, V12.6.20
Build cuda_12.6.r12.6/compiler.34431801_0```

nvccコマンドがないと言われたら、今一度PATH環境変数を確認しましょう。

image.png

image.png

  • これを順に実行していきます。
wget https://developer.download.nvidia.com/compute/cudnn/9.4.0/local_installers/cudnn-local-repo-ubuntu2404-9.4.0_1.0-1_amd64.deb
sudo dpkg -i cudnn-local-repo-ubuntu2404-9.4.0_1.0-1_amd64.deb
sudo cp /var/cudnn-local-repo-ubuntu2404-9.4.0/cudnn-*-keyring.gpg /usr/share/keyrings/
sudo apt-get update
sudo apt-get -y install cudnn
  • llama-cpp-pythonをインストールする前に、pythonの仮想環境をvenvで作っておきます。
    仮想環境名: .llm
foo@ubuntu:~/project$ python3 -m venv .llm
foo@ubuntu:~/project$ source ./llm/bin/activate
(.llm) foo@ubuntu:~/project$
  • llama-cpp-python をインストールします。
    CMAKE_ARGSにCUDAを有効にする定義を設定して実行します。コンパイルにはちょっと時間がかかります。
(.llm) foo@ubuntu:~/project$ CMAKE_ARGS="-DGGML_CUDA=on" FORCE_CMAKE=1 pip install llama-cpp-python --force-reinstall --no-cache-dir
  • LLMモデルファイルをダウンロードして、Pythonスクリプトファイルを作るフォルダの近くに置きます。
    日本語に対応した素晴らしいggufファイルをダウンロードします。5GB弱あります。
    https://huggingface.co/elyza/Llama-3-ELYZA-JP-8B-GGUF
    (以下のスクリプトからの参照先は、 elyza サブディレクトリにしています。)
sample.py
from llama_cpp import Llama

llm = Llama(
    model_path="elyza/Llama-3-ELYZA-JP-8B-q4_k_m.gguf",
    n_gpu_layers=10    #GPUを使う指定をする。
)

prompt = """
質問: アメリカの首都はどこですか?
答え: """

output = llm(
    prompt=prompt,
    stop=["質問:", "答え:", "\n"],
    echo=True,
)

print(output["choices"][0]["text"])

こんな感じで答えてくれました。

質問: アメリカの首都はどこですか?
答え: ワシントンD.C.です。
1
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
1
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?