[PyTorch] Windows10 + Pipenv で PyTorch(GPU)を導入する

# はじめに
周りの方々がどんどんPyTorchいいぞ～って言いながら乗り換えていくなかで，Tensorflowが公式でTensorboardを使えるようにしてくれたの自分もでそろそろ乗り換えようと思いこの記事を書きました．

# 対象者
公式の 

```bash
pip3 install torch===1.3.1 torchvision===0.4.2 -f https://download.pytorch.org/whl/torch_stable.html 
```

で導入はできるけどこれ```pipenv install hogehoge```でやりたくねって人向け
なのでPythonの導入やCUDAの導入は特に書きませんのでそこを期待されている方はブラウザバックで！！
CUDAとか言ってるので今回はGPUに着目してやります．CPUのバージョンはやりません．

# 導入環境
- Windows 10 Pro for Workstations
- Nvidia Driver Version : 430.86
- CUDA : 10.0, V10.0.130
- cudnn : 7.6.2

# Pipenvの導入
Pipenvってどんなのと思った方は[このあたり](https://pipenv-ja.readthedocs.io/ja/translate-ja/)(1)を見てもらえるとよろしいかと．個人的な解釈ではSwiftで使われている[CocoaPods](https://cocoapods.org/)(2)と管理の仕方が近いと思っています．
では，インストールの前にpipを最新のバージョンに上げておきます．

```bash
pip install --upgrade pip
```
そしてPipenvのインストールですね

```
pip install pipenv
```
これでOKです．簡単ですね

(1) [Pipenv: 人間のためのPython開発ワーク](https://pipenv-ja.readthedocs.io/ja/translate-ja/)
(2) [CocoaPods](https://cocoapods.org/)

# PyTorchの導入
さてここからが問題なのですがWindowsだと

```
pipenv install torch torchvision
```
だけだと

```bash
'ERROR: Could not find a version that satisfies the requirement torch==1.3.1
```
こんな感じのエラーが返ってきちゃってうまくいかなんですよね・・・

なので

```
pipenv install [URL]
```
の形で導入していきます！

ちなみにPipのオプションで```--find-links```があるんですが[Pipenvにはない](https://github.com/pypa/pipenv/issues/2231)そうです(3)

(3) [--find-links (or similar) in PipEnv #2231](https://github.com/pypa/pipenv/issues/2231)


### URLを探しに行く
PyTorchの[公式サイト](https://pytorch.org/)(4)に行くと![スクリーンショット (23)-1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/182036/aadd3113-b7e2-0da7-f98d-4f512706df99.png)
こんな感じでダウンロードできるとこありますよね
今回注目するのは

```bash
https://download.pytorch.org/whl/nightly/cu101/torch_nightly.html
```
ここの部分です．実際にアクセスすると
![スクリーンショット (24)-1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/182036/d97a1be7-3560-bd86-e85b-13182b1c1541.png)
PyTorchのライブラリがたくさん置いてあるのでこの中から選んでいきます．

一応なんですが欲しいのはURLなので欲しいバージョンがあったら右クリックして[リンクのアドレスをコピー]とかしてもらえればURLが取得できるかと．

あと古いバージョン欲しいんじゃい！！って方は

```bash
https://download.pytorch.org/whl/torch_stable.html
```
こっちのURL踏んで探してもらったほうが幸せになれるかと

今回自分は

```
torch: "https://download.pytorch.org/whl/nightly/cu101/torch-1.4.0.dev20191202-cp37-cp37m-win_amd64.whl"
torchvision: "https://download.pytorch.org/whl/nightly/cu101/torchvision-0.5.0.dev20191203-cp37-cp37m-win_amd64.whl"
```
をとってきてます．

さて，あとは

```bash
pipenv install https://download.pytorch.org/whl/nightly/cu101/torch-1.4.0.dev20191202-cp37-cp37m-win_amd64.whl

pipenv install https://download.pytorch.org/whl/nightly/cu101/torchvision-0.5.0.dev20191203-cp37-cp37m-win_amd64.whl
```
すれば良しなにPipenv君が頑張ってくれます．

(4) [PyTorch](https://pytorch.org/)

### 導入できたかの確認
Pipenvはできた！！！でも動作確認もしないとですね！

```
pipenv run python -c "import torch; print(torch.cuda.is_available()); print(torch.cuda.get_device_name())"
```
魔法の一行です気にしないでください．（普通に他のもので確認していただいてもOKです)
返ってくる値としては

```
True
TITAN RTX [搭載されているGPUによって変わる]
```
と返してくれればここで一安心です．
あとは```pipenv shell```でやろうが```pipenv run```でやろうがお好きなままに・・・

# 最後に
今回はWindows10 + PipenvでPytorch（GPU)の導入方法について記事を書きました．
正直自分がはまってpipで入れたくない一心で探してたので正確かどうかはわかりません．
設定したPipfileは[GitHub](https://github.com/HamaguchiKazuki/pytorch_practice/tree/664f189e8bc5bfe688dd24e8eb275d9f8e4c0dec)に置いておくので，おとして```pipenv install```して動かしてみてください．

# リファレンス

(1) [Pipenv: 人間のためのPython開発ワーク](https://pipenv-ja.readthedocs.io/ja/translate-ja/)
(2) [CocoaPods](https://cocoapods.org/)
(3) [--find-links (or similar) in PipEnv #2231](https://github.com/pypa/pipenv/issues/2231)
(4) [PyTorch](https://pytorch.org/)