Pytorch + CUDA インストールしてみよう

この記事は自分のノートのため、Pytorchをインストールする方法をまとめる。
OSX持てないから、今回の記事では Linux / WSL と　Windowsでインストールする。

# 前提

WindowsでWSLを使用したいとき、必ず```WSL2```をインストールする

```sh
wsl --install
wsl --version
wsl --update
```

wsl2をインストールしたあと、Ubuntu WSLをインストールする。今回は、```Ubuntu 20.04```を利用する。

Ubuntu WSL installation package
https://aka.ms/wslubuntu2004


# CUDA インストール


## ▶ （任意）CUDA削除
:::note warn
Driverを壊れる可能性をありますので、CUDA削除を任意にしました。インストールをできなかった場合は、ご試してください。
:::

```Ubuntu```をインストールする時に、元々の```CUDA```パッケージがあるかもしれませんので、とりあえず存在するパッケージを削除する。

https://docs.nvidia.com/cuda/cuda-installation-guide-linux/index.html#removing-cuda-toolkit-and-driver
https://qiita.com/cacaoMath/items/65d6a76b545eb662f581

```sh
sudo dnf remove "cuda*" "*cublas*" "*cufft*" "*cufile*" "*curand*" \
"*cusolver*" "*cusparse*" "*gds-tools*" "*npp*" "*nvjpeg*" "nsight*" "*nvvm*"

sudo apt-get --purge remove "*nvidia*" "libxnvctrl*"

sudo apt-get autoremove
sudo apt-get autoclean
```

## ▶ 特定なCUDA Toolkitバージョンのインストール
まず必要なライブラリをインストールします。
```
sudo apt-get install build-essential
```

今回の記事では```CUDA 11.7```をインストールする、何故かというと、一番相性が良かったです。

参考 : https://developer.nvidia.com/cuda-11-7-0-download-archive?target_os=Linux&target_arch=x86_64&Distribution=WSL-Ubuntu&target_version=2.0&target_type=deb_local


```sh
sudo apt-key del 7fa2af80

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/11.7.0/local_installers/cuda-repo-wsl-ubuntu-11-7-local_11.7.0-1_amd64.deb
sudo dpkg -i cuda-repo-wsl-ubuntu-11-7-local_11.7.0-1_amd64.deb
sudo cp /var/cuda-repo-wsl-ubuntu-11-7-local/cuda-*-keyring.gpg /usr/share/keyrings/
sudo apt-get update
sudo apt-get -y install cuda
```

失敗した場合は、```runfile```バージョンでインストールする。


```sh
wget https://developer.download.nvidia.com/compute/cuda/11.7.0/local_installers/cuda_11.7.0_515.43.04_linux.run
sudo sh cuda_11.7.0_515.43.04_linux.run
```

## ▶ Windowsでインストール

Windowsを利用する場合はこちらで簡単にインストールができます。

https://developer.nvidia.com/cuda-11-7-0-download-archive


# Pythonのインストール

まずPythonをインストールする。一番おすすめバージョンは```3.8```と```3.9```。この二つのバージョンが一番相性は良い。

```sh
sudo apt-get update
sudo apt install python3.8 python3.8-dev -y
sudo apt install python3.9 python3.9-dev -y
```

## ▶ On Windows
Windowsを利用する方は、以下のリンクでインストールを簡単にできます。```Windows Installer```を選択してダウンロードが始まる。そのあと単純にインストールするだけ。

https://www.python.org/downloads/release/python-3810/

https://www.python.org/downloads/release/python-3911/

インストールの場所ができるだけ覚えやすいところで、例えば```C:\Python```

# Python開発環境をインストールする

会社員の場合はCondaを使いえないかもしれません（ライセンス関係）。あらゆるライセンス問題をよける避けるため、```venv```を推薦する。

## ▶ Virtual Envwrapper (Linux)

```sh
mkdir .virtualenv
sudo apt install python3-pip

pip3 install virtualenv
```

インストール後, ```virtualenv```のインストールの場所が表示されます。それをどこかノートでコピーしてください。

```sh
pip3 install virtualenvwrapper
```
インストール後, ```virtualenvwrapper```のインストールの場所が表示されます。それをどこかノートでコピーしてください。
インストール後、```bashrc```を更新する。

```
export VIRTUALENVWRAPPER_PYTHON= <python3の場所>
export WORKON_HOME=$HOME/<venvのインストール場所>
export VIRTUALENVWRAPPER_VIRTUALENV=<venvのインストール場所>
source <virtualenvwrapper.sh>の場所
```

```bashrc```ファイルを保存して、WSLを再起動する。

## ▶ On Windows

Pythonをインストールしたあと、```cmd```を開いて、```virtualenvwrapper```を```pip```でインストールする。

```
pip install virtualenvwrapper-win
```
https://qiita.com/maisuto/items/91143d26b609d6cfc1ac


# Env (Python環境)の作り方


## ▶ On Linux / WSL
```sh
% For python 3.8
mkvirtualenv --python=`which python3.8` <vir_env_name>

% For python 3.9
mkvirtualenv --python=`which python3.9` <vir_env_name>
```

## ▶ On Windows
```sh
mkvirtualenv --python=<python location with specific version> <virtual env name>
```

```sh
% example ↓↓
mkvirtualenv --python=C:\Python\Python39\python.exe torch
```

## 他のvirtualenvwrapperの使い方
[Cheat Sheet](https://gist.github.com/whhone/a2b3baa132269483ae1eebcc4a83955c)


# 基本AIための必要なライブラリ

```sh
pip install matplotlib scipy opencv-python tslearn pandas
python.exe -m pip install --upgrade pip
```

## ▶ Pytorchのインストール
```Tensorflow```よりは```Pytorch```が分かりやすいと開発もしやすいとおもいます。古いプロジェクトは```torch```バージョン ```>= 1.0```と```<= 2.0```を利用方は多い。
前回インストールした```CUDA 11.7```に対して、相性なPytorchをインストールする。

```sh
pip install torch==1.13.0+cu117 torchvision==0.14.0+cu117 torchaudio==0.13.0 --extra-index-url  https://download.pytorch.org/whl/cu117
```

```conda```を利用する場合は、以下のコマンドでインストールができます。

```sh
conda install pytorch==1.13.0 torchvision==0.14.0 torchaudio==0.13.0 pytorch-cuda=11.7 -c pytorch -c nvidia
```

:::note warn
これは```CUDA 11.7```のみに対応します。他の```CUDA```バージョンをインストールする場合は以下のリンクで相性なバージョンをインストールしてください。
:::
https://pytorch.org/get-started/previous-versions/