見出し画像

Windows11とWSL上でGPUを利用するDeep Learningの実行環境を作ってみた

こんにちは。分析屋の桜井です。

先日、GPUを使って色々遊びたくてご家庭用のGPUとして丁度よさそうなRTX3060を買ってしまいました。

執筆時点ではRTX4070の発売も近いですが、なんとなくローカルで色々試してみたい!というモチベーションに対しては10万円は高いし、待つのは嫌だなと感じてこちらを選んで見た次第です。

RTX4070発売後も、まずローカルで環境を作りたいという人に向けては丁度よい立ち位置GPUになるのではと思っています。

さて、前置きはこのくらいにしておいて実際に環境を作った際に悩んだポイント、とりあえずで環境を作成する前に注意するポイントがいくつかあったので整理、共有を本記事では行っていきたいと思います。

前提

前提として筆者のPCのスペックは以下です。

  • CPU:Ryzen 5 5600

  • GPU:RTX 3060-12GB

  • memory:64GB

全体と作業としては以下の流れです。

  1. wsl2の導入【windowsでの作業】

  2. グラフィックボードに対応したドライバのインストール【windowsでの作業】

  3. 任意のpython環境の作成【wsl上での作業】

  4. CUDA Toolkitの導入【wsl上での作業】

  5. cuDNNのインストール【windows and wsl上での作業】

作業上の注意点として以下の2点があります。

  1. CUDAのバージョンはどんな環境で何を動かしたいかで変わるので事前確認必須(一応下位互換はある模様 参考リンク)

  2. CUDA Toolkitのdistributionはしっかり設定する事。本記事ではWSL-Ubuntuを選択()

どちらも間違えるとやり直しになってしまうので気を付けましょう。

▼wsl2の導入

手前味噌で恐縮ですが以下の記事の手順をご覧ください。本記事執筆時点では簡単なdistoributionは自動で20.04LTSが選択されるはずです。

https://note.com/bunsekiya_tech/n/ndbca9a0bec00

▼グラフィックボードに対応したドライバのインストール

windows上での作業になります。
以下からグラフィックボードに合うドライバーを選んでインストールして下さい。

https://www.nvidia.co.jp/Download/index.aspx?lang=jp

上記のインストール完了後wsl上のubuntuにて以下を入力します。

# コマンド
nvidia-smi

以下のようにログが出れば問題無く認識が出来ています。

XXXXX@DESKTOP:~$ nvidia-smi
Mon XXX XX XX:XX:XX 2023
+---------------------------------------------------------------------------------------+
| NVIDIA-SMI 530.41.03              Driver Version: 531.41       CUDA Version: 12.1     |
|-----------------------------------------+----------------------+----------------------+
| GPU  Name                  Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf            Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|                                         |                      |               MIG M. |
|=========================================+======================+======================|
|   0  NVIDIA GeForce RTX 3060         On | 00000000:07:00.0  On |                  N/A |
|  0%   43C    P8               17W / 170W|    865MiB / 12288MiB |      3%      Default |
|                                         |                      |                  N/A |
+-----------------------------------------+----------------------+----------------------+

+---------------------------------------------------------------------------------------+
| Processes:                                                                            |
|  GPU   GI   CI        PID   Type   Process name                            GPU Memory |
|        ID   ID                                                             Usage      |
|=======================================================================================|
|    0   N/A  N/A       665      G   /Xwayland                                 N/A      |
+---------------------------------------------------------------------------------------+

▼任意のpython環境の作成

wsl上での作業になります。

何を動かしたいかで変わる部分でもあるかと思うのでこちらは任意の環境を作成して頂く形になります。
pyenvがAnacondaをインストールするのが一番簡単に用意できると思うのでおススメです。

参考記事はこちら→pyenvによる環境構築

ただしこの部分も何をしたいかで変わる上、Anacondaはインストールに時間を要するため、やり直しにならないよう注意しましょう。

▼CUDA Toolkitの導入【wsl上での作業】

wsl上での作業になります。

以下のサイトより、環境にあったCUDA toolkitを選択し、インストールします。

https://developer.nvidia.com/cuda-downloads

上記で説明した環境と同じ場合は以下表のような形式で選択を進めます。

ここまで選択を進めると
「Download Installer for Linux WSL-Ubuntu 2.0 x86_64」と表示されコマンドが出現しますので
一行ずつ実行していきましょう。結構時間がかかるはずです。

# 参考

$ wget https://developer.download.nvidia.com/compute/cuda/repos/wsl-ubuntu/x86_64/cuda-wsl-ubuntu.pin
$ sudo mv cuda-wsl-ubuntu.pin /etc/apt/preferences.d/cuda-repository-pin-600
$ wget https://developer.download.nvidia.com/compute/cuda/12.1.1/local_installers/cuda-repo-wsl-ubuntu-12-1-local_12.1.1-1_amd64.deb
$ sudo dpkg -i cuda-repo-wsl-ubuntu-12-1-local_12.1.1-1_amd64.deb
$ sudo cp /var/cuda-repo-wsl-ubuntu-12-1-local/cuda-*-keyring.gpg /usr/share/keyrings/
$ sudo apt-get update
$ sudo apt-get -y install cuda

最終行まで実行したら再起動し以下のコマンドを実行し、バージョンを確認します。

nvcc -V

ここまでの手順が上手くいっている場合は以下のように表示されます。

XXXX@DESKTOP:~$ nvcc -V
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2023 NVIDIA Corporation
Built on Tue_Feb__7_19:32:13_PST_2023
Cuda compilation tools, release 12.1, V12.1.66
Build cuda_12.1.r12.1/compiler.32415258_0

nvcc not found が表示され、上手くいかない場合は以下のコマンドを実行してください。
(もしうまくいかなかった場合はnvcc not foundで検索し、環境に合わせたコマンドを実行してください)

echo 'export PATH="/usr/local/cuda/bin:$PATH"' >> ~/.bashrc
echo 'export LD_LIBRARY_PATH="/usr/local/cuda/lib64:$LD_LIBRARY_PATH"' >> ~/.bashrc

exec "$SHELL"

▼cuDNNのインストール【windows and wsl上での作業】

windows上でファイルをダウンロードし、配置
wsl上で実行する手順になります。

以下からバージョンを合わせた必要なファイルをダウンロードします。
ちなみにサインインが必要なのでアカウントがない方は作りましょう。

https://developer.nvidia.com/rdp/cudnn-download

今回の環境ではCUDAのバージョンが12.1なので

「Download cuDNN v8.9.0 (April 11th, 2023), for CUDA 12.x」を押下し環境を選択します。
CUDA toolkitの時はWSL-Ubuntuを選びましたが、ここでは「Local Installer for Ubuntu20.04 x86_64 (Deb)」であることにご留意下さい。

ダウンロード終了後、wsl側へファイルを配置します。
わかりやすい位置で実行したい為、起動時の直下であるホームディレクトリに配置する事とします。

windowsのエクスプローラを開くと最下部寄りにペンギンマークで「Linux」とあると思いますので、その中の Ubuntu/home/ユーザー名のフォルダの中にファイルを配置しましょう。

正しく配置出来ている場合、wsl起動してすぐに以下のコマンドを実行したらファイル名が出てくるかと思います。

ls

配置されている事が確認できたら以下のコマンドを実行します。
実際に実行する際は下のコマンドコピペでは無く、ダウンロードしたファイル名に即したものに置き換えて下さい。筆者の場合は以下でした。

sudo dpkg -i cudnn-local-repo-ubuntu2004-8.8.1.3_1.0-1_amd64.deb

実行が完了したら以下のようなメッセージが出ます。

The public CUDA GPG key does not appear to be installed.
To install the key, run this command:
sudo ~~~~///環境によって違うメッセージ///~~~~~

こちらのメッセージからsudo以下をコピペし最後に実行してください。

ここまでで環境構築は完了です。
お疲れさまでした。

▼次回の予定

本当は何かアプリケーションを実行するところまで書きたかったのですが、本手順の紹介だけでまぁまぁのボリュームになってしまったので一度締めさせて頂きます。

次回以降、画像生成や物体認識に挑戦できたらと思います。
ここまで読んでくださってありがとうございました。


ここまでお読みいただき、ありがとうございました!
この記事が少しでも参考になりましたら「スキ」を押していただけると幸いです!

株式会社分析屋について

ホームページはこちら。

noteでの会社紹介記事はこちら。

【データ分析で日本を豊かに】
分析屋はシステム分野・ライフサイエンス分野・マーケティング分野の知見を生かし、多種多様な分野の企業様のデータ分析のご支援をさせていただいております。 「あなたの問題解決をする」をモットーに、お客様の抱える課題にあわせた解析・分析手法を用いて、問題解決へのお手伝いをいたします!
【マーケティング】
マーケティング戦略上の目的に向けて、各種のデータ統合及び加工ならびにPDCAサイクル運用全般を支援や高度なデータ分析技術により複雑な課題解決に向けての分析サービスを提供いたします。
【システム】
アプリケーション開発やデータベース構築、WEBサイト構築、運用保守業務などお客様の問題やご要望に沿ってご支援いたします。
【ライフサイエンス】
機械学習や各種アルゴリズムなどの解析アルゴリズム開発サービスを提供いたします。過去には医療系のバイタルデータを扱った解析が主でしたが、今後はそれらで培った経験・技術を工業など他の分野の企業様の問題解決にも役立てていく方針です。
【SES】
SESサービスも行っております。

この記事が参加している募集

やってみた