動的計算グラフとGPU対応操作

動的計算グラフとGPU対応操作

[[409431]]

動的計算グラフ

ディープラーニングに PyTorch を使用する主な理由の 1 つは、定義した関数の勾配/導関数を自動的に取得できることです。

入力を操作すると、計算グラフが自動的に作成されます。この図は、動的な計算プロセスが入力から出力までどのように進行するかを示しています。

計算グラフの概念を理解するために、次の関数のグラフを作成します。

ここにパラメータがあり、出力を最適化(最大化または最小化)したいと考えています。これを行うには、勾配を取得する必要があります。

次のコードでは、[1,2,3]を入力として使用します。

  1. # 浮動小数点テンソルのみが勾配を持つ
  2. x = torch.arange(1,4, dtype=torch.float32, requires_grad= True )
  3. print( "X" 、x)
  4.  
  5. # X テンソル([1., 2., 3.], requires_grad= True )

ここで、計算グラフを段階的に構築し、各操作が計算グラフにどのように追加されるかを理解しましょう。

  1. a = x + 2
  2. b = a ** 2
  3. c = b + 3
  4. y = c.mean()
  5. 印刷( "Y" , y)
  6. # Yテンソル(19.6667, grad_fn=<MeanBackward0>)

上記のステートメントを使用して、次のような計算グラフを作成します (Tensorboard で表示)。

入力 x と定数 2 に基づいて a を計算し、b は a の 2 乗、などとなります。計算グラフは、多くの場合、逆方向に視覚化されます (矢印は結果から入力を指します)。

最後の出力で backward() 関数を呼び出すことで、計算グラフでバックプロパゲーションを実行できます。この関数は、属性 requires_grad=True を持つ各テンソルの勾配を計算します。

  1. y.後方()

最後に、x.grad を印刷して対応するグラデーションを表示します。

GPUサポート操作

Pytorch では、GPU は数千の小さな操作を並行して実行できるため、ニューラル ネットワークで大規模な行列演算を実行するのに最適です。

「CPUとGPUの違い」

PyTorch は GPU を使用するため、NVIDIA の CUDA と cuDNN をインストールする必要があります。

次のコードは、GPU が使用可能かどうかを確認します。

  1. gpu_avail = torch.cuda.is_available()
  2. print( "GPUは利用可能ですか? %s" % str(gpu_avail))

次に、テンソルを作成し、それを GPU デバイスにプッシュします。

  1. デバイス = torch.device( "cuda" ) torch.cuda.is_available() の場合、そうでない場合はtorch.device( "cpu" )
  2. print( "デバイス" , デバイス)
  3. x = x.to (デバイス)
  4. print( "X" 、x)
  5.  
  6. # デバイスcuda
  7. # X テンソル([1., 1., 1.], デバイス= 'cuda:0' )

cuda の横のゼロは、これがコンピューター上の 0 番目の GPU デバイスであることを示します。したがって、PyTorch はマルチ GPU システムもサポートします。

以下は、CPU での大規模な行列乗算の実行時間と GPU での操作の比較です。

システムの構成に応じて、GPU アクセラレーションによりモデルのトレーニング速度が向上します。

<<:  市場規模は100億を超え、マシンビジョンはブルーオーシャンの傾向を示す

>>:  AI+教育はさまざまなシナリオに適用されていることをご存知ですか?

推薦する

人工知能はどのような通信分野に応用されていますか?

1. 異常なネットワークトラフィックの検出コンピュータネットワークは現代人の生活に欠かせないもので...

CVサークル対決:GoogleがViTGANを提案、GANをトレーニングするためにビジュアルトランスフォーマーを使用

[[411040]]畳み込みニューラル ネットワーク (CNN) は、その強力な畳み込み機能とプーリ...

...

従来のデータを超えて、インテリジェンスへの道はどこにあるのでしょうか?

AI がビジネスの世界に導入されたとき、AI は顧客体験に革命をもたらすなど、顧客のニーズをよりよ...

...

AISpeechは多角的な視点からAIエコロジカルバリアを構築し、AIチップはラストマイルを切り開く

最近、シビチェンがチップスを製造しているというニュースが大きな騒ぎを引き起こしました。 [[2547...

機械学習を簡単に理解!クラスタリング、回帰、分類アルゴリズムを説明する 3 つのケース

機械はどのように学習し、何を学ぶのでしょうか?人間はどうやって機械に学習を教えるのでしょうか?この記...

清華大学がJittorをオープンソース化:国内初の大学開発のディープラーニングフレームワーク、PyTorchへのワンクリック変換が可能

Theano、Caffeに続き、大学主導のディープラーニングフレームワークがオープンソース化され、国...

CMU、NUS、Fudanが共同でDataLabを立ち上げ:テキストフィールドでのデータ分析と処理のためのMatlabを作成

データ中心の人工知能の構築は、今後のトレンドになりつつあります。 1年以上前、アンドリュー・ン氏は「...

2022年にJAXを使うべきでしょうか? GitHubには16,000個のスターがあるが、この若いツールは完璧ではない

2018 年後半の発売以来、JAX の人気は着実に高まっています。 2020年、DeepMindは研...

推奨に値する 7 つの優れたオープンソース AI ライブラリ

[[406029]] [51CTO.com クイック翻訳]人工知能 (AI) 研究の分野では、Ten...

2020年のトレンドの方向性: 産業用インターネットの人工知能アプリケーションが基礎となる

年末が近づくにつれ、多くの研究機関が2020年のトレンド予測を発表しています。これらの予測の多くは、...

Groq LPU の謎を解明: 世界最速のハードウェア アクセラレータの基礎となるアーキテクチャ設計!

先月末、スタートアップ企業Groqの製品が一夜にして人気を博した。自社開発のハードウェアアクセラレー...

Jetson - Nano Opencv の基本的な使用方法

序文:前回のJetson Nanoの記事では、学習のためのアイデアや教材を紹介しました。今日は、引き...