AnacondaでのCUDA, torchvision, torchaudio, PyTorch, Pythonのインストール （Linux）

# はじめに
機械学習をするためにubuntu 20.04 で環境構築をしたが、依存関係がややこしかったのでまとめておく。

# Anaconda
Anacondaの概念を図にすると
![anaconda_description.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4109139/efa10b9e-2f54-41d8-88e0-7a00c7620531.png) 

https://abstech.tech/629/


# Anacondaインストール参考サイト

https://qiita.com/Z0E/items/d574302747df8f0ee4eb

https://www.pc-koubou.jp/magazine/38846

https://www.kkaneko.jp/tools/ubuntu/anaconda.html



# 対応表
NVIDIA driver & CUDA

https://docs.nvidia.com/cuda/cuda-toolkit-release-notes/index.html#:~:text=Table%202.%20CUDA%20Toolkit%20and%20Minimum%20Required%20Driver%20Version%20for%20CUDA%20Minor%20Version%20Compatibility

CUDA & torch, torchvision, torchaudio

https://pytorch.org/get-started/previous-versions/

CUDA & Python

https://www.tensorflow.org/install/source?hl=ja

Tensorflow GPU & CUDA, CuDNN, Python

https://tecsingularity.com/cuda/version-2/


# 環境構築

## CUDA, torchvision, torchaudio, PyTorch, Pythonのインストール
### インストール例
以下2023年時点で使用できたバージョン関係

CUDA 12.2 の場合
```bash
conda create --name cu122 python=3.8 -y
conda activate cu122
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu122
```

CUDA 11.7 の場合
```bash
conda create --name cu117 python=3.8 -y
conda activate cu117
pip install torch==1.13.1+cu117 torchvision==0.14.1+cu117 torchaudio==0.13.1 -f https://download.pytorch.org/whl/torch_stable.html
```

CUDA 11.3 の場合
```bash
conda create --name cu113 python=3.8 -y 
conda activate cu113
conda install pytorch==1.12.1 torchvision==0.13.1 torchaudio==0.12.1 cudatoolkit=11.3 -c pytorch
```

よく使うモジュールのインストール
```bash
pip install numpy opencv-python matplotlib pillow tqdm argparse json5
```

一度(base)が消えるまでdeactivate
```bash
conda deactivate
conda deactivate
conda activate cu117
```

動作確認
```bash
python3
```
```python
import torch
print(f"torch version: {torch.__version__}")  # PyTorchのバージョンを表示
print(f"CUDA version: {torch.version.cuda}")  # CUDAのバージョンを表示
print(f"torch & cuda: {torch.cuda.is_available()}")  # CUDAが利用可能かどうかを確認
import torchvision
print(f"torchvision: {torchvision.__version__}")
# torch version: 1.13.1+cu117
# CUDA version: 11.7
# torch & cuda: True
# torchvision: 0.14.1+cu117
```

## 期待はずれのバージョンがでる or 他の環境パスのCUDAモジュールでエラーが出る場合
1. 一度Anacondaを(base)が消えるまでdeactivate
2. 再度activateする


# Anacondaコマンド
https://blog.mktia.com/how-to-create-and-remove-virtual-environment-on-anaconda/

環境確認
```bash
conda-env list
```

環境削除
```bash
conda remove -n env_name --all
```

環境エクスポート
```bash
conda env export -n env_name > env_file_name.yml
# conda env export -n cu117 > cu117_nvidia-driver535.yml # 例
```

環境インポート
```bash
conda env create -f env_file_name.yml -n new_env_name
# conda env create -f cu117_nvidia-driver535.yml -n cu117 # 例
```


<!-- 
# 以下メモ

conda create -n cuda117 python=3.10

## CUDA 11.7
```bash
conda install pytorch==2.0.1 torchvision==0.15.2 torchaudio==2.0.2 pytorch-cuda=11.7 -c pytorch -c nvidia
```
```bash
nano ~/.bashrc
export PATH="/home/your_username/anaconda3/envs/tf291/bin:$PATH"
export LD_LIBRARY_PATH="/home/your_username/anaconda3/envs/tf291/lib:$LD_LIBRARY_PATH"
# Ctrl + O : 変更を保存, Ctrl + x : エディタを閉じる
source ~/.bashrc
```

## Python tensorflow CUDA cuDNN
Python=3.10,  tensorflow=2.11.0 CUDA=11.2, cuDNN=8.1


## 環境構築
```bash
python -m pip install --upgrade pip
conda create -n hpe python=3.10
conda activate hpe
```

## CUDA 11.3
```bash
conda install pytorch==1.12.1 torchvision==0.13.1 torchaudio==0.12.1 cudatoolkit=11.3 -c pytorch
```

## CUDA 11.7
```bash
conda install pytorch==2.0.1 torchvision==0.15.2 torchaudio==2.0.2 pytorch-cuda=11.7 -c pytorch -c nvidia
conda install torch==2.0.1+cu117 torchvision==0.15.2+cu117 torchaudio==2.0.2+cu117 -f https://download.pytorch.org/whl/torch_stable.html
```

## CUDA 12.1
```bash
conda install pytorch==2.2.1 torchvision==0.17.1 torchaudio==2.2.1 pytorch-cuda=12.1 -c pytorch -c nvidia
sh conda_mk_env.sh

#conda install tensorflow-gpu=2.16.1
#conda install -c conda-forge cudatoolkit=12.3
#conda install -c conda-forge cudnn=8.9

conda install -c conda-forge numpy opencv pandas matplotlib pillow tqdm scipy

conda install -c conda-forge efficientnet
```


## PyTorch Geometricのインストール手順
```bash
pip install torch-scatter -f https://data.pyg.org/whl/torch-1.13.1+cu117.html
pip install torch-sparse -f https://data.pyg.org/whl/torch-1.13.1+cu117.html
pip install torch-cluster -f https://data.pyg.org/whl/torch-1.13.1+cu117.html
pip install torch-spline-conv -f https://data.pyg.org/whl/torch-1.13.1+cu117.html

pip install torch-geometric

```

```bash
import torch_geometric
print("torch_geometric has been successfully installed.")
```




<br><br>


```bash
sudo update-alternatives --config cuda
```
 -->