web-dev-qa-db-ja.com

GPUに合わせてバッチサイズを自動的に選択するにはどうすればよいですか?

GPUを使用してディープニューラルネットワークをトレーニングしています。サンプルを大きくしすぎたり、バッチを大きくしすぎたり、ネットワークを深くしすぎたりすると、メモリ不足エラーが発生します。この場合、より小さなバッチを作成し、それでもトレーニングすることが可能な場合があります。

トレーニングに必要なGPUサイズを計算し、事前に選択するバッチサイズを決定することは可能ですか?

[〜#〜]更新[〜#〜]

ネットワークサマリーを印刷すると、「トレーニング可能なパラメータ」の数が表示されます。この値から見積もることはできませんか?たとえば、これを取り、バッチサイズを掛け、グラデーションの場合は2倍にしますか?

8
Dims

いいえ、これを自動的に行うことはできません。したがって、バッチをできるだけ多くしたい場合は、適切なサイズを見つけるために多くの試行錯誤を繰り返す必要があります。

スタンフォードのCNNクラス メモリサイズを見積もる方法のガイダンスを提供しますが、すべての提案はCNNに関連しています(何をトレーニングするかはわかりません)。

2
Salvador Dali

ここでのサルバドールは、分析的に最適なバッチサイズを計算できないことを意味すると思いますが、すべてがMLにあるため、グリッド検索に追加できるのは単なる別のハイパーパラメータです。自動的に計算されます。モデルの損失または精度(パフォーマンスを測定する場合)を評価して、64、256、1024などの2の累乗など、いくつかのバッチサイズを指定して、最良かつ最も安定した(変数が最も少ない)測定値を取得します。バッチサイズが見つかりました。バッチサイズは、モデルのアーキテクチャ、マシンハードウェアなどに依存する可能性があることに注意してください。たとえば、モデリングをローカルPCからクラウドコンピューティングエンジン(GCP、AWS、Azureなど)に移動する場合、バッチサイズはPCには大きすぎたRAMは、実質的に無制限のRAM/CPU/GPUに簡単に適しています(コストに注意してください)。

0
Oleg Melnikov