HPL-AI行列の観察
理化学研究所 CCS
工藤 周平
第8回HPC-Phys勉強会 9/24 オンライン

1

概要• HPL-AIベンチマークの背景• ルールの詳細• 行列の解析• 我々の実装上の工夫点• 議論

2

HPL-AIベンチマークの背景
https://icl.bitbucket.io/hpl-ai/• AIにおける低精度演算の性能要求の増大• 単精度や半精度など• AI向けHWを持つスパコンも登場している• HPCにおける事実上標準のベンチマークHPLは“古典的”な倍精度演算のみ• HPL-AIはこれら2つの存在を連続的につなげる存在

3

HPL-AIの計算• 巨大な線型方程式を解く

𝐴 = 𝐿𝑈,𝑥𝑠+1 = 𝑥𝑠 + 𝑈 −1 𝐿−1 𝑏 − 𝐴𝑥𝑠• 𝐴は巨大な“乱数”行列 （詳細後記）• 行列の次元𝑛は数千万次元になる• LU分解• 低精度演算を利用しても良い• 反復改良• 最終結果がHPLと同程度の精度を持つまで繰り返す

なぜ他のAIベンチマークではないのか• HPL-AIは “AI” というわりにAIとの関係性がない• MLPerfなどの専用ベンチマークは• 現在行われている計算に近く，AI性能の評価としてより適切だが• 巨大 具体的な仕事，計算に縛られる• 動作させるだけで一苦労• HPL-AIは• 単純 安定性のある理論を持ち• 現在のAIにおける特定の演算のみに着目• AIとのかかわりはない

5

ルールの詳細• 計算は混合精度のLU分解と解の反復改良で構成される• LU分解2• 3 𝑛3 + 𝑂 𝑛2 回の浮動小数点数演算を行わなければならない• 倍精度演算を行う必要はない• 反復改良• アルゴリズムは任意だが，LU分解の結果を使うべき(should)• 改良後の誤差が以下を満たす必要がある

𝐴𝑥 − 𝑏 ∞× 𝑛 × 𝜖 −1 ≤ 16
𝐴 ∞ 𝑥 ∞+ 𝑏 ∞• 𝜖は倍精度の計算機イプシロン 反復回数の上限は49回• 性能数値は 2/3𝑛3 + 3/2𝑛2 /𝑡total で換算する
6

HPL-AI行列の定義

Random matrix withelements in [−0.5, 0.5]

“The benchmark should use the HPL benchmark harness witha modification of the matrix generator. The modified
generator should produce a non-symmetric matrix with thediagonal entries being the sum of the row’s off-diagonal
elements, this will force the matrix to be diagonallydominant.”for (j = 0; j < m; j++) {for (i = 0; i < m; i++) {A(i, j) = mcg_rand_double();diag[i] += fabs(A(i, j)); }}for (i = 0; i < m; i++) {A(i, i) = diag[i] - fabs(A(i, i));}7

HPL-AI行列の性質• 劣優対角• 対角が𝑂 𝑛 ，非対角が𝑂 1• LU分解での1ステップでの更新量が𝑂 1/𝑛• 未証明だが具体的な行列で観察された性質• 乱数を仮定すると証明も可能だろうと推測している• 良条件• ヤコビ法の収束レートが良い• 容易かつ低演算量，高精度にLU分解を近似できる

8

狭義優対角性• 行列𝐴が狭義優対角のとき• 非特異• LU分解時にPivotingを行わなくともgrowth factorが小さな定数で抑えられる• HPL-AI行列は劣優対角のため上記の性質はすぐにはいえない• きわめて運が悪い場合に行列が特異になるかもしれない• 疑似乱数生成器が非常に悪い性質をもつ場合• 疑似乱数の周期と行列の次元が同期してしまうなどのケース• 古いHPLにあるバグ• ベンチマークにおいてこの不運を特別注目する意義はない

9

HPL-AI行列の条件数
2ノルム条件数
対角要素の最大値と最小値，非対角部分の2ノルムから推定ノルムはべき乗法で推定10

HPL-AI行列のヤコビ法収束レートヤコビ法の収束レート
𝐷−1 𝐴 − 𝐷 2
ノルムはべき乗法で推定11

HPL-AI行列のLU因子近似手法• HPL-AIはとくに対角成分が大きいため
𝐴 ≈ 𝐿J 𝑈J = 𝐼𝑛 𝐷,
𝐷 = diag 𝐴 .
• 対角要素のみ残し，ほかは0にする• 対角は𝑂 𝑛 , 非対角は乱数行列なので𝑂𝑛 程度の2ノルムを持つ• 対角と非対角が関係を持つため，まったくいい加減な議論• 非対角成分を多少考慮する
𝐴 ≈ 𝐿𝑂 𝑈𝑂 = 𝑇𝐷−1 + 𝐼 (𝐷 + 𝑆),

𝑇 = tril 𝐴 , 𝑆 = triu 𝐴 .

• 𝑇, 𝑆 は 𝐴 の狭義下（上）三角部分• 𝑇𝐷−1 + 𝐼 𝐷 + 𝑆 = 𝑇 + 𝐷 + 𝑆 + 𝑇𝐷−1 𝑆 = 𝐴 + 𝑇𝐷−1 𝑆

12HPL-AI行列のLU因子近似誤差
残差

𝐴 − 𝐿X 𝑈X 2 / 𝐴 2
ノルムはべき乗法で推定
Jacobiは𝐿J 𝑈J を使うもの
O1は𝐿O 𝑈O を使うもの
赤線はそれぞれ上から
1/ 𝑥と1/𝑥

13

HPL-AI行列は簡単• あまりに簡単すぎるため，チートは容易• チートをしたということではない• 手順上はただしく実装しても，無意味な計算となることがある• 結果的にチートと同じ分解をした場合，何の意味があるのか• 無意味な計算となることで性能数値が良くなってはならない• 関連: ルールにピボットがない理由

14

実装戦略
• 三精度混合• LU分解 – 単精度• ただしGEMMのみ半精度• 反復改良 – 倍精度• 2つの実装上の注意• FP16の値域• スケーリングによってover/underflowを排除する• FP16の精度• 丸めによって演算が無意味にならないように，演算順序を工夫する

15

FP16のフォーマット
• 符号1, 指数5, 仮数10bit• 0より大きい正規化数の値域: 2−14 から 216 より小まで• HPL-AI行列は対角が𝑂 𝑛 , 更新量が𝑂 1/𝑛 なので𝑛2 の比があり，スケーリングなしではover/underflowが発生する• 丸め誤差の単位: 2−11
• HPL-AI行列では𝑂 1 の非対角に𝑂 1/𝑛 の更新量を足すため，なにもしなければ更新幅が(ほぼ)すべて丸められる• 計算結果が前記の近似分解と一致する
Sign 1bit

S EEEEE
Exp. 5bit

Frac. 10bit
FFFFFFFFFF
16

演算順序の並び替え
0• LU分解中の 𝑖, 𝑗 ブロックは初期値𝐴𝑖,𝑗 に更新幅を引いたもの
𝑚𝑚
𝐴𝑖,𝑗• 𝐿𝑖𝑘 , 𝑈𝑗 𝑘 は左・右パネル

0= 𝐴𝑖,𝑗𝑘𝑘− ෍ 𝐿𝑖 𝑈𝑗𝑘=1• 初期値と比べて更新幅が小さい→更新幅の和に初期値をたす
𝑚𝑚𝐴𝑖,𝑗=𝑘𝑘− ෍ 𝐿𝑖 𝑈𝑗
𝑘=10+ 𝐴𝑖,𝑗

• 更新幅どうしは同程度の大きさ→和の結果が無視されにくくなる
17

スケーリングの戦略• Static single scaling

𝑚𝑚𝑘𝐴𝑖,𝑗 = 𝑠 −1 − ෍ 𝑠𝐿𝑖

𝑈𝑗

𝑘0+ 𝐴𝑖,𝑗𝑘=1• スカラー𝑠は行列サイズ𝑛のみに依存する数値で𝑠 = 𝑛•𝑘𝑠𝐿𝑖

max

34~𝑂 𝑛−1/4
14• 最大𝑛 − 1回の和で 𝑛 − 1倍程度値が拡大しても𝑂 𝑛 に収まる

• Lパネルのみスケール： 初期値と足すときに逆スケーリング

18

議論• 問題設定は適切か• 簡単すぎやしないか• なぜPivotを不要にするのか• 意図的なのか？ HPLの技術の大半を忘れる理由は？

• これほど簡単でなければAI向けHWを数値計算に活用できない?
• 数値計算にもいろいろあるので……
• 密行列計算にもいろいろあるが• AI性能の評価として適切か• GEMMの性能ぐらいしか参考にならない• GEMMも大きさが異なれば性質が大きく違う
19

Fasi and HighamのHPL-AI行列• N. J. Higham HPL-AIのcollaboratorの一人• HighamのGithub repository
https://github.com/higham/hpl-ai-matrix• M. Fasi, N. J. Higham, “Matrices with Tunable
Infinity-Norm Condition Number and No Need for
Pivoting in LU Factorization”, MIMS Eprint 2020.17.
• コードが先行して公開されていた• ペーパーは8月はじめ

20

FH行列の詳細
1 −𝛽1−𝛼 11𝐴 𝛼, 𝛽 = −𝛼 −𝛼 1⋮⋮⋱ ⋱−𝛼 −𝛼 ⋯ −𝛼 1
• 𝛼, 𝛽~𝑂 1/𝑛 : パラメーター• 𝜅∞ 𝐴 𝛼, 𝛽 = 𝑓(𝛼, 𝛽) を陽的に計算可能

−𝛽−𝛽
⋱

⋯ −𝛽
⋯ −𝛽⋱
⋮
1 −𝛽1

• 𝛼 = 0.5𝛽 のようにパラメーター数を減らしてゼロ点探索すれば，任意の条件数の行列を生成するパラメーターを簡単に見つけることができる• プログラミング上の取り扱いが簡単で数値的には難しくできる
21

FH行列の特徴• 容易に生成可能• HPL-AIのように大規模にも対応できる• 条件数を任意に設定可能• 良い数値的性質• LU分解時にピボット不要かつGrowth factorが小さい• 定数の和が出現する• 計算精度が大きく悪化 FP32のアキュムレーターが必要？
• FP16を用いても計算できる方法を思案中

22