PyTorch で GPU を使う方法
PyTorch でディープラーニングモデルに GPU を活用するための短いチュートリアル。GPU の利用可能性の確認から、活用状況の可視化までを扱います。
Created on August 11|Last edited on August 11
Comment
目次
はじめに
この記事では、GPU を活用し、より細かく制御する方法を順を追って解説します。
学習中の GPU や CPU の利用状況を自動で記録するために Weights & Biases を使用します。これにより、多数のモデルを訓練するときでも計算リソースの活用状況を簡単に監視できます。
GPU の利用可能性を確認する
GPU の利用可能性を確認する最も簡単な方法は、torch.cuda.is_available() を呼び出すことです。torch.cuda.is_available()True が返れば、システムに NVIDIA ドライバーが正しくインストールされています。
>>> import torch>>> torch.cuda.is_available()
GPU を使う ― 注意点
- 既定ではテンソルは CPU 上で生成され、モデルも CPU 上で初期化されます。したがって、処理を GPU で実行するように手動で確認する必要があります。>>> X_train = torch.FloatTensor([0., 1., 2.])>>> X_train.is_cudaFalse
- PyTorch には、CPU で生成したテンソルを GPU に転送するための使いやすい API が用意されています。幸い、新しく生成されるテンソルは親テンソルと同じデバイス上に作成されます。>>> X_train = X_train.to(device)>>> X_train.is_cudaTrue
- 同じ考え方はモデルにも当てはまります。model = MyModel(args)model.to(device)
- そのため、データとモデルをGPUへ転送する必要があります。では、何がdevice?
- 一般的な PyTorch の書き方として、たいていは次のように命名された変数を初期化します。device学習に使用するデバイス(CPU か GPU)を保持する変数です。device = torch.device("cuda:0" if torch.cuda.is_available() else "cpu")print(device)
torch.cuda パッケージ
PyTorch では、torch.cudatorch.cuda パッケージには CUDA テンソル型の追加サポートがあり、CPU テンソルと同等の機能を提供しつつ、計算には GPU を利用します。
- テンソルを GPU 上に置きたい場合は、呼び出してください.cuda()。>>> X_train = torch.FloatTensor([0., 1., 2.])>>> X_train = X_train.cuda()
- GPU 上のテンソルを CPU に戻したい場合は、次の呼び出しを使います.cpu()通常は、モデルの出力(テンソル)を CPU に戻すために使用します。
- 現在選択されているデバイスのインデックスを取得するには。>>> torch.cuda.current_device() # returns 0 in my case
- 利用可能な GPU の数を取得するには。>>> torch.cuda.device_count() # returns 1 in my case
- デバイス名を取得するには。>>> torch.cuda.get_device_name(0) # good old Tesla K80
例とGPU指標の可視化
リンク先の Colab ノートブックを使って、PyTorch でシンプルな MNIST 分類器を学習してみましょう。ノートブックは Weights & Biases と統合されています。Weights & Biases
Weights & Biases でモデルをトラッキングしている場合、GPU 使用率を含むシステム指標が自動的に記録されます。特に重要な指標としては、GPU メモリ割り当て、GPU 使用率、CPU 使用率などがあります。記録される指標の全一覧は次をご覧ください。こちら。
下のメディアパネルは、学習中に Weights & Biases(W&B)が自動で記録したシステム指標の一部を表示しています。
Run set
0
概要
この記事では、PyTorch を使ったディープラーニング研究で GPU を活用し、Weights & Biases を用いてリソースの活用状況を可視化する方法を紹介しました。あわせて、Lambda Labs による優れた記事もご覧ください。システム資源の活用状況の追跡Weights & Biases を使った学習中に
Weights & Biases を試す
Weights & Biases は、機械学習実験の管理を支援します。実行からハイパーパラメータと出力指標を記録し、結果を可視化・比較して、発見を素早く同僚と共有できます。
手順
- 下の緑色の「Run」ボタンをクリックしてください初回に Run をクリックすると、Replit がマシンを割り当てるまでに約 30–45 秒かかります。
- ターミナルウィンドウの指示に従ってください(右下のペイン)
- ターミナルウィンドウのサイズを変更できます(右下)拡大表示
PyTorch に関心のある方へのおすすめ記事
PyTorch Dropout for regularization - tutorial
Learn how to regularize your PyTorch model with Dropout, complete with a code tutorial and interactive visualizations
How to save and load models in PyTorch
This article is a machine learning tutorial on how to save and load your models in PyTorch using Weights & Biases for version control.
Image Classification Using PyTorch Lightning and Weights & Biases
This article provides a practical introduction on how to use PyTorch Lightning to improve the readability and reproducibility of your PyTorch code.
Add a comment
You imported torch and checked whether Cuda is available or not. Which version of PyTorch were you installed? GPU version or cpuonly version?
1 reply