GPUの「オーバーヘッド」についての議論を見てきました。「小さな」ネットワークの場合、GPUよりも実際にCPU(またはCPUのネットワーク)でトレーニングする方が速いかもしれません。
「小さい」とはどういう意味ですか?
たとえば、100個の隠れユニットを持つ単一層MLPは「小さい」でしょうか?
「小規模」の定義は、リカレントアーキテクチャに対して変わりますか?
CPUでトレーニングするかGPUでトレーニングするかを決定するときに考慮する必要がある他の基準はありますか?
編集1:
私はブログの記事を見つけました(?おそらく古いそれは2014年からです):
"...ほとんどのネットワークカードはCPUに登録されているメモリでのみ機能するため、2つのノード間のGPUからGPUへの転送は次のようになります。GPU1からCPU 1、ネットワークカード1、ネットワークカード2、CPU 2からGPU 2.つまり、遅いネットワークカードを選択した場合、1台のコンピューターで高速化が行われない可能性があります。高速ネットワークカードでも、クラスターが大きい場合、GPUから比較しても高速化されませんGPUの動作が速すぎるため、ネットワークカードがCPUに対応できません。
これが、GoogleやMicrosoftのような多くの大企業がGPUクラスターではなくCPUを使用して大規模なニューラルネットワークをトレーニングしている理由です。」
そのため、この投稿によると、ある時点でCPUを使用した方が高速だった可能性があります。これはまだ事実ですか?
編集2:はい、そのブログ投稿は次の理由で非常に古くなっている可能性があります。
ノード内のGPUはPCIeバスを介して接続されているため、通信は約6GiB / sで発生する可能性があります。(例:https : //www.youtube.com/watch?v=el1iSlP1uOs、約35分)。スピーカーは、これがGPU1からCPU、GPU2に行くよりも速いことを暗示しています。ネットワークカードがボトルネックではなくなったことを意味します。