

現在、学校で機械学習の中の強化学習に関する研究を行っています。  
そこで一つお聞きしたいのですが、強化学習の結果は使用するPCのスペックによって左右されることはありますか？  
GPU搭載のPCと非搭載のPCでそれぞれ同じ学習をさせた場合、その結果は正当に比較対象として見ていいものなのか気になります。

学習に費やす現実時間が大きく変わることは承知のことですが、スペックの差によってかかる時間以外に変わることがあれば教えていただきたいです。

主な環境は、  
python3.8  
tensorflow2.2.0  
Keras  
Keras-rl

osはwindows10、Mac、それとGoogle Colabを想定しています。


CC BY-SA 4.0
2020-11-30T15:03:39.313
72298
2022-10-15T14:05:50.703
36620
question
python tensorflow keras gpu
Tensorflowによる機械学習の結果はPCスペックに左右されるのか？


変わらないはずです。論理は変わらないので。もちろんバグが無ければですが。。。


CC BY-SA 4.0
2020-12-02T07:21:29.893
72342
2020-12-02T07:21:29.893
23994
72298
answer


変化が激しい分野なので、この回答がいつまで有益かはわかりませんが、ご参考までに。（識者のツッコミも歓迎します）

プログラムの中身的には、CPUのみとCPU+GPUを比べると大きく変化します。  
ライブラリから呼び出している場合はあまり意識することがありませんが、内部処理はかなり異なります。

一般的なGPUを併用する場合、高速化のために「データをまとめて転送する」ということが発生します。  
装置自体が異なるので、その装置間でのデータ通信にかかる時間が無視できないレベルになるためです。  
また、GPUは動作の仕組みそのものが異なる装置であるため、CPUほど汎用的な計算力を持つわけではありません。ひたすら同じような計算をさせるのに特化しています。

これがどういうことかというと、実行するプログラムや利用するデータ（特にデータ量）次第では、CPUのみの方が高速に動作するということです。

CPUでやるべき計算があり、その計算量が多いとGPUを使うメリットはほぼありません。  
GPUは、GPUが得意とする計算部分にのみ使われるのが普通です。  
だから、計算結果も基本的に変わらないんです。どちらにしても必要な箇所でCPUも使ってるので。（装置の不具合やバグなどは除きますが）

また、計算するデータ量が少ないと、転送にかかる時間の方が問題となってしまいます。これもGPUを使うメリットが無くなり、デメリットの方が大きくなります。  
これは逆に、データ量がGPUのメモリより大きいと、プログラムによってはそもそも計算出来なくなるということも意味します。

つまり、

> GPU搭載のPCと非搭載のPCでそれぞれ同じ学習をさせた場合、その結果は正当に比較対象として見ていいものなのか

を考える場合、学習過程でCPUのみが全て正常な結果で、CPU+GPUの結果がエラーを含んでいる場合は比較対象にはならないケースも存在するかなと思います。これをバグと捉えるか、プログラムや装置の仕様と捉えるかは議論の余地がありますが。。。


CC BY-SA 4.0
2020-12-05T10:14:34.460
72424
2020-12-05T15:46:17.377
2020-12-05T15:46:17.377
8795
8795
72298
answer


TensorFlow 2.8以降では、[op
determinism](https://www.tensorflow.org/api_docs/python/tf/config/experimental/enable_op_determinism)を有効にしたうえで、同一のハードウェア、同一のソフトウェアバージョン(OS/CUDA/TensorFlow等)を使って再現性を確保する機能があります。

逆に、質問のケースではTensorFlow 2.2.0でハードウェアもソフトウェアも異なりますので、結果は完全には一致しません。  
基本的にTensorFlowで発生する違いは、1+1が2になったり3になったりするような違いではなく、乱数の結果や数値演算精度の範囲です。

恐らくは強化学習のマクロでみたなふるまい自体に大きな違いはないが、ミクロに見たときに得られるモデルのパラメーターは全く別になる場合が多いのではないでしょうか。


CC BY-SA 4.0
2022-08-25T04:25:23.833
90747
2022-08-25T04:25:23.833
241
72298
answer