59

これは、GPU メモリが少ない PyTorch ユーザーにとってかなり一般的なメッセージだと思います。

RuntimeError: CUDA out of memory. Tried to allocate  MiB (GPU ;  GiB total capacity;  GiB already allocated;  MiB free;  cached)

授業でオブジェクト検出アルゴリズムを研究したいと考えています。また、多くのディープ ラーニング アーキテクチャは大容量の GPU メモリを必要とするため、私のマシンではそれらのモデルをトレーニングできません。各レイヤーを GPU にロードしてからロードし直すことで、画像を処理しようとしました。

for m in self.children():
   m.cuda()
   X = m(X)
   m.cpu()
   torch.cuda.empty_cache()

しかし、あまり効果がないようです。GPU メモリをほとんど使用せずに大規模なディープ ラーニング モデルをトレーニングするためのヒントやコツはあるのでしょうか。前もって感謝します!

編集:私は深層学習の初心者です。ダミーの質問でしたら申し訳ありません:)

4

13 に答える 13

0

実装:

  1. バッチごとに画像を GPU にフィードします。

  2. トレーニングまたは推論中に小さなバッチ サイズを使用する。

  3. 小さいイメージ サイズで入力イメージのサイズを変更します。

技術的に:

  1. ほとんどのネットワークは過度にパラメーター化されています。つまり、学習タスクには大きすぎます。そのため、適切なネットワーク構造を見つけることが役立ちます。

を。モデルの圧縮、ネットワークの枝刈り、量子化などの手法を使用してネットワークを圧縮します。

b. mobileNetv1/2/3 のようなよりコンパクトなネットワーク構造を直接使用します。

c. ネットワーク アーキテクチャ検索 (NAS)。

于 2020-10-13T05:57:20.820 に答える