GPUのセットアップってどうやるの？初心者による初心者のための備忘録

#はじめに
今回はGPU付きのPCを購入して、機械学習でGPUが使えているかどうか確認するまでをまとめます。
GPUが使えているかどうかの確認方法は、「PytorchがGPUを認識するかどうか」です。
ちなみに[前回(OSをインストールしました)](https://qiita.com/Kaiya_ppp/items/048a3142f5f85cf0d8db)の続きです。

#そもそもGPUを扱うためには
いろんな解説書を読んでいると「ディープラーニングではGPUを使ったほうがいいです。GPUを使えるかどうか確認するためにはこのコマンドを入れてみてください」みたいなコメント、多くないですか？でも実際はいろんなセットアップが必要で、調べてみたらいろんな記事が出てきて…となって大変です(私は実際に下調べが大変でした)。

というわけで解説していきます。
正直、わかっている人から見たら怒るような文章なんじゃないかと思いますが、どうか見逃してください(もしくはコメントでこっそり教えてください)

#今回解説する内容
スタートはPCのセットアップが終わった状態([前回参照]((https://qiita.com/Kaiya_ppp/items/048a3142f5f85cf0d8db)))。
ゴールはGPUを認識しているかどうかPytorchで確認することです。

そこで、今回解説(というか紹介)する内容は、
・cudaをインストールする
・anacondaを使ってpythonやその周辺をインストールする
・GPUを使うための仮想環境を作成する
。GPUを認識するかチェックする

です。

#その前に
最初に紹介しておきますが、ユーザー名を全角文字で作っているとanacondaのインストールに高確率で失敗します。その場合は何とかしてユーザー名を半角に変更してください。
また、私と同じPCを使っているなら基本的には大丈夫ですが、GPUはNVIDIA社製のものしか基本的には使いません。シリーズとしては、GeforceやQuadroといったシリーズです。

#cudaをインストールする
これを忘れると機械学習でGPUを認識できません。
まずはサイトの[ダウンロードページ](https://developer.nvidia.com/cuda-toolkit-archive)にアクセスします。「なんでArchiveなんだ」と思うかもしれませんが、最新版だとPytorchが対応していない(2021/1/31)からです。今回は[11.0 update](https://developer.nvidia.com/cuda-11.0-update1-download-archive)を選択。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1070392/d009783a-b58d-629d-e68a-aab7fd3c1364.png)
自分のPCに対応したバージョンを選択して、右下のボタンからダウンロード＆実行。
セットアップに関してですが、基本的にいじるようなことはないです。全部デフォルトで進めます。これでcudaのインストールはおしまいです。


#anacondaを使ってpythonやその周辺をインストールする
やり方はとてもシンプルで、
1.[公式ページ](https://www.anaconda.com/products/individual)の下方から、自分のPCにあったエディションをダウンロードする。

![スクリーンショット 2021-02-02 215342.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1070392/23360451-6862-b547-41be-8af19759209f.png)

Windowsの64bitバージョンが大体の人だと思います。

2.ダウンロードして（基本的には）デフォルト設定のままインストールする。
基本的に難しいことは考えなくて大丈夫でしょう。慣れてきたらいろいろいじってみてください。

これでpythonやその周辺のインストールはおしまいです。

#GPUを使うための仮想環境を作成する
この辺で結構つまづく人が多いのではないかと思います。私はつまづきました。
黒い画面で頑張っていろんなコマンドを打って…みたいなのは初心者にはハードルが高いんじゃないかと…。
![スクリーンショット 2021-02-02 220803.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1070392/e6656234-6a4e-14f2-0cb2-17b335acc572.png)
こんな画面ですね。(そもそも"管理者として実行"をしなきゃいけなかったり…)
これをやらなくてすむ方法がありました。間違っていたら悲しい。

ここでやることは「Anaconda Navigatorを使って仮想環境を作る」です。

1. Anaconda Navigatorを開く
![スクリーンショット 2021-02-02 221153.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1070392/b5d31243-cd0f-1a31-3c81-adff8abe36bc.png)
左下のスタートを開き、その中に「Anaconda3(64bit)」というファイルがあるはずです。その中のAnaconda Navigatorを開きます。
2. 左のリストから「Environments」を選択する
![スクリーンショット 2021-01-31 215854.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1070392/938dc514-f63e-7871-5b2e-6bce7ffdcb3a.png)
そのボタンを押すと画像のような画面になります。
新しい仮想環境を作成するために、下にある「Create」というボタンを押します。
3. 新しい仮想環境の名前を決めます。
![スクリーンショット 2021-01-31 215920.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1070392/2e18f662-a825-bd17-b270-611f01ad9341.png)
名前はひとまず"test_gpu"にしました。
デフォルトの設定のままでよいです。仮想環境の設定を始めるために、このままCreateボタンを押します。

4. 仮想環境を作成する。
![スクリーンショット 2021-02-02 223809.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1070392/ceaa0b7f-ef0b-68f4-d96e-1da354c54346.png)
結局、例の「黒い画面」を走査する必要はありますが、よく解説されている方法よりは簡単だと思います。「黒い画面」であるターミナルを開くために、今作った"test_gpu"を選択した後、矢印を押します。ここの選択肢で"Open Terminal"を選択します。ここでGPUを使えるPytorchを仮想環境に入れるために
`conda install pytorch torchvision torchaudio cudatoolkit=11.0 -c pytorch` を入力します。細かい話は下枠に簡単にまとめたので、知りたい人は読んでみてください。飛ばしても構いません。
![スクリーンショット 2021-01-31 225840_LI.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1070392/30682c10-0d02-43f8-b6a4-330f12e4103f.jpeg)
をしてEnterを押すと、仮想環境へのインストールが始まります。途中、インストールを続けるか聞かれます。`y`を入力してEnterを押すとインストールが進行します。

>>ここではPytorchを通じてGPUが使えているかどうか確認したいので、[Pytorchの公式ページ](https://pytorch.org/)へ行き、コマンドを入手します。このページの下のほうに、installする際のコマンドを表示してくれる便利な場所があります。
![スクリーンショット 2021-02-02 225420.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1070392/1d66acf4-238e-db98-b019-2360d8378a0f.png)
こんな感じで黒線の部分にコマンドが表示されます。
`conda install pytorch torchvision torchaudio cudatoolkit=11.0 -c pytorch`
上から三行目のPackageですが、CondaかPipを選べば特に問題ないはずです。下から二番目のcudaですが、先ほど11.0を選んだのでそれを選択しています。

これでチェック用の仮想環境が作成できました。ターミナル(黒い画面)を閉じます。

#GPUを認識するかチェックする
今回はよく使われているJupyter notebookを使って確認したいと思います。
AnacondaNavigatorの左のタブから"Home"を選択し、ホーム画面に戻ります。
仮想環境を選択し、仮想環境が適用されたエディタ[^1] を開いていきます。
まず、Applications on から仮想環境を選択します。
![スクリーンショット 2021-02-02 222720.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1070392/4202c29d-24db-5d67-fb13-03b0a086d3af.png)
Applications onの左の枠を選択すると、仮想環境が選択できます。先ほど作成した"test_gpu"を選択しましょう。
次にエディタを選択します。オレンジ色が素敵な"Jupyter notebook"を探します。

![スクリーンショット 2021-02-02 230731.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1070392/19adeb66-f717-9e5d-b928-4d734b1b0f7c.png)
ここでは"Launch"と書かれていますが、もともとは"Install"と書いてあります。これをクリックして、Jupyter notebookをインストールします。そうすると勝手に起動するはずです。しなかったら"Launch"のボタンを押してください。

そうするとブラウザが立ち上がり、Jupyter が起動します。
![スクリーンショット 2021-02-02 231410.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1070392/5967e4a6-b63a-bd26-44eb-7ae2561cbfaa.png)
Documentsフォルダの中に新しいフォルダを作り、その中でプログラムを動かします。
最初の画面でDucumentsを選択します。そうするとディレクトリ(プログラムにとっての「現在地」みたいなもの)の移動が発生します。
そこで、新しいフォルダを作成するために右上の"New"ボタンを押し、Folderを選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1070392/1a738b04-3cd5-ac64-524e-f245d55cd267.png)
そうすると"Untitled Folder"が作成されるので、そこを選択します。
そこで今度はここでプログラムを開始するために右上Newのボタンから Python3を選択します。

そうすると新しいタブが開き、プログラムを入力できる状態になります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1070392/cf46d0ae-c501-8607-ca1a-00578d6f70ff.png)
ここで、最終的な目的であった、「GPUを認識できるか確認する」ために
`import torch`
`print(torch.cuda.is_available())`
と入力し、ctrl+enterもしくはshift+Enterを押します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1070392/c094688d-bc25-6121-2448-39bef6a325d3.png)
"True"と表示されていれば成功です。意外とあっけないです。

以上が、PCを購入し、セットアップがまさに終わった状態から、GPUの動作を確認するまででした。

[^1]: この表現、大丈夫なのだろうか…