WSEは小さな粒度のSparsityも利用可能

例えば非線形の関数としてReLUを使うと、入力値が負の場合は出力がゼロになる。このように、ニューラルネットではゼロが多く出てくる。掛け算の入力がゼロの場合、積和演算は何もしないのと同じ結果になり、演算量を減らせる。このため、CerebrasのWSEでは、ゼロの入力となる疎な行列のケースを有効に利用するようにしている。

  • Cerebras

    ニューラルネットではゼロの値が出てくることが多い。入力がゼロの疎な行列を掛ける場合は、実質的な演算量が減るので、WSEでは積極的に利用するようにしている

Cerebrasのコアはファブリックからのデータの値によって命令の実行の可否を判断する。ファブリックへのデータの送り出し元はゼロのデータを省略し、受け手は不必要な演算を飛ばしてしまう。

WSEのコアは、独立の命令を実行しているので、細かい粒度で不必要な実行を飛ばして効率を上げることができる。

  • Cerebras

    WSEのコアはファブリックのデータによって、命令の実行をコントロールできるようになっている。このため、ゼロを掛ける積和演算などは、実質、スキップされる

また、モデルを多少変形して疎な行列にして、計算を減らすという手もある。やり方としては、ReLUのようなゼロを作り出す関数を使う、あるいは小さな値はゼロとみなしてしまうというような方法である。

右の棒グラフは34層のフルコネクトのネットワークとスパース化を行ったネットワークを比較したもので、左端の密行列では、青のGPUとオレンジのCS-1で差は無いが、その右のペアの棒グラフのようにReLUを使うと、CS-1では1.7倍程度に性能が上がる。さらに値の小さい項を無視して25%疎にすると性能向上は約2倍になり、50%疎にすると2.4倍程度の性能となる。

ただし、ここでは計算性能の向上だけの比較で、スパース化に伴う精度への影響は比べられていない。

  • Cerebras

    ReLUのような入力が負の場合に出力がゼロになる関数を使ったり、値が小さい要素を無視してゼロにするなどの方法で、ゼロの値を増やし、行列を疎にすることができる。34層のフルコネクトの密行列の場合、ReLUを使うことにより演算性能は1.7倍に向上し、ReLUと50%のスパース化を行うと、性能は2.4倍になる

自然言語処理のBERTの場合、自然に疎行列にはならないが、フォワードやバックワードの計算過程でゼロ要素を増やすことはできる。次の図に示すように、精度の劣化を最小にする形で50%のゼロを追加することにより、計算性能を1.5倍に引き上げることができた。

  • Cerebras

    自然言語処理のBERTは自然に疎行列にはならないが、ReLUの使用や小さい値の無視でゼロを増やすことはできる。精度の低下を最小に抑えて、50%のゼロの追加で性能を1.5倍に引き上げることができた

CS-1は最も強力な単一ノードのマシンラーニングのシステムである。CS-1は細粒度の疎な計算の削減を利用できる柔軟性を持ち、適応的にダイナミックに計算を行うことができる。

  • Cerebras

    CS-1は最も強力な単一ノードのMLエンジンである。そして、CS-1は柔軟性を備え、動的な計算が可能となっており、次世代のモデルや計算テクニックの利用を可能にしている