catch-img

Windows+WSL2+DockerでGPUの環境構築

Windows PCでGPUを使用する際に、Dockerを使うと簡単に環境を構築できます。

この記事では、Windows PCにWSL2、Docker、NVIDIAドライバ、CUDAをインストールして、GPUを使う方法を紹介します。


目次[非表示]

  1. 1.実行環境
  2. 2.NVIDIAドライバのアップグレード
  3. 3.WSL・Ubuntuのインストール
  4. 4.Dockerのリポジトリを設定する
  5. 5.Dockerをインストールする
  6. 6.NVIDIA Container Toolkit(CUDA)のインストール
  7. 7.Dockerデーモンの設定
  8. 8.動作確認
    1. 8.1.docker-composeファイルの作成
    2. 8.2.必要なパッケージをインストール
  9. 9.LLMならGPUクラウド
  10. 10.まとめ


実行環境

この記事では以下のスペックのローカル環境のWidows PCを使用しました。

  • OS:Windows 11
  • GPU:NVIDIA A4000
  • GPUメモリ(VRAM):16GB


NVIDIAドライバのアップグレード

NVIDIA Driverを最新版にアップグレードします。(NVIDIAドライバ515以上)

NVIDIAドライバダウンロードのページを開きます。

  最新の NVIDIA 公式ドライバーをダウンロード 最新の NVIDIA 公式ドライバーをダウンロード https://www.nvidia.co.jp/Download/index.aspx?lang=jp


ご使用のGPUのタイプにあわせて項目を選択します。

[オペレーティングシステム]はお使いのOSを選択してください。

[ダウンロードタイプ]は”Studio”が含まれる項目を選択してください。

項目を選択したら、[探す]ボタンを押します。

以下はGPUがNVIDIA RTX A4000の場合の例です。

llama-widows-gpu


続けて[ダウンロード]ボタン、[ダウンロードの同意]をクリックし、インストーラーをダウンロードします。

llama-widows-gpu


ダウンロードした[インストーラー]を実行し、インストールを開始します。

llama-widows-gpu


[NVIDIAインストーラーが終了しました]の表示がでたら、NVIDIAドライバのインストールが完了です。

llama-widows-gpu


WSL・Ubuntuのインストール

[スタート]から[コマンドプロンプト]を開きます。

llama-widows-gpu


コマンドプロンプトで次のコマンドを実行し、wsl2およびUbuntuをインストールします。

[Enter new UNIX username:] と表示がされるのでユーザー名を設定します。

この記事では”user”をユーザー名として設定します。

[New password:] と表示がされるので任意のパスワードを設定します。

wsl --install

llama-widows-gpu


Windowsを再起動し、変更を有効化します。


コマンドプロンプトで次のコマンドを実行し、WSLのバージョンを確認します。

wsl --list --verbose

llama-widows-gpu


VERSIONが[1]の場合は、次のコマンドを実行し、既存のディストリビューションをWSL2 に変更します。

※VERSIONが既に[2]の場合は、このステップは飛ばしてください。

wsl --set-version ubuntu 2


Wiindowsの[スタート]から”Ubuntu”を検索し、起動します。

llama-widows-gpu


Dockerのリポジトリを設定する

Ubuntuのコマンドラインからapt パッケージを更新します

sudo apt update

llama-widows-gpu


必要なパッケージをインストールします。

sudo apt install \
    apt-transport-https \
    ca-certificates \
    curl \
    gnupg-agent \
    software-properties-common

llama-widows-gpu


DockerのGPGキーを保存するためのディレクトリを作成します。

sudo mkdir -p /etc/apt/keyrings


Dockerの公式GPGキーをダウンロードし、ディレクトリに格納します。

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg


ファイルのアクセス許可を変更して、読み取り可能にします。

sudo chmod a+r /etc/apt/keyrings/docker.gpg


DockerのAPTリポジトリを /etc/apt/sources.list.d/docker.listファイルに追加します。

echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null


aptパッケージをアップデートします。

sudo apt update


Dockerをインストールする

docker最新版をインストールします。

sudo apt install docker-ce docker-ce-cli containerd.io


NVIDIA Container Toolkit(CUDA)のインストール

リポジトリとGPGキーのセットアップをします。

distribution=$(. /etc/os-release;echo $ID$VERSION_ID) \
      && curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg \
      && curl -s -L https://nvidia.github.io/libnvidia-container/$distribution/libnvidia-container.list | \
            sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | \
            sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list

llama-widows-gpu


パッケージをアップデートします。

sudo apt update


nvidia-container-toolkitをインストールします。

sudo apt install -y nvidia-container-toolkit


Dockerデーモンの設定

NVIDIA コンテナー ランタイムを認識するように Docker デーモンを構成します。

sudo nvidia-ctk runtime configure --runtime=docker


デフォルトのランタイムを設定した後、Docker デーモンを再起動してインストールを完了します。

sudo service docker restart


Dockerを使用するためにユーザーをDockerグループに追加する

sudo usermod -aG docker user


新しいグループにユーザーを切り替えます。

newgrp docker


再度Dockerを再起動します。

sudo service docker restart


ここまででDockerの環境構築が完了です。


動作確認

ここからは構築したDockerの動作確認を行います。

docker-composeファイルの作成

次をインストールするdocker-composeのファイルを作成します。

  • cuda11.8
  • cuDNN8
  • ubuntu22.04
  • Pytorch2.1.0
  • JupyterLab


docker-compse.ymlファイルを新規作成し、開きます。

nano docker-compose.yml


開いたdocker-compose.ymlファイルに次のコマンドをコピペします。

version: '3.8'
services:
  pytorch-jupyter:
    image: nvidia/cuda:11.8.0-cudnn8-devel-ubuntu22.04
    container_name: pytorch-jupyter-container
    runtime: nvidia
    command: /bin/bash -c "apt-get update && apt-get install -y python3 python3-pip && pip install torch==2.1.0 torchvision==0.16.0 torchaudio==2.1.0 --index-url https://download.pytorch.org/whl/cu118 && pip install Jupyter jupyterlab && jupyter lab --ip='*' --port=8888 --NotebookApp.token='' --NotebookApp.password='' --no-browser --allow-root"
    ports:
      - "8888:8888"

llama-widows-gpu


編集が完了したら、[Ctrl]+[S]で変更を保存し、[Ctrl]+[X]で編集モードから抜けます。


次のコマンドを実行し、docker-composeをインストールします。

sudo apt install docker-compose


次のコマンドを実行し、dockerイメージのビルドとコンテナの起動を行います。

docker-compose up

llama-widows-gpu

llama-widows-gpu


[Jupyter Server is running at : http://localhost:8888/lab]の表示ができたら、Jupyter Serverの起動完了です。


ブラウザの検索窓に”localhost:8888”を入力すると、Jupyter Labをブラウザで表示できます。

localhost:8888


停止するときは、コマンドプロンプトの画面で[Ctrl] + [C]を押すとコンテナが停止します。
もしくは次のコマンドでコンテナを停止します。

docker-compose down


コンテナを再起動するときは次のコマンドを実行します。

docker-compose restart


必要なパッケージをインストール

Jupyter Labのホーム画面で[Python3 ipykernel]を選択し、Notebookを開きます。


llama-widows-gpu


Jupyter Labのコードセルで次のコマンドを実行し、必要なパッケージをインストールします。

pip install transformers sentencepiece accelerate bitsandbytes scipy

lama-widows-gpu


次のコマンドを実行し、必要なライブラリをインポートします。

import torch
from torch import cuda,bfloat16
from transformers import AutoTokenizer,AutoModelForCausalLM
import transformers

llama-widows-gpu


次のコマンドを実行し、"True"が返るとPyTorchからGPUを認識できています。

torch.cuda.is_available()


LLMならGPUクラウド

LLMを使用する際には、モデルサイズやタスクに応じて必要なスペックが異なります。

LLMで使用されるGPUは高価なため、買い切りのオンプレミスよりも、コストパフォーマンスが高く柔軟な使い方ができるGPUクラウドをおすすめしています。


GPUクラウドのメリットは以下の通りです。

  • 必要なときだけ利用して、コストを最小限に抑えられる
  • タスクに応じてGPUサーバーを変更できる
  • 需要に応じてGPUサーバーを増減できる
  • 簡単に環境構築ができ、すぐに開発をスタートできる
  • 新しいGPUを利用できるため、陳腐化による買い替えが不要
  • GPUサーバーの高電力・熱管理が不要


コスパをお求めなら、メガクラウドと比較して50%以上安いGPUクラウドサービス「GPUSOROBAN」がおすすめです。


  生成AIに最適なGPUクラウド「高速コンピューティング」|GPUSOROBAN GPUSOROBANの高速コンピューティングは、NVIDIAの高速GPUが業界最安級で使えるクラウドサービスです。NVIDIA A100を始めする高速GPUにより、画像生成AI、大規模言語モデルLLM、機械学習、シミュレーションを高速化します。 業界最安級GPUクラウド | GPUSOROBAN


大規模なLLMを計算する場合は、NVIDIA H100のクラスタが使える「GPUSOROBAN AIスパコンクラウド」がおすすめです。


  LLMに最適なH100が業界最安級「AIスパコンクラウド」| GPUSOROBAN AIスパコンクラウドはNVIDIA H100を搭載したGPUインスタンスが業界最安級で使えるクラウドサービスです。HGX H100(H100 x8枚)を複数連結したクラスタ構成により、LLMやマルチモーダルAIの計算時間を短縮します。料金はAWSのH100インスタンスと比較して75%安く設定しており、大幅なコストダウンが可能です。 業界最安級GPUクラウド | GPUSOROBAN


まとめ

この記事では、Windows PCにWSL2、Docker、NVIDIAドライバ、CUDAをインストールして、GPUを使う方法を紹介しました。

GPU環境を構築する際は、各ソフトウェアのバージョンの不整合によりエラーが発生しやすいですので、ご注意ください。

MORE INFORMATION

GPUでお困りの方はGPUSOROBANで解決!
お気軽にご相談ください

10日間無料トライアル
詳しい資料はこちら
質問・相談はこちら