1

私は示唆している私のTensorFlow深い学習モデルのGPUのメモリフットプリントにラフなハンドルを取得しようとしている、としてa heuristic I've foundに頼っています:TensorFlowモデルのGPUフットプリントはどのように見積もりますか?

ConvNet アーキテクチャをされて構築する際の注意すべき最大のボトルネックメモリのボトルネック。最新のGPUの多くは、3/4/6GBメモリの制限が で、最高のGPUは約12GBのメモリを搭載しています。中間ボリュームサイズから

  • : を追跡するために、メモリの三の大原因があるこれらは、同じサイズの生ConvNetのすべての層で アクティベーションの数、またその勾配 (あります)。通常、ほとんどのアクティベーションは、ConvNetの最初のレイヤー(つまり、最初のコンバレイヤー)にあります。これらは、バックプロパゲーションに必要であるため、 の周囲に保持されていますが、テスト時にのみConvNetを実行する巧妙な 実装では、 のアクティブ化をすべてのレイヤーに保存し、下の レイヤーのアクティベーションパラメータサイズから

  • :最適化は勢い、 Adagrad、またはRMSPropを使用している場合 はまた、一般的にステップキャッシュをバックプロパゲーション、 中にネットワークパラメータ、その勾配を保持していること、これらは数字があります。したがって、パラメータ ベクトルだけを格納するメモリには、通常少なくとも3または の係数を乗算する必要があります。

  • すべてConvNet実装は、 等の画像データバッチ、おそらくそれらの拡張バージョンとして

もし値の合計数の概算を取得したら

(のためのその他のメモリを維持しなければなりません アクティベーション、グラデーション、その他)は、数字を (GB単位)に変換する必要があります。値の数を取って、生の のバイト数を得るには4を掛けてください(浮動小数点はすべて4バイトなので、多分倍精度の場合は8 )。1024を複数回に分けて、メモリの量を にしますKB単位、MB単位、および最終的にGB単位で指定します。ネットワーク が適合しない場合は、一般に の起動によってメモリの大部分が消費されるため、「適合させる」というヒューリスティックは、 のバッチサイズを減らすことです。

しかし、私はいくつかのことがわからないよ:

  1. この計算でバッチサイズの役割は何ですか?アクティベーションにのみ影響するようです(つまり、バッチサイズでアクティベーションを増やす必要があります)。あれは正しいですか?
  2. GPU(12GiBあり)とCPUのRAM(TensorFlow)にどのようなものがあるのか​​をどのように知るのですか?一般的にこれらのほとんどすべてがGPUにありますか?
  3. 「雑貨」はどこで探すべきですか?入力データはこれの主なソースですか?もしそうなら、そのようなデータの1つのバッチ、またはそのすべてを数えますか?

答えて

0
  1. あなたは、サンプルのバッチを使用して訓練された単一のモデルを得ま​​した。 単一バッチは複数の入力で構成されています。 これらの入力は、モデルを使用して並列処理されます。 したがって、バッチに一定数の要素が含まれている場合、すべての要素がCPU(入力キューがある場所)からGPUに転送されます。 したがって、GPUは状態tでモデルを使用して計算します(このモデルは、時間ステップtでパラメータがフリーズされたモデルとみなされます)。入力バッチのすべての要素に対して順方向パスが使用されます。 次に、ネットワークの結果はベクトルに蓄積され、ここでバックプロパゲーション・ステップが計算されます。 時刻(t)のモデルを使用して、バッチのすべての要素について勾配が計算され(逆方向パス)、ベクトルに累積され、平均化されます。 この平均を使用すると、モデルパラメータが更新され、モデルはt+1の状態になります。

  2. 性質上シーケンシャルなすべてのことがCPU上にあります(入力スレッド、キュー、単一入力値の処理などについて考える...)。 しかし、ネットワークが処理すべきすべてがCPUからGPUに転送されます。

  3. 雑多な部分が少し混乱します。私は、著者がデータ拡大と、単一の入力が無限の方法で拡張できるということについて話していると思います。したがって、入力のバッチに変換を適用する場合(たとえば、画像のバッチ全体にランダムな明るさを適用する場合)、これらの変換をCPUからGPUおよび拡張バージョンに転送する必要があることを考慮する必要があります処理前にGPUメモリに格納する必要があります。 しかし、それは同じことを行うことが考え転送動作は、あなただけ(もちろんpreprocesingのための)いくつかの計算時間を失う、割り当てられたメモリは同じ

+0

は、あなたが質問1-3にその翻訳することができます元のテキストを解釈することに関係しているからですか? – orome

+0

3つの異なるパラグラフ、ポイントごとに1つがあります。しかし、私は編集するつもりです – nessuno

関連する問題