7

私は強化学習タスクに取り組んでおり、Q 値の近似に keras NN モデルを使用することにしました。アプローチは一般的です。各アクションの後、報酬はメモリ リプレイ アレイに保存されます。次に、そこからランダムなサンプルを取得し、新しいデータでモデルを適合させますstate-action => reward+predicted_Q(詳細はこちら)。トレーニングを行うには、トレーニング セット内の各アイテムの Q 値を予測する必要があります。

スクリプトの実行が非常に遅いため、調査を開始しました。プロファイリングは、累積時間の 56,87% が_predict_loopメソッド によって使用されていることを示していここに画像の説明を入力 ます。一連の数値の 1 回限りの乗算。私が使用しているモデルは非常に単純です: 8 つの入力、隠れ層の 5 つのノード、1 つの出力。

CUDA をインストールして構成し、いくつかのサンプル テストを実行したところ、GPU が使用されていることが示され、GPU の膨大な負荷も確認できます。コードを実行すると、「Using gpu device 0: GeForce GT 730」というメッセージが表示されますが、GPU の負荷が非常に低い(約 10%) ことがわかります。

予測関数に時間がかかるのは普通ですか? この計算に GPU を使用する方法はありますか?

4

2 に答える 2

9

NN のサイズが小さすぎて、GPU を十分に活用できないようです。通常、GPU は、入力/非表示/出力レイヤーのサイズが 200 ~ 500 より大きい場合にのみ、マルチコア CPU よりも高速です (実装コードによって異なります)。

ただし、NN のサイズはわずか 8/5/1 であり、CUDA カーネルの起動、PCIe データ転送などの GPU オーバーヘッドにほとんどの時間が費やされることを意味します。この場合、呼び出しの数が決定する主な要因です。トレーニング時間。速度を上げるには、おそらく CPU でモデルをトレーニングし、オーバーヘッドがはるかに少ない C/C++ などのプログラミング言語を使用する必要があります。

于 2016-06-25T10:00:55.483 に答える