最近私は強化学習を調べましたが、答えを見つけることができなかった質問が1つありました。GPUを使用してトレーニングを効果的に行うにはどうすればよいですか。私の理解では、環境との絶え間ない相互作用が必要です。これは、このタスクが非数学的/非並列化であることが多いため、私にとって大きなボトルネックのように見えます。しかし、たとえばAlpha Goは複数のTPU/GPUを使用します。それで、彼らはそれをどのようにしていますか?
実際、多くの場合、学習ステップの合間に環境とのやり取りがあり、GPUよりもCPUで実行する方がよい場合がよくあります。したがって、アクションを実行するためのコードと更新/学習ステップを実行するためのコードが非常に高速である場合(たとえば、表RLアルゴリズム)の場合)、努力する価値はありません。 GPUでそれらを取得しようとすることの。
ただし、大規模なニューラルネットワークを使用している場合、アクションを選択するか、学習ステップを実行するたびに実行する必要があります(最近人気のあるほとんどのディープレインフォースメントラーニングアプローチの場合のように)、実行の高速化CPUの代わりにGPUでこれらを実行することで、GPUで実行するのに十分な価値があります(CPUとGPUを定期的に「切り替え」ており、=からいくつかのものをコピーする必要がある場合でも) RAM VRAMまたはその逆)。
ポリシー外の強化学習を行う場合(つまり、現在学習しているものとは異なる「動作」ポリシーによって生成された遷移サンプルを使用できることを意味します)、通常、エクスペリエンスリプレイが使用されます。したがって、この大きなバッファーから多数の遷移を取得し、GPUを使用して、SGD(c.f. DQN、DDPG)で学習目標を最適化できます。
RL is this- https://github.com/NVlabs/GA3C のCPU-GPUハイブリッドアプローチの1つのインスタンスです。ここでは、複数のCPUを使用して、次に、「トレーナー」プロセスと「予測子」プロセスは、マルチプロセスキューを使用して相互作用を収集し、それらをGPUに渡して逆伝播させます。