元々GPUは3Dグラフィックスのために作られたものですが、3Dグラフィックスで必要になる演算能力というのは、突き詰めれば行列演算です。3次元の座標の変換や回転は、全て行列演算で表現することができます。 これら行列演算を高速に演算するのがGPUの目的ですが、それを実現するために、GPUでは大量の演算器を並べ、並列処理を行うようになっています。現在のGPUですと、数千の演算を同時に処理することができます。
一方、一般的なCPUは行列演算に特化しているわけではなく、いろいろな処理を行えるように作られています。 このため回路が複雑で、並列に処理できる数もせいぜい数十にとどまります。 これがGPUとの大きな差となっています。
つまり、GPUの場合は、特定の演算はめちゃくちゃたくさん並列かつ高速に演算できますが、CPUほどの汎用性はありません。一方CPUは様々な処理を行うことはできますが、特定の演算についてはGPUには遠く及びません。
じゃあなぜディープラーニングではGPUのほうが良いか?ですが、実はディープラーニングで行う演算も、そのほとんどが行列演算だからです。 ディープラーニングではニューラルネットワークを多層化した構造の演算を行いますが、この演算がまんま行列の積和演算なのです。
最近ではこれをさらに進めた機械学習専用のTPU(Tensor Processing Unit)というものも作られるようになっています。 |