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 でモデルを追跡している場合、GPU の利用可能性を含むすべてのシステムメトリクスが自動的にログに記録されます。特に重要なメトリクスとしては、GPU メモリ使用量、GPU 利用率、CPU 利用率 などがあります。記録されるメトリクスの一覧は次をご覧ください。こちら
以下のメディアパネルは、トレーニング中に W&B によって自動的に記録されたシステムメトリクスの一部を示しています。



Run set
0


まとめ

本記事では、Keras を使ってディープラーニングの研究で GPU を活用し、Weights & Biases を用いてリソース消費を監視する方法を紹介しました。Lambda Labs によるこちらの優れた記事もあわせてご覧ください。システムリソースの利用状況の追跡トレーニング中に Weights & Biases を使用する場合。

Weights & Biases を試す

Weights & Biases は、機械学習の実験管理を支援します。私たちのツールを使って、実行のハイパーパラメータと出力メトリクスをログし、結果を可視化・比較して、学びをすばやく同僚と共有しましょう。
はじめる5分で試せます。あるいは、Replitで2つの簡単な実験を実行して、W&Bが作業の整理にどう役立つかを確認してください。以下の手順に従ってください。
手順
  1. 下の緑色の「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