PyTorchのインストール(1.9.1 Windows版)

これまでKeras/Tensorflowしか触っていなかったのだが、Kaggle等をみてるいるとPyTorchも少しわかっていたほうがよいと思い、家のPCにPyTorchをインストールした。

pytorch.org

最初に、condaとpipとどちらでインストールするか悩む。一応、家のPC環境はcondaベースなのだが、Keras/Tensorflowなどcondaでは最新が入れられず、pipでインストールしているので混在環境になっている。

guppi524.hatenablog.jpで書いているとおり、このPCにはCUDA 11.4がすでにインストールされているので、 stackoverflow.com

あたりをみつつ、pipでインストールすることとした。

(base) D:\Users\hoge>pip3 install torch==1.9.1+cu111 torchvision==0.10.1+cu111 torchaudio===0.9.1 -f https://download.pytorch.org/whl/torch_stable.html
Looking in links: https://download.pytorch.org/whl/torch_stable.html
Collecting torch==1.9.1+cu111
  Downloading https://download.pytorch.org/whl/cu111/torch-1.9.1%2Bcu111-cp38-cp38-win_amd64.whl (3128.1 MB)
     |████████████████████████████████| 3128.1 MB 190 bytes/s
Requirement already satisfied: typing-extensions in d:\users\tkonishi\miniconda3\lib\site-packages (from torch==1.9.1+cu111) (3.10.0.2)
Collecting torchaudio===0.9.1
  Downloading https://download.pytorch.org/whl/torchaudio-0.9.1-cp38-cp38-win_amd64.whl (216 kB)
     |████████████████████████████████| 216 kB 1.7 MB/s
Collecting torchvision==0.10.1+cu111
  Downloading https://download.pytorch.org/whl/cu111/torchvision-0.10.1%2Bcu111-cp38-cp38-win_amd64.whl (2.5 MB)
     |████████████████████████████████| 2.5 MB 3.2 MB/s
Requirement already satisfied: numpy in d:\users\tkonishi\miniconda3\lib\site-packages (from torchvision==0.10.1+cu111) (1.19.5)
Requirement already satisfied: pillow>=5.3.0 in d:\users\tkonishi\miniconda3\lib\site-packages (from torchvision==0.10.1+cu111) (8.0.1)
Installing collected packages: torch, torchvision, torchaudio
Successfully installed torch-1.9.1+cu111 torchaudio-0.9.1 torchvision-0.10.1+cu111

インストールパッケージの大きさは3GBくらい。家のネット環境だとそこそこ時間がかかった。

(base) D:\Users\hoge>conda list | grep torch
torch                     1.9.1+cu111              pypi_0    pypi
torchaudio                0.9.1                    pypi_0    pypi
torchvision               0.10.1+cu111             pypi_0    pypi
(base) D:\Users\hoge>python
Python 3.8.5 (default, Sep  3 2020, 21:29:08) [MSC v.1916 64 bit (AMD64)] :: Anaconda, Inc. on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import torch
>>> torch.cuda.is_available()
True
>>> quit()

GPUも使えそう。

以下の本を買ったので、しばらく勉強してみる予定です。

www.amazon.co.jp

  • 追記

上の本の序章のnotebookを動かすのに、

pip install japanize_matplotlib
pip install torchsummary
pip install torchviz

が必要でした。

Tensorflow のアップデート(2.4.1 -> 2.6.0)

家のPCのTensorflowを2.4.1から2.6.0にアップデートした。

手順は、ほぼ前回どおり。

guppi524.hatenablog.jp

今回も、いつものごとく、下記のサイトの手順にお世話になる。ありがとうございます。

www.kkaneko.jp

インストールしたツールは、

  • CUDA 11.4 Update2
  • cuDNN 8.2.4
  • Tensorflow 2.6.0 (pipパッケージ)
    • Keras 2.6.0 (Tensorflow pipパッケージ組み込み)

Tensorflow 2.6.0から、kerasが統合されているっぽい

newreleases.io

github.com

なので、

pip install tensorflow

とすると、kerasも一緒にインストールされた。

Successfully installed clang-5.0 gast-0.4.0 grpcio-1.40.0 h5py-3.1.0 keras-2.6.0 tensorboard-2.6.0 tensorboard-data-server-0.6.1 tensorflow-2.6.0 tensorflow-estimator-2.6.0

動作自体は何事もなく動いたが、kerasのパッケージングまわりが変わっていると思われるため、下記の2つのインポートでエラーがでた。

from keras.optimizers import SGD
from keras.utils import plot_model

で、

from tensorflow.keras.optimizers import SGD
from tensorflow.keras.utils import plot_model

問題なく動作することを確認。

学習(model.fit)の速度は、2.4.1のときとそれほど変わらない感じでした。CIFAR-10 画像分類10エポックの学習時間は、以下のとおり。

2.6.0: 実行時間:125.13618564605713[秒]
2.4.1: 実行時間:128.62278509140015[秒]

ベンチマークに使用したモデルはこちら。 github.com

TensorflowでGPUを使うときと使わないときの速度比較

Tensorflow 2.6がリリースされているので、アップデートしようとしている。

前回のアップデート

guppi524.hatenablog.jp

の時に、GPUを使っても速度が速くならないのでは?みたいなことを言っていたのだが、あらためてCIFAR-10の画像分類でGPU使用と不使用の学習速度を比較してみた。

  • GPU使用: 実行時間:128.62278509140015[秒]
  • GPU不使用: 実行時間:1797.800853729248[秒]

14倍も違うじゃん。過去の自分がいかに適当でいい加減なことを言ってしまっていて反省。

ちなみにnvidia-smi -l 1でみるとGPU使用時のGPU使用率は95~96%くらいで推移しておりました。

ベンチマークに使用したモデルはこちら。 github.com

どうして時間は過去から未来に流れて行くのだろう? マクロな系における不可逆性 / 田崎晴明

www.youtube.com

学習院大学の田崎先生による、一般の人向けの時間の向きに関する解説動画。エーレンフェストの壺を使ったマクロ系の不可逆性のお話や、ボルツマンの時間の向きの考え方等、面白い動画です。

Tensorflow のアップデート(2.3.1 -> 2.4.1)

PyPIでTensorflow 2.4.1がリリースされたので、自宅のWindows 10のTensorflowを2.3.1から2.4.1にアップデートした。

  • 環境
    • OS Windows 10 Pro
    • CPU Intel Core i7-8700 3.2GHz
    • Memory 16GB
    • GPU NVIDIA GeForce GTX 1060 6GB
    • GPUドライバ NVIDIA Game Ready Driver 461.09 インストールしたバージョン
      • アップデート!
    • Visual Studio Community 2019
      • C++によるデスクトップ開発
    • Visual Studio Build Tools 2019
      • C++ Build Tools
    • CUDA 11.0 update1
      • アップデート!
    • cuDNN 8.0.5
      • アップデート!
    • Tensorflow 2.4.1 (pip)
      • アップデート!
    • Keras 2.4.3 (pip)

NVIDIA Developerのサイトから、CUDA Toolkit 11.0 Update1のインストールファイルをダウンロードしようとしたら、なぜかChromeからだとダウンロードできず。Microsoft Edgeだとダウンロードできました。cuDNNのインストールファイルはChromeからでもダウンロードできました。

いつものとおり、インストール手順は以下のサイトを参考にさせていただきました。

www.kkaneko.jp

アップデート自体はすんなり終わったのですが、ベンチマーク的に手元のMNISTのCNNを走らせると、なぜか2.3.1よりもずいぶんと時間がかかっており、ほとんどCPUと変わらないのでは、という状況。

Keras2.4.3+Tensorflow 2.3.1(GPU)の実行時間:144.0960705280304[秒]
Keras2.4.3+Tensorflow 2.4.1(GPU)の実行時間:259.58674144744873[秒]
Keras2.4.3+Tensorflow 2.3.1(CPU)の実行時間:294.20286107063293[秒]
Keras2.4.3+Tensorflow 2.4.1(CPU)の実行時間:300.50513529777527[秒]

nvidia-smi -l 1でみるとGPU Utilが23~24%だったので、GPUの使用以外のところにボトルネックがあるかも、とは思いましたが、詳細は不明。

Tensorflow 2.4.1をインストールすることで、Numpyも1.8.5から1.9.5に上げることができたので、ひとまずこのままにしておくが、ちょっと釈然としない。

ぐぐったところ github.com のようなものも見つけたものの、関係するかどうか不明。