Skip to main content

PyTorch で GPU を使う方法

PyTorch でディープラーニングモデルに GPU を活用するための短いチュートリアル。GPU の利用可能性の確認から、活用状況の可視化までを扱います。
Created on August 11|Last edited on August 11

目次

はじめに

この記事では、GPU を活用し、より細かく制御する方法を順を追って解説します。
学習中の GPU や CPU の利用状況を自動で記録するために Weights & Biases を使用します。これにより、多数のモデルを訓練するときでも計算リソースの活用状況を簡単に監視できます。
先に進む前に、まだであれば次の準備をしておくことをおすすめします。PyTorch が GPU を使用しているか確認する

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_cuda
    False
  • PyTorch には、CPU で生成したテンソルを GPU に転送するための使いやすい API が用意されています。幸い、新しく生成されるテンソルは親テンソルと同じデバイス上に作成されます。
    >>> X_train = X_train.to(device)
    >>> X_train.is_cuda
    True
  • 同じ考え方はモデルにも当てはまります。
    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 は、機械学習実験の管理を支援します。実行からハイパーパラメータと出力指標を記録し、結果を可視化・比較して、発見を素早く同僚と共有できます。
今すぐ開始5分で始めるか、Replitで2つの簡単な実験を実行して、Weights & Biases(W&B)が作業の整理にどう役立つかを確認しましょう。以下の手順に従ってください。
手順
  1. 下の緑色の「Run」ボタンをクリックしてください初回に Run をクリックすると、Replit がマシンを割り当てるまでに約 30–45 秒かかります。
  2. ターミナルウィンドウの指示に従ってください(右下のペイン)
  3. ターミナルウィンドウのサイズを変更できます(右下)拡大表示



PyTorch に関心のある方へのおすすめ記事



Sadegh Pouriyan
Sadegh Pouriyan •  
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