ViT対局させた
初期局面から100戦しかやってないので参考程度だが、明らかに弱かった。vs水匠5。
Google Compute Engine環境での対局
Intel(R) Xeon(R) CPU @ 2.30GHz 4Thread GPU : T4 time(Miacis) = 1000msec, time(水匠5) = 250msec
結果
モデル | Policy損失 | Value損失 | 勝 | 引分 | 負 | 勝率 | 相対レート |
---|---|---|---|---|---|---|---|
ResNet(20bl 256ch) | 1.7833 | 0.4700 | 52 | 2 | 46 | 53.0% | 20.9 |
ViT(6bl 256ch) | 1.7184 | 0.4796 | 11 | 0 | 89 | 11.0% | -363.2 |
INT8ダメじゃね?
TransformerをTensorRT変換する場合、INT8変換があまり有効じゃないかもという話をしているページを見つけた。資料1、資料2
T4環境でも試してみた。
ViTのNPS 2807(INT8)→6689(FP16) めっちゃ速くなった。
先と同様のResNetでもFP16を試してみると以下の結果。
モデル | NPS | Policy損失 | Value損失 | 勝 | 引分 | 負 | 勝率 | 相対レート |
---|---|---|---|---|---|---|---|---|
ResNet(INT8) | 9118 | 1.7833 | 0.4700 | 52 | 2 | 46 | 53.0% | 20.9 |
ResNet(FP16) | 6303 | 1.7598 | 0.4625 | 61 | 2 | 37 | 62.0% | 85.0 |
ViT(INT8) | 2807 | 1.7184 | 0.4796 | 11 | 0 | 89 | 11.0% | -363.2 |
ViT(FP16) | 6689 | 1.7184 | 0.4796 | 39 | 2 | 59 | 40.0% | -70.4 |
ResNetだとFP16では速度が落ちるが、精度が落ちないので結果的に強い。以前の結果ではINT8の方が強かったんだけど……。以前の記事。INT8での精度劣化が大きくなっている気がする。精度や速度について、エンジン作成時にいくらかランダム性、ブレがあることは把握しているので、そういうところがやや面倒だ。
ViTではなぜかINT8でもFP16でも精度が変わらない。これViTのなんらかがTRTに対応してないのでFP32で計算されているとかそういうことになっていないか? あと精度が変わらないのにNPSの2.38倍くらいでレート差が300近く出るのはやや違和感がある。100戦程度ではブレが大きいので、まぁそういうだけのことかなとは思うけど。
表全体を見ると、結局Value損失が小さいのが重要という説が相変わらず一貫していると思う。