PyTorchでGPUを使用する方法
PyTorchで深層学習モデルにGPUを使用するための短いチュートリアルです。GPUの利用可能性の確認から、使用可能なリソースの可視化までを説明します。
Created on August 12|Last edited on August 12
Comment
目次
はじめに
本記事では、GPUを正しく活用し、より細かく制御する方法を順を追って解説します。
Weights & Biases を使うと、GPU と CPU の使用率メトリクスを自動で記録できます。これにより、多数のモデルを学習させる際の計算資源の使用状況を簡単に可視化・監視できます。
GPU の利用可能性を確認する
GPU にアクセスできるかを確認する最も簡単な方法は、次を呼び出すことです。 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.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 使用率 などが含まれます。記録されるメトリクスの一覧は次をご覧ください。 こちら。
以下のメディアパネルは、学習中に 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