スパースコンピューティング(Sparse Computing)とは、データや演算の中に含まれるゼロ値や不要な計算を検出してスキップし、実質的な演算量を削減する技術です。AI分野では、ニューラルネットワークのパラメータやアクティベーションのスパース性(疎性)を活用して、学習・推論の効率を大幅に向上させます。
スパース性とAI
ニューラルネットワークの重みや活性化値には多くのゼロまたはゼロに近い値が含まれています。プルーニング(枝刈り)を適用したモデルでは、パラメータの50〜90%がゼロになる場合もあります。これらのゼロとの演算は結果もゼロになるため、スキップしても計算結果は変わりません。
| ひとことで言うと | 値が0の部分の計算を省いて、処理を効率化する手法。 |
|---|---|
| なぜ効くか | ニューラルネットの重みや活性化には0が多く、計算しなくても結果が変わらない。 |
| 注意点 | 0の位置がばらばらだと効率が上がらない。規則的な疎構造が必要。 |
ハードウェアでのスパースサポート
NVIDIA Ampere(A100)以降のGPUには、構造化スパース性(Structured Sparsity: 2:4パターン)をハードウェアレベルでサポートするTensor Coreが搭載されています。4つの値のうち2つがゼロの場合、演算スループットが2倍に向上します。この機能を活用するには、モデルのスパースパターンを2:4構造に適合させる必要があります。
1重みの多くが0枝刈り後は特に
▶
20は計算不要掛けても0のまま
▶
3非ゼロだけ処理計算量が減る
▶
4規則的に配置ハードが対応できる形に
ソフトウェアとアルゴリズム
非構造化スパース(任意の位置がゼロ)は汎用ハードウェアでの高速化が難しく、構造化スパースが実用化の焦点です。Mixture of Experts(MoE)モデルも一種のスパースコンピューティングと見なせ、入力ごとにネットワークの一部のみを活性化することで計算効率を高めています。