(FP16)を行うことで探索は速くなったが、学習は上手くいかなかった。Normalizationの部分はFP32で計算しなければならないようだ。厳密な精度よりも計算速度が求められる場合が多い。近頃のGPUはTensorコアなるものによって半精度(16bit)の浮動小数点演算を高速に行うことができるようで、FP16で計算を行うプログラムを書くと高速になるとのことである。自作の将棋ソフト『Miacis』のneural_network.cppから、モデルをGPUへ転送する部分のコードを示す。行うようになっている。to(device_);#endif入力特徴量もGPUへ転送する際に同様の指定を行う。};}ネットワークの出力をCPUで受け取る場合はtorch::Half型を用いる。batch_size分のvalueをstd::vector<float>で受け取るコードは次のようになる。1GPU(2080ti)、2スレッド、512バッチで探索した。GPU処理部分を重くして差がわかりやすくなるようにResidualブロックにおけるCNNのチャネル数を256にして実験を行った。探索速度は次のようになった。NPSFP16にすることで1.5倍ほどのNPSになった。教師あり学習RTX2080tiを用いてfloodgate2016年の棋譜をもとに教師あり学習を行った。損失の推移を次に示す。右:Value損失FP16では上手く学習できていない。Normalizationは32bitで計算しければいけないとの話があった。指数移動平均のところが原因と言われていたりもするが、どこまで信用できるものかはわからない。NormalizationはFP32で計算しなければならないという説の信憑性は高そうだ。山岡さんのブログでもそのようにしていた。Normalizationの部分が問題であるようだ。結論FP16によって探索は速くなったが学習での精度が低下してしまった。Normalization以外)をFP16で計算する方法などを探っていきたい。D問題までの4完で久しぶりにレートが下がった。月別アーカイブはてなブログをはじめよう!tokuminiさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。