学習に必要な演算量の比較メモ

 Miacisの学習はAlphaZeroの学習に比べて少ない計算量で行っていることは確かだが、実時間としては多くかかっている。総演算量(単位時間あたりの演算量×学習時間)をちゃんと検討しておくべきだと思ったのでメモを残しておく。基本的にCPUは無視してGPUあるいはTPUの演算量で比較することにする。

AlphaZero

 どちらでも記述は共通しており、学習に使った計算資源は

  • 第1世代TPU5000基(生成に使用)
  • 第2世代TPU16基(学習に使用)

となる。

 第1世代TPUの性能については2017年に論文が出ている。

 これのTable2が比較の表となっていて、92 TOPS(TeraOps/second)という性能になっている。第1世代TPUは8bit演算にしか対応しておらず、浮動小数点演算ではないのでFLOPSという単位ではないが、意味合い的には同じものだと思われる。

 第2世代TPUは普通の浮動小数点演算ができるらしく、その速度は180 TFLOPSとある。

 これらを合わせると、1秒間に行われる演算量は

\displaystyle{
92 \times 5000 + 180 \times 16 = 462880 \;\mathrm{TOPS}
}

となる。学習時間はTable S3から将棋で12時間とあるので、

\displaystyle{
482880 \times 12 \times 3600 = 19996416000 \;\mathrm{TeraOps}
}

がAlphaZeroの総演算量になる。だいたい 2.0 \times 10^ {22} \;\mathrm{Ops}と考えれば良さそう。

Miacis

 このときの学習が2080ti×2枚のマシンを185時間44分4秒動かしたものになる。

 2080ti(FP16)が108 TFLOPS

 (これの根拠はなんなんだろう。ちゃんと出典が示せるものがどこかにあれば嬉しいが)

なので、Miacisの計算量は

\displaystyle{
108 \times 2 \times (185 \times 3600 + 44 \times 60 + 4) = 144427104 \;\mathrm{TeraOps}
}

となる。おおむね 1.4 \times 10^ {20} \;\mathrm{Ops}程度と見なせる。

 比を取るとMiacisはAlphaZeroの0.0072倍くらいの演算量で学習をしていることになる。138倍ほど高速化できていればAlphaZeroと同じ性能が出ているはずだが、まぁ当然そこまでの高速化はできていないだろう。左右反転含めていろいろ工夫を入れているつもりではあるけど、それでも5倍速くなっていれば良いほうかなという感覚なので、もっと学習時間を多くするしかないのかもしれない。