Skip to main content

PyTorchでGPUを使用する方法

PyTorchで深層学習モデルにGPUを使用するための短いチュートリアルです。GPUの利用可能性の確認から、使用可能なリソースの可視化までを説明します。
Created on August 12|Last edited on August 12

目次

はじめに

本記事では、GPUを正しく活用し、より細かく制御する方法を順を追って解説します。
Weights & Biases を使うと、GPU と CPU の使用率メトリクスを自動で記録できます。これにより、多数のモデルを学習させる際の計算資源の使用状況を簡単に可視化・監視できます。
先に進む前に、まだであれば次の準備をしておきましょう。 PyTorch が GPU を使用しているか確認する

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_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.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 は、機械学習実験の管理を支援します。実行からハイパーパラメータや出力メトリクスを記録し、結果を可視化・比較して、得られた知見を同僚とすばやく共有しましょう。
はじめに 5分で始めるか、Replitでクイックな実験を2本走らせて、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