【じぇむ】

GEMM とは?

公開:
💡 表の行と列を掛け合わせ、大きな計算の土台に

GEMMは、行列同士の積を計算し、係数を掛けたり元の行列を足したりする基本演算。BLASではC = αAB + βCという形で扱います。AIの計算にも使われ、行列の大きさやデータ形式、機器に合わせて実装を選びます。

📌 このページのポイント
行と列を掛けて、足し合わせる 左の行[ 1 2 ]右の列34×1 × 3 + 2 × 4 = 11結果の一つの要素を求める例GEMMでは係数や元の行列の加算も扱う
行列積の一要素の計算。BLASのGEMMはC = αAB + βCの形を基本とし、転置なども指定できます。
ひよこ ひよこ
ペンギン先生、GEMMはAIモデルの名前?
ペンギン先生 ペンギン先生
行列同士の掛け算を中心とする演算の名前だよ。行列は数を縦横に並べたもの。AIの内部でもこうした計算を大量に使うので、効率よく計算することが重要になるんだ。
ひよこ ひよこ
同じ場所の数字を掛けるだけ?
ペンギン先生 ペンギン先生
行列積では、左の行と右の列の数字を対応させて掛け、合計するよ。例えば左の行が1、2、右の列が3、4なら、1×3+2×4=11になる。要素ごとの掛け算とは違うんだ。
ひよこ ひよこ
どんな形の表でも掛けられる?
ペンギン先生 ペンギン先生
左の行列の列数と、右の行列の行数が合う必要があるよ。例えば2行3列と3行4列を掛けると、結果は2行4列。内側の3をそろえて、外側の2と4が残るんだ。
ひよこ ひよこ
GEMMは必ずC = ABなの?
ペンギン先生 ペンギン先生
BLASでは係数や元のCも使うC = αAB + βCという形で扱うよ。転置を指定する場合もある。数値の形式や行列の大きさが違うと適した実装も変わるので、性能比較の条件をそろえよう。
ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「GEMM」って出てきたら「行列同士の掛け算を中心とする基本的な計算」と思えばだいたいOK!
📖 おまけ:英語の意味
「General Matrix-Matrix Multiplication」 = 一般の行列同士の乗算
💬 この頭文字がGEMM。Rubyのパッケージを表すgemとは別の言葉だよ。

参考資料

← 用語集にもどる