Upgrade to Pro — share decks privately, control downloads, hide ads and more …

量子化についての論文調査

Avatar for Wakayama Hiroyuki Wakayama Hiroyuki
June 30, 2025
0

 量子化についての論文調査

Avatar for Wakayama Hiroyuki

Wakayama Hiroyuki

June 30, 2025
Tweet

Transcript

  1. • Layear Normの量子化 • ViTモデルはCNNモデルと比較して,チャンネル間の分布のバラツキが大きい傾向 – LNは全チャンネルを考慮して計算 • チャンネル間のバラツキで量子化誤差が大きくなる –

    各チャンネルで分布を揃えようとする計算 • 各チャンネルで,4パターンの量子化パラメータを選択 2 FQ-ViT: Post-Training Quantization for Fully Quantized Vision Transformer
  2. • Softmaxの量子化方法 • QKの内積→Softmax後の数値分布 – そのほとんどの値が0~00.1間に集中,少量に1に近い値 • かなり歪んだ分布 – 赤の方法で量子化

    • ほとんどの値が1つの値に振り分けられる→細かい表現が全滅 3 FQ-ViT: Post-Training Quantization for Fully Quantized Vision Transformer
  3. RepQuant: Towards Accurate Post-Training Quantization of Large Transformer Models via

    Scale Reparameterization • ViTの量子化の原因はLNとSoftmaxである – LN:チャンネル間のバラツキ→チャンネル毎の学習可能な制限 – Softmax:パワーロー特性→log√2量子化 • 計算量を削減するために単純な方法で量子化する必要がある – 単純な量子化と計算量削減はリンクしないのでは? – 複雑に丁寧に量子化したら,その効果は絶大 6
  4. • Softmaxの量子化 • 各チャンネルで分布の偏り – 外れ値を削除 – チャンネル間で分布が近似 10 RepQuant:

    Towards Accurate Post-Training Quantization of Large Transformer Models via Scale Reparameterization
  5. TERNARY WEIGHT NETWORKS • 重みを3値(-1,0,1)の量子化【TWN】学習中に量子化 – 2値よりも優れた表現力 – フル精度の重みと2値重みのバランス –

    3x3畳み込み:2値は23×3 = 512種類 3値は33×3 = 19,683種類で38倍も強力な表現力 • 方法:閾値Δとスケールαを別の値で計算 – 式1:𝑊(フル精度重み)- α(スケール)* ෩ 𝑊(3値値した重み)が0になるように調整 – 式2:αとX(入力)を先に計算して ෩ 𝑊と積和計算すると実質正負の反転で計算可能 – 式3: ෩ 𝑊は閾値Δによって3値化 11
  6. Towards Accurate Binary Convolutional Neural Network • 入力と重みを2値に制約【ABC-Net】 学習中の量子化 –

    複数(3~5個)の2値基底の線形結合で近似 – 2値の重み/入力は計算速度が高速:01の変換と1のカウントのみで計算可能 • 学習時:実数を保存し実数で更新 • 推論時:実数値で更新する必要がないため,2値の値のみを保存 15
  7. Towards Accurate Binary Convolutional Neural Network • 重みの量子化 – 式1:α:スケール,B:2値重み,W:フル精度重み

    – 式2:U:シフトパラメータ,M:BinConvの重みの複数生成def3,普通にシフト – 式456:各2値重みをM個して,各重みに対してαを計算 – 推論時は式6のみを使用(2値を重みのみを保持) 16
  8. Towards Accurate Binary Convolutional Neural Network • 入力を2値化 – チャンネル方向に分割(3~5に分割)

    – 分割数が多い方が計算量多い,精度向上の傾向.バランスが大切 • 式8:vはシフト • 式9:𝕀は2値化(0,1),2倍して(0,2),-1で(-1,1) • 式11:Aは2値化した2値入力 βは各2値入力のスケール 17
  9. Towards Accurate Binary Convolutional Neural Network • 全体式 – 重み:B

    • 分割された入力にm個の重みを用意 各BinConvをαでスケール調整 – 入力:A • チャンネル方向n個に分割 各ApproxConvをβでスケール調整 – Conv(B,A)は両方2値で高速 実数のα,βはスカラー値で高速 – 論文ではn=m=3を採用 18
  10. Towards Accurate Binary Convolutional Neural Network • 計算の順番 – 通常:(1)畳み込み,(2)バッチ正規化,(3)活性化,(4)プーリング

    – 2値化した特徴量(0,1)でmaxpoolすると全ての値が1になり崩壊する可能性 – 変更:(1)畳み込み,(2)プーリング,(3)バッチ正規化,(4)活性化 • シフトの重要性 – 各重みや入力は,右(高い値)や左(低い値)に寄っている分布が存在 – 全て同じ方法で量子化すると表現力が低下 – 同じ量子化方法を採用するために,全ての分布を似たような形にする必要がある • 表現力を保持 19
  11. TRAINED TERNARY QUANTIZATION • 重みを3値(-1,0,1)の量子化【TTQ】学習中に量子化 – 正負に別のスケールを設定(-Wn, 0, Wp) –

    テスラなどのデバイスにAiを搭載 • CPUの性能,通信速度,バッテリー消費,面積コスト⇨小規模AIの必要性 20
  12. TRAINED TERNARY QUANTIZATION • 各重みの最大値で割る⇨[-1,1]の範囲に正規化 • 閾値処理t(ハイパラ)で重みを[-1,0,1]に量子化 • スケール(WpとWn)でスケール •

    式6:閾値で重みを3値化 • 式7:スケール(WpとWn)を更新 • 式8:フル精度重みを更新 • 式9:閾値を決定 – W:量子化重み, ෩ 𝑊:フル精度重み 21
  13. TRAINED TERNARY QUANTIZATION • 層によって,スパース性の変動 – 各層では異なる役割がある • 浅い層:基本的なエッジやテクスチャを抽出,できるだけ多くの特徴を捉える –

    表現力のある数値が重要 • 深い層:より抽象的な特徴を抽出,重要な特徴を捉える – スパースな数値が重要 • 畳み込みカーネルの可視化 • 灰色,黒,白:0,負,正の重み – ほぼ灰色(0)のカーネルが存在 – 冗長なカーネルを削除 23
  14. Ternary Neural Networks with Fine-Grained Quantization • 入力を8,4bitに重みを3値化[-a,0,+a] 【FGQ】学習後の量子化 –

    重みをグループで分割し,グループ単位で量子化 • 学習に数日かかるモデルは推論も再学習も時間がかかる – 従来の量子化では学習後に量子化して再学習する必要があった – 重みを量子化する手法があるが,主な計算コストは入力の計算 • 入力を圧縮することが必須 • 全ての重みを一括で3値化するのは困難(チャンネルや層間で異なる分布を持つ) – 単一の閾値Δとスケールaで3値化は正確でない • 全ての層でΔ=0.5に設定,ある層では値全てが0.5より小さいと全て0に変換される危険性 • 正と負の重み分布は必ずしも平均値を中心に対称でない – 正と負に異なる閾値ΔpとΔn 24
  15. Ternary Neural Networks with Fine-Grained Quantization • 重みをグループに分けて量子化 – 重みを互いに素な部分集合で分割

    – それぞれの重みW(1,2,3)を足したら元のWに戻ってくる – この分割した重みの状態で各スケールaが決定 • 各重みベクトルは直行性(重みのベクトル同士の内積が0) – それぞれの重みが独立して計算→スケールαも独立して更新 25
  16. Ternary Neural Networks with Fine-Grained Quantization • K-Sテスト – 重みの分布に寄って最良の量子化方法がある(各層でも分布が変化)

    – 従来法では重みを指数分布やガウス分布と仮定して量子化法(閾値の設定など)を決定 – K-Sテストは分布が指数分布かガウス分布かを判定して適切な閾値を決定する – 指数分布の場合は閾値の計算を変更 • 入力もチャンネル方向に分割,グループ畳み込みで量子化→計算 – 各入力に割り当てられる重みの数が削減し各グループ独立して量子化誤差が減少 – 本来の目的の計算速度の向上 • 並列計算の可能 26
  17. Explicit Loss-Error-Aware Quantization for Low-Bit Deep Neural Networks • 重みを2,3値化に量子化

    【ELQ】 学習中の量子化 – 重みの量子化で分類損失の摂動 • 逆伝播の情報も考慮 – 段階的な量子化 • 層ごとの段階化 • 量子化範囲の段階化 27
  18. • スケールαの計算 – β=0.05で固定 – ほぼ平均値 Explicit Loss-Error-Aware Quantization for

    Low-Bit Deep Neural Networks • 目的関数 – 誤差を小さくすることを目的 • ck:量子化中心値 • 量子化による損失差 • 重みの近似誤差 28
  19. Explicit Loss-Error-Aware Quantization for Low-Bit Deep Neural Networks • 段階的な量子化

    – モデルの全体的な精度を維持しながら量子化 • 学習初期に浅い層のみを量子化,学習終盤にかけて順に量子化する層を増加 • 量子化範囲を段階的に拡大 – (a)から(f)は連続的 • 赤点線:スケール • 四角:閾値と量子化範囲 – 学習終盤にかけて(f)を実現 • 3つの山形の分布 – 量子化誤差が小さい – 量子化する場合に有効 – 量子化しない場合は(a)の分布 29
  20. XNOR-Net: ImageNet Classification Using Binary Convolutional Neural Networks • 重みと入力の2値

    【 XNOR-Net】学習中の量子化 – バイナリ同士の計算で高速:足し算のみで表現 • 式1:入力と重みの内積 – I(入力),W(重み),B(2値化重み),a(スケール) • 式4:Wを2値化でBを計算 • 式5:スケールを計算 – Wの絶対値の平均値 30
  21. XNOR-Net: ImageNet Classification Using Binary Convolutional Neural Networks • 入力の2値化(Efficient)

    – チャンネル方向に絶対値の平均値A – Aを全て1のカーネルkで畳み込み→K • 式11:量子化した重みと入力の内積 – K:入力のスケール – a:重みのスケール – 量子化したIとWを先に計算 • 高速で可能 31
  22. XNOR-Net: ImageNet Classification Using Binary Convolutional Neural Networks • 順番を入れ替える

    – 2値の入力をmaxpoolすると全て1になる可能性 • 圧縮 32
  23. Bi-Real Net: Binarizing Deep Network Towards Real-Network Performance • 重みと入力を2値化

    【Bi-Real】学習中の量子化と再学習 – スキップ接続の追加で表現力の向上 – (b)の1層の量子化畳み込みを跨ぐようにスキップ接続 • 細かい表現力を保持 • 実際は畳み込みブロックのスキップ接続に被らないように追加 • ResNetでは1つずつのスキップは有効でなかった 33
  24. Bi-Real Net: Binarizing Deep Network Towards Real-Network Performance • スキップ接続の効果

    – 計算コストをほとんどかけずに表現力の向上 – スキップ接続による学習の安定 – 特徴量サイズ(14x14x32=6272) • スキップ接続はReLUを外に出す(b)を採用 34
  25. Bi-Real Net: Binarizing Deep Network Towards Real-Network Performance • スケールの追加

    – -1,1に量子化した場合,符号のみで重みの大きさを考慮した更新ができない – スケールαを追加して大きさを考慮した更新 – 推論時にはBatchNormでスケールの恩恵が相殺されるので削除しても良い – 式9,11 • 重みと入力を2値化でスケールを設定 – 式17 • αでスケールした場合に逆伝播が1/α • 勾配が変化する可能性 – 勾配に1/αしてαを相殺 35
  26. Bi-Real Net: Binarizing Deep Network Towards Real-Network Performance • 初期化

    – 2値化は初期値に敏感 – ReLUで学習したCNNの事前学習→量子化して再学習 • 再学習の際にReLUを2値のstep関数に変更するとギャップ • 段階的な改良;ReLU→Leaky-Clip→Clip→step(2値化):学習の安定 – (a):ReLU(Leaky-ReLU) • 0を中心に分布 – (b)Clip • -1に多くの分布 • 2値化する際に分布が-1,1周辺に 集結していた方が量子化誤差減少 36
  27. Bi-Real Net: Binarizing Deep Network Towards Real-Network Performance • シグナル関数の導関数の近似

    – 2値にするstep関数は微分不可 – Step関数に近似するような微分可能な関数を使用 勾配がより滑らかになる • 勾配消失問題を解決,安定感の向上 – STE(勾配スキップ),勾配が常に1であり勾配消失問題の解決の効果が薄い 37
  28. Bi-Real Net: Binarizing Deep Network Towards Real-Network Performance • 段階的な量子化

    – 2値化した深いモデルの学習は困難→段階的な量子化で安定感の向上 • Step1:2値化なし • Step2:1x1畳み込みの入力と重みを2値化,3x3畳み込みの入力を2値化 • Step3:残りの3x3畳み込みの重みを2値化 38
  29. Forward and Backward Information Retention for Accurate Binary Neural Networks

    • 入力と重みを2値化 【IR-Net】学習中に量子化 – 情報保持を目的に量子化 – 従来法では順伝播で数値的な観点から量子化誤差を小さくする→逆伝播も大切 – 順伝播改善法:Libra-PB • 量子化誤差と情報損失を同時に最小化 • 分布を標準化して情報エントロピーを最大化 – 逆伝播改善法:EDE • 勾配の情報損失を最小化 • 学習の段階による違いは無視されてきて改善する – 学習初期:強い更新能力が要求 – 学習終盤:勾配の正確さを要求 39
  30. Forward and Backward Information Retention for Accurate Binary Neural Networks

    • 順伝播改善法:Libra-PB – 式5:通常の目的関数 • Qx()は2値化 – 式6,7:-1,1それぞれに割り当てる数を均等化 – 式8:本手法の目的関数 • λはハイパラで決定 – 式4:入力も2値化して内積 40
  31. Forward and Backward Information Retention for Accurate Binary Neural Networks

    • 重みの標準化とシフト – 分布は各チャンネル,各層,各学習段階で変化 – 分布を形をできるだけ全て同じように近似→量子化誤差の減少 – 式9:重みを標準化 • 平均値 ഥ 𝑊で引く:重みの平均値0 • 標準偏差σで割る:平均0,標準偏差1 – 重みが過剰に0付近に近似することを避ける – -1,1に割り当てたいから値が極端な方が良い – 式13,12:重みをシフト ෡ 𝑊で移動した分布の微調整 • N:ベクトル次元,||w||はL1Norm – 式14:重みと入力の内積後にもシフト 41
  32. Forward and Backward Information Retention for Accurate Binary Neural Networks

    • 逆伝播改善法:EDE – 2値化したモデルは勾配消失しやすい→段階的に量子化する範囲を拡大 • グレーの部分が完全な2値化と異なる範囲 • 逆伝播の際は実数値で計算 – (a)は量子化せずグレーの値で学習→2値化した際の量子化誤差 – (b)1,-1を超える絶対値は1,-1に変換→超えた値の勾配は0→勾配消失 » ReLUも似たような方法(負の値は勾配0)Tanhは外れ値の影響で全ての勾配が0可能性 – (c)の段階的にstep関数(2値化)に近似する方法を提案 • 学習初期に恒等関数に近似した関数で学習(活発に更新) →学習途中でClipに近似(より細かい値を更新)→step関数で学習評価 42
  33. Forward and Backward Information Retention for Accurate Binary Neural Networks

    • 結果 – 順伝播 • Libra-PBを採用すると2値化の情報保持能力が向上 – 逆伝播 • 学習初期の分布は分散が大きい,0の数が多い→黄色(灰点線)で2値化誤差が大きい – 通常の学習の傾向 • EDEで重みの分布が0付近に集結しないように学習→1,-1に値が集結→2値化誤差小さい 43
  34. Q-ViT: Fully Differentiable Quantization for Vision Transformer • ViTはマルチヘッド:ヘッド毎に重要度が異なる –

    (b) :1,2番目のヘッドを量子化すると精度低下 1,2番目に大きいbit幅を割り当てる • ヘッド毎にbit幅を学習によって調整,独立して学習 – (a):GELUの量子化は精度低下 44
  35. Q-ViT: Fully Differentiable Quantization for Vision Transformer • 学習によって,重みの値W bit幅b

    スケールαを決定 ෨ 𝑏は学習可能な連続値(bit幅) ෨ 𝑏 = 1.2の場合:𝑏𝑚𝑖𝑛 = 2から෨ 𝑏 = 2 ෨ 𝑏 = 2.5の場合:丸めで෨ 𝑏 = 2 – 学習途中で3や4bitになったりする • 入力Xを量子化(3,4,8bitなど) – []内はSTEで勾配スキップ 45
  36. • ヘッド毎にbit幅とスケールを決定 – ヘッドは独立に計算→異なるbit幅とスケールで悪影響ない • CNNは層ごとのbit幅の調整しか出来ない ViTはチャンネル(ヘッド)ごとの調整 • 途中でヘッドのbit幅が変更 –

    スケール値αが急に対応できない – 2bit用,3bit用…スケールを別で保存 – ヘッドのbit幅に合わせて自動選択 – 各スケールは独立に学習 • 目的関数(量子化なしと誤差を削減) – 入力X 重みW スケールS bit幅Bを学習 – C()コスト制約 • 合計のbit数を制限 • 全て8bitに調整されない用にする 46 Q-ViT: Fully Differentiable Quantization for Vision Transformer
  37. • 結果 – パッチ埋め込み,識別層,GELU • 比較的高bit幅が割り当て • GELUは中層が低bit幅 – QKは低bit,VAは高bitが割り当て

    – 学習初期:各ヘッドでbit幅がバラバラ – 学習終盤:bit幅のバラツキがない→問題点(多様性がない?) 47 Q-ViT: Fully Differentiable Quantization for Vision Transformer
  38. PTQ4ViT: Post-Training Quantization Framework for Vision Transformers • 学習後の量子化 –

    ViTは構造上から非対称で特殊な分布が存在 – Softmax(0~1に制約) • 0付近に値が集中,少数の正の大きい値 • 正の値を考慮してスケールを拡大 – ビン幅が広がり0付近の値の表現が低下 – 全て0に変換される危険性 – 0付近に小さいビン,大きな値に大きいビン – GELU(負の値はほぼ0で0に近い値が保存) • 正負で同じスケールを設定 – 負の値は極端に大きい負の値に飛ばされる – 正のスケールは大きく,負のスケールを小さく 48
  39. PTQ4ViT: Post-Training Quantization Framework for Vision Transformers • ViT(SA)の量子化 –

    QとKを量子化 – それぞれスケールΔq,Δkが決定 – 各Δは目的関数で調整 • 量子化前後の差を最小限にする – 片方のΔを固定してもう片方更新 • それを交互に繰り返す 49
  40. • ツイン均一量子化で解決 – 上段:より細かい量子化 • 狭い範囲で4つのビン – 下段:大きい範囲の量子化 • 広い範囲で4つのビン

    – 合計で8つのビン→3bit表現 50 Softmax GELU ΔsR1=0.001が良い PTQ4ViT: Post-Training Quantization Framework for Vision Transformers
  41. • Softmax – R1の範囲は学習可能 – R2=0.05の範囲固定:0~1の値の逃さない • GELU – R1=0.01の範囲固定:範囲が限られてる

    – R2の範囲は学習可能 • ΔR1の方が小さいので置換 – a(Q)とb(K)の内積がa(Q)のシフト演算に変換 – a(Q)の+でシフトしてるだけ – 計算の高速化 51 PTQ4ViT: Post-Training Quantization Framework for Vision Transformers ΔsR1=0.001が良い
  42. • スケールαを決定する従来の目的関数がViTに有効でない – 平均二条誤差,コサイン距離,ピアソン相関係数 • へシアンガイドメトリックでスケールを決定 – 蒸留のように教師ラベル(クラス確率)を近似する 1. 量子化せずに重みの値を学習

    2. 重みを量子化 スケールの初期値設定 3. 量子化してないモデルのクラス確率と誤差が小さくなるように学習 ラベルなし画像を使用:分布の変化のみを考慮するためその画像が何であるか関係ない 4. 学習はスケールαのみを更新 重みの値は更新しない 5. 教師ラベルと近似させてスケール決定 • 精度も他方法と比較してよい 52 PTQ4ViT: Post-Training Quantization Framework for Vision Transformers
  43. Post-Training Quantization for Vision Transformer • 学習後の量子化 入力X,重みWを量子化 →4,6,8bit化など –

    再学習:目的関数(ピアソン相関係数)を使用 スケールΔx,Δwを更新 • ピアソン相関係数の最大化を目標 • 重みの値は更新なし • ランキング – SAの重要度(Attention map)→量子化 • 相対順位が変化する可能性 • 順位が入れ替わった際にペナルティ • ピアソン最大化を邪魔 • スケールΔの更新で解決させる • MLPの特徴マップでも実施 53
  44. Patch Similarity Aware Data-Free Quantization for Vision Transformers • 量子化+データ拡張

    – 学習済みモデル→量子化したい→スケールの更新が必要 – 更新には画像が必要→画像がない(少ない) – ガウスノイズをランダムで生成→実画像に近似するように画素を更新 – 更新したガウスノイズを使用してスケールの更新→実画像より精度向上 • 特定の画像を不使用で高い汎用性 57
  45. • SAの出力の各パッチでコサイン類似度を計算 – 実画像:各パッチで背景や前景で多様な表現を持つため,コサイン類似度がバラバラ – ガウスノイズ:背景などなく全て同じようなパッチで,コサイン類似度が類似 • 学習によって,各パッチのコサイン類似度を多様化させる→実画像っぽい画像が生成 • 各パッチのコサイン類似度Γ

    • カーネル密度推定法f() – コサイン類似度Γの密度を計算 • 密度が高い:ガウスノイズ(同じようなパッチ) • 密度が低い:実画像 • クロスエントロピーH – Hを最大化させる • 各層のクロスエントロピーℒ𝑃𝑆𝐸 ℒ𝑃𝑆𝐸 を最大化するためにガウスノイズの画素を更新 58 Patch Similarity Aware Data-Free Quantization for Vision Transformers
  46. • 更新方法 ℒ𝑃𝑆𝐸 :クロスエントロピー • 各パッチ間のクロスエントロピーが最大化するように学習 ℒ𝑂𝐻 :ワンホット損失 • 生成されたガウスノイズのクラス確率と特定のクラス確率が類似するように学習

    • ガウスノイズに仮のラベルを付与して学習→例:犬っぽいガウスノイズを生成 ℒ𝑇𝑉 :全変動損失 • 画像を滑らかにする 近傍の画素の差が激しい場合に滑らかな画像でない • 近傍の画素の差が大きくならないように制約を入れながら学習 59 Patch Similarity Aware Data-Free Quantization for Vision Transformers
  47. • 複数のガウスノイズはテクスチャ,形状など多様な特徴を持つリアルな画像生成 • パッチ間のコサイン類似度の可視化 – ガウスノイズ • 似た特徴のパッチを保持 • 類似度が高く右に分布が寄る

    – 実画像と更新後のガウスノイズ • 多様なパッチを保持 • 類似度がいい感じにばらける • 背景と前景の区別がつく • ガウスノイズを使用したスケールの更新 – 精度向上 • 背景と前景の区別が明確 • 異なる特徴を持つガウスノイズで頑健 60 Patch Similarity Aware Data-Free Quantization for Vision Transformers
  48. PSAQ-ViT V2: Towards Accurate and General Data-Free Quantization for Vision

    Transformers • 物体検出やセマセグのようなラベルなしデータで応用可能 • 画像生成→量子化パラメータ(スケールやクリップ)更新:従来法 – 交互に計算:本手法 • 不安定な画像(紛らわしい画像)で重みの更新 • サンプルが欠落している表現を発見し,潜在的にその情報量と多様性向上 • ガウスノイズの更新 – 量子化パラメータ固定 – その逆も交互に更新と固定 • ガウスノイズの画素を更新→画像生成 – 各パッチの多様性を向上 61
  49. • 従来法:ガウスノイズにラベルが付与され,犬っぽい画像が生成される • 本手法:フル精度と量子化モデルに同じ生成画像を入力 →量子化モデルはフル精度モデルの出力に近似 – 平均絶対誤差(MAE)の目的関数を採用 • パッチの多様性 –

    各パッチでコサイン類似度(パッチ類似度の計算) →エントロピー計算 →エントロピーが最大化を目指す – パッチ類似度の分布を滑らかにする • 分布の多様性向上 62 PSAQ-ViT V2: Towards Accurate and General Data-Free Quantization for Vision Transformers
  50. • 生成された画像 – V2で生成された画像は特徴の集まりみたい – 1枚ずつ生成するのは計算コスト • 1枚の生成画像をデータ拡張して使用 • パッチ類似度の可視化

    – ガウスノイズは,多様性が小さい – 更新後は実画像と比較して同等な多様性を持つ 63 PSAQ-ViT V2: Towards Accurate and General Data-Free Quantization for Vision Transformers
  51. FP8 Quantization: The Power of the Exponent • Intの8bitでなくでfloatの8bitに量子化した方が有効 •

    intの8bit – -127~128で固定範囲でビン間隔が均等 – 一様分布に有効 64 • floatの8bit – 量子化範囲とビン数が動的に選択可能 • 0に付近に多くのビン • 外側にあたって倍々に間隔が拡大 – ガウス分布に有効 – 外れ値に強い – 広く荒く • 外れ値が多い場合に有効 – 狭く細かく • ガウス分布に有効
  52. • 量子化前と量子化後の誤差Rを計算 • Rの評価の可視化 分布の可視化 – INT8bit • 0付近でも外側の値でも量子化誤差が均等 –

    FP8bit • 0付近の量子化誤差が小さい 外側の量子化誤差は大きめ 65 FP8 Quantization: The Power of the Exponent
  53. • 計算方法 – 13→1.625に変換 – 変換先は1~2になるように – 13= 1.625を実現するために 2𝑚のmを調整する

    • dとpは動的に決定 – d:0 or 1を小数 の数決定 – p:分布の範囲に 寄って決定 66 FP8 Quantization: The Power of the Exponent
  54. LSQ+: Improving low-bit quantization through learnable offsets and better initialization

    • 非対称的な分布の量子化 • ReLU:負の値を全て0に変換 • Swish:負の値も考慮した関数 – 滑らかな関数 最新のモデルで採用 • Swishを従来の手法で量子化 – 正負で均等な量子化(正負のレンジが異なり悪影響) – 負の値を無視した量子化(0以下=0 で表現力低下) • 分布をシフトさせることで解決 • 初期値と目的関数の改善 67
  55. • 学習可能なシフトとスケール • [-1~127]の分布→4bit[0~64] • シフトβ=1 – [-1~127]+1→[0~128] • スケールs=0.5

    – [0~128]*0.5→[0~64] • 負の値を考慮した量子化が可能 • 重みの量子化 – 重みは0を中心としたガウス分布に近似 – シフトを使用せずに量子化 68 N:最小値 P:最大値 Β:シフト(学習可能) S:スケール(学習可能) 逆変換 LSQ+: Improving low-bit quantization through learnable offsets and better initialization
  56. • 初期値と目的関数 • 学習後の量子化より学習を考慮した学習で獲得したパラメータの方が良い • 学習の初期値 – 重みの初期値:一様分布→ガウス分布(量子化誤差の削減) – スケールとシフト:最大値と最小値が一致

    • P:量子化最大値(128) • N:量子化最小値(-128) • 目的関数 – 平均二乗誤差(MSE) – この関数が小さくなるように スケールとシフトを更新 69 ガウス分布の近似式 LSQ+: Improving low-bit quantization through learnable offsets and better initialization
  57. Q-ViT: Accurate and Fully Quantized Low-bit Vision Transformer • ViTの量子化で1番の悪影響はSAの量子化

    – 情報修正モジュール(IRM),分布誘導蒸留(DGD)で解決 • 蒸留トークン – DeiTで採用される教師からの蒸留のためにトークンを追加 ↓小さくなるように学習 – クラストークンとハードラベルの誤差 蒸留トークンと教師のソフトラベルの誤差 – 単純に採用した場合 • SAの分布に大きな変化 • L2ノルムで表現力低下:青 70
  58. • 情報修正モジュール(IRM) – QKがガウス分布に近似 • QKの平均と標準偏差だけ抽出 • その2つの値から綺麗なガウス分布に変換→量子化誤差が軽減 • 単純に採用すると精度低下

    – 学習可能なパラメータの追加 • バイアスパラメータβ(分布の中心を調整し、非対称性を補正) • スケールパラメータ𝛾(分布のスケールを調整し、外れ値や分散の違いを補正) • 目的関数H() 情報エントロピーの最大化 71 Q-ViT: Accurate and Fully Quantized Low-bit Vision Transformer
  59. • 分布誘導蒸留(DGD) – QKの行列と教師のQKの行列を近似 – 各教師と生徒のQKで類似パターン認識を構築 • Q(K)同士の内積 スケールの違いを排除 –

    生徒と教師の誤差を計算 – ハード,ソフトラベルの誤差に追加して最小化を目指す • 生徒と教師で分布の誤差が減少 • 行列の表現力の保持:オレンジ 72 Q-ViT: Accurate and Fully Quantized Low-bit Vision Transformer
  60. Improving Low-Precision Network Quantization via Bin Regularization • 量子化前の分布を各ビン周辺に集まるように変換 –

    量子化誤差が軽減 • 量子化後の分布 – 提案手法の最下段はガウス分布の形状を維持 73
  61. • 量子化の順伝播 – 学習可能なスケールSで誤差軽減→逆変換 • 分布の整形 – 学習で小さくしたいloss ℒ𝐶𝐸 :ラベルと出力のクロスエントロピー誤差

    ℒ𝑚𝑠𝑒 :量子化前の各ビンの平均値と量子化後の各ビンの値の差 ℒ𝑣𝑎𝑟 :各ビンの分散 • これらを小さくするために重みとスケールを更新 • 先にスケールを少し更新 →スケールと重みを同時に更新:安定感 74 Improving Low-Precision Network Quantization via Bin Regularization
  62. I-ViT: Integer-only Quantization for Efficient Vision Transformer Inference • ViTの計算を完全に整数のみで計算可能

    – Softmax,GELU,Layer Normを整数化→高速 • 従来はSoftmaxなどを跨ぐ際にFP32に変換されてINT8に変換→遅い • Softmax,GELU – ビットシフトに変換 • LN – 平方根を整数の繰り返し計算 – 標準偏差を整数で近似 75
  63. RepQ-ViT: Scale Reparameterization for Post-Training Quantization of Vision Transformers •

    ViTのLNとsoftmaxの量子化は困難 – LN:チャンネル間のバラツキが大きい • 学習後,更新されるスケールのシフトの値からLNと重みを更新 – Softmax:少量の大きい値で非対称 • Log2量子化とLog√2量子化を組み合わせる 76
  64. • Softmaxの出力分布に有効な量子化方法 – log2量子化(高速) – log√2量子化(高精度) – この両方を組み合わせ →高速で高精度な量子化方法 •

    log√2量子化を式変形→lig2に変換して計算 • 逆変換の際に工夫が必要 78 RepQ-ViT: Scale Reparameterization for Post-Training Quantization of Vision Transformers
  65. Q-HyViT: Post-Training Quantization of Hybrid Vision Transformers with Bridge Block

    Reconstruction for IoT Systems • ViTの圧縮法の1つにViTのモデル構造の計算を軽量化:ViT+CNN – ViTの量子化法はあるけどViT+CNNの量子化法はない – この圧縮AIモデルはIoTに応用可能 • ViT+CNNの量子化の課題 – チャンネルの分布のバラツキが大きい • チャンネル毎の量子化を特定の層で実行→動的に決定 – ViTとCNNで出力する分布に違いがある • 対称的な分布:スケールのみ • 非対称的な分布:スケール,ゼロ点(シフト)を追加 79
  66. • 非対称的な分布:スケール,ゼロ点(シフト)を追加 – シフトの注意:ゼロ点が128の値を超すオーバーフロー現象 – データの範囲が全て正の値にあると起こりやすい • zp=128シフトしたら,Clipで全て外れ値で切り捨てられる • オーバーフロー現象を対策

    – シフトを強制的に0(対称量子化) – 適切なスケールとシフト値を調整(再学習) 80 青は切り捨て値 Q-HyViT: Post-Training Quantization of Hybrid Vision Transformers with Bridge Block Reconstruction for IoT Systems
  67. • チャンネルの分布のバラツキが大きい – 通常:層ごとに1つのスケールで量子化 • 同じ層で各チャンネルで分布にずれがあると量子化誤差が大 – チャンネル毎の量子化をする層を動的に決定 • 層ごとの量子化より細かい量子化が可能

    • 全てチャンネル毎にすると精度低下+計算量増加 • 層とチャンネルごとの情報を半分ずつ獲得して計算してみても良さそう(若山) • 右の図はほとんどの分布が近似 – 2,7,11は外れ値 • チャンネル量子化に切り替えると2,7,11は独立でスケールとシフトを計算 – 全て正の数に分布してるのでオーバーフローな可能性 – ほとんどが近似してるなら,層ごとの量子化法を適応(シフトなし:対称量子化) 81 Q-HyViT: Post-Training Quantization of Hybrid Vision Transformers with Bridge Block Reconstruction for IoT Systems
  68. • モデルサイズ別の分布 – モデルサイズが大きい方が安定 • オーバーフローになりにくい – 小さいモデルは脆弱であり最適化が必要 • 特に畳み込み→SAの繋ぎの部分

    – オーバーフローなりやすい • 畳み込みで作成した4次元の特徴量 – SAの計算のために3次元にreshape – チャンネルの概念が変化 • 目的関数を使用してフル精度出力と近似 – スケールとシフト,量子化法を更新 82 モデルサイズ 大 中 小 Q-HyViT: Post-Training Quantization of Hybrid Vision Transformers with Bridge Block Reconstruction for IoT Systems
  69. PD-Quant: Post-Training Quantization based on Prediction Difference Metric • 学習後に重みの分布の近似は問題

    – 各層で分布の近似は局所的な量子化 – もっとグローバルな量子化→量子化前後の出力分布を近似(蒸留)でスケール係数を調整 • けど,少量のデータで過学習の可能性 • 各層のLNの平均と分散を近似を追加 – 重みの近似より軽量 – 動的に量子化最適化→どんなサンプルにも適応可能 • スケール係数 – 再学習で決定するパラメータ • S:スケール,Z:シフト • Θ:ラウンドオフ値 – 丸め方法で切り捨てか四捨五入かを選択 – Sigmoidで0~1で保存 ℒ𝑃𝐷 :量子化前後の出力分布を近似 ℒ𝑟𝑒𝑑 :各層のLNの平均と分散を近似 83
  70. • 目的関数の違い – 提案手法:出力の分布の近似とLNの平均と分散の近似 – 従来手法:重みの分布の近似 – それぞれ最小にしたい目的が異なる • それぞれが最小になるスケール値は異なる

    • 従来手法である重みの分布の近似で量子化Lossを小さく更新 – そのスケール値が分類精度の最適解だとは限らない 84 PD-Quant: Post-Training Quantization based on Prediction Difference Metric
  71. Non-Uniform Step Size Quantization for Accurate Post-Training Quantization • 従来の量子化として一様量子化やlog量子化

    – 各層,チャンネルで同じ関数,特定の関数を使用 – 量子化する方法として最適解でない – 各分布によって,最適な量子化方法(ビンの間隔)がある • 提案手法(サブセット量子化) – サブセット内には,多くのビンの値が格納 – Bitのビン数分取り出す(2bit量子化の場合に4つ取り出す) – 分布によって取り出す値は選択可能 – 分布によって最適なビンの間隔:一様やlogに選択可能 – また,関数では表現できないような形状を実現 – 自由度の高い量子化方法(ビンの間隔)で量子化誤差を0にする 85
  72. • 更新方法 – 初期値のスケールを調整→収束 – そのスケール値で量子化誤差が最小になるようサブセット内からビン値を取り出し更新 – ビン幅を更新→スケールを更新→これの繰り返し – スケールの収束は17回以内くらい

    • サブセット内の値は0か2𝑘の数値 – ビットシフト可能な数値で高速に計算可能 – 入力と重みの積和が足し算とスケールの掛け算で計算可能 86 Non-Uniform Step Size Quantization for Accurate Post-Training Quantization
  73. Confounding Tradeoffs for Neural Network Quantization • 非対称量子化の有効性:非対称量子化は対称量子化に比べてビット幅が少なく – 特に低ビット幅での精度が向上

    • チャンネル毎の量子化の優位性:チャンネル毎の量子化は精度を向上 – だが計算の複雑さが増加 • 残差接続の高精度評価:残差接続を高精度で評価 全体の精度が向上 • 最初と最後の層の影響:最初と最後の層を高精度で保持 – 圧縮率と精度のバランスが改善 • 混合精度の柔軟性:各層で任意のビット幅を許可 – 混合精度量子化の効果が最大化 • データ使用の柔軟性:擬似ラベルを使用 – ラベル付きデータと同等の精度が達成可能 • 基準モデルの重要性:量子化前の精度が量子化後の精度に大きく影響 87
  74. Efficient Adaptive Activation Rounding for Post-Training Quantization • 丸めの方法:四捨五入で丸め→その値前後の誤差は小さい –

    ドット積後の誤差が大きくなる可能性 • 誤差を小さくしたい対象は出力 – 入力の丸め • 入力の四捨五入ボーダー0.5をシフト • 0.3をボーダーとして丸み→出力誤差が小さい • ボーダーシフトを動的に決定 – 出力誤差を小さくする – チャンネル毎にボーダーを決定 – 重みの丸め • 2.3→2.0に丸めでなく,2.3→3に丸め – 丸めの方向を反転 値ごとに反転するか決定 • 入力のボーダーシフトと重みの反転を学習済みモデルの再学習で決定 88 目的関数:出力誤差を小さくしたい ボーダーシフト:b1,b0を調整して各チャンネルのシフトを決定
  75. Up or Down? Adaptive Rounding for Post-Training Quantization • 通常の四捨五入では精度低下

    – 学習済みResNetで重みの丸めパターンをランダムに決定し検証 • 四捨五入より精度が向上したモデルが存在 • 四捨五入が最適解ではないことの証明 • 各層で重み分布が小さくなるように丸めパターンを調整 – 丸めパターン:一番近い値,2番目に近い値に調整など – 目的関数 • 各層の重み分布(対角項)とモデルの出力の確率分布(オフ対角項)を近似 – 全体のネットワークの量子化の最適化 • 前の層の量子化誤差を次の層の最適化に反映 • 累積的な誤差を最小限に抑えるように丸めパターンを決定 89
  76. Mesa: A Memory-saving Training Framework for Transformers • 順伝播:実数で計算 各層で量子化された入力を保存

    • 逆伝播:保存した量子化の入力使用→量子化解除→その入力値を使用して逆伝播 – 高精度で学習しながら量子化後のパラメータを意識 – クティベーション圧縮トレーニング(ACT)と呼ぶ手法 • 高精度でメモリ効率,メモリアクセス,量子化後の計算量削減 • 全てのヘッドを考慮して量子化:量子化誤差が大きくなる可能性 – ヘッド単位で量子化:各ヘッドでスケールやシフトを決定 • 量子化誤差を小さく • 逆伝播もヘッド毎に量子化解除 90
  77. • シフトβのmin()は変だと思う. 入力が負の値を持つ場合,分布全体が負の方向にシフトす るため,量子化効率が低下する可能性あり.0付近にシフトしない. • 保存する量子化した入力 • 逆伝播の際の量子化解除 • 量子化パラメータ更新

    – 学習時に様々なサンプルで値を更新→評価時に最後に決定した値で固定 – スケールα:更新した値が負の値にならないように調整 – シフトβ:min()で更新は変だと思う • 元の役割は,8bit場合に-127から127の外の値を中にシフト→中央が0になるようにしたい • 入力が負の値を持つ場合に分布全体が負の方向にシフト:-127から127外にシフト – 逆効果する.ならmean()やmedian()の方が平均や中央値が0になり有効なのでは? 91 Mesa: A Memory-saving Training Framework for Transformers
  78. TernaryBERT: Distillation-aware Ultra-low Bit BERT • Transformerの重みを3値で量子化 – フル精度の教師から蒸留→精度の安定 •

    教師(フル精度)は生徒(3値)とサイズも種類も同じ • 各層の出力(ブロックの出力,attention Weight)とクラス出力の蒸留 92
  79. • 蒸留する箇所(最小化したい目的関数) – 出力のクラス確率 – 各層のTransformerブロックの出力 – QKの内積→softmaxの出力 – ハードラベルは使用しない

    • スケールの設定 – 学習によって重みが更新 – 計算でスケールが決定 93 TernaryBERT: Distillation-aware Ultra-low Bit BERT
  80. MQBench: Towards Reproducible and Deployable Model Quantization Benchmark • 既存の量子化アルゴリズムが実際のハードウェア上での検証が不足

    • 基盤モデルの性能がバラバラで公平な判断が難しい – 複数の低コストGPUを含むさまざまなハードウェアで量子化アルゴリズムを実際に評価 – その再現性と実展開可能性を分析 • 評価項目 – テスト精度 – ハードウェアギャップ • 低性能ハードによる精度低下 – ハードウェアロバスト性 • 5つのハードウェア環境における平均テスト精度 – モデルのロバスト性 • 5つのモデルにおける平均テスト精度 94
  81. TerViT: An Efficient Ternary Vision Transformer • 量子化した状態の損失ランドスケープが悪い – 3値量子化:多くの局所的な最小値,lossが下がっている位置がない

    • デッドウエイト(勾配が小さく重みが更新されない現象)が原因 – 量子化するために値が変化しない – 勾配が小さいと局所解に陥れやすい • 比較すると↓3値のモデルの重みの値が小さい傾向 95
  82. TerViT: An Efficient Ternary Vision Transformer • 重みの値が小さいことが原因 – 学習初期で実数で学習:分布の値が大きくなりやすい

    – 学習初期で3値で学習:分布の値が-1,1に制限されて大きくなりにくい • 3値でも重みの値を大きく維持する方法 – 学習初期に実数→8bitで学習:分布を大きい値にする – 分布の値が大きい状態から学習中盤にかけて→3値に量子化 • 重みの値の大きさが維持 • 大きく勾配できて局所解に陥らずに最適化可能 →損失ランドスケープの改善 96
  83. Overcoming Oscillations in Quantization-Aware Training • 量子化でSTEを使用:重みの反復(1になって0になって1になって) – バッチ単位で反復してたら安定感がない,バッチノルムが機能しない •

    STEは,勾配を1に固定:アクティブに勾配 – 最適値付近でもアクティブに動こうとする→いき過ぎて戻ってを繰り返す – 量子化されてるから少しの変化で大きく移動 97 実数と比較(滑らか)して,量子化重みは反復 :精度低下原因: ビンの間隔の間に値が存在 量子化範囲外に大きの重み値が存在
  84. • 振動の解決方法 – ランダムサンプリング • 重みが量子化レベル「0」に70%,「1」に30%の時間滞在 • それに基づいて重みをランダムに選び出す – 二項最適化

    • 学習可能な重みシフトの追加 – 振動減衰(正則化の導入) • 量子化範囲外の重みを軽減 • 真ん中の方に分布を寄せる – 反復重み固定 • 振動が検出された重みを一時的に固定 • 振動の検出は重みの変動頻度をエクスポネンシャル移動平均(EMA)を用いて計算 • 一定の閾値を超える場合に振動と判断 98 Overcoming Oscillations in Quantization-Aware Training
  85. Outlier Suppression+: Accurate quantization of large language models by equivalent

    and optimal shifting and scaling • ViTはチャンネル毎に分布が異なる – チャンネル毎のシフトとスケールが必要 – 外れ値が存在するチャンネルはどんな画像を入力しても同じ • 特定のチャンネルで外れ値を軽減するスケールを採用 • 各チャンネルでシフト • 外れ値が発見されたチャンネルのみスケール 99 シフト(各チャンネルの最大値と最小値の平均) 目的関数(FFN,SA) スケール((-t,t)内に外れ値を収める.tはグリッドサーチで探す)
  86. QFT: Post-training quantization via fast joint finetuning of all degrees

    of freedom • 再学習中に量子化 – クラス確率の誤差ではなく,各層のNormの出力を近似 • 教師(フル精度)生徒(量子化) – ハードに適したパラメータで量子化可能 • メモリ制限を設定:制限内で自動的に有効な量子化方法に設定 – 再学習:重みとバイアス,に加えて,スケールとシフトを調整 • 量子化方法 – 層ごとの量子化,チャンネルごとの量子化,二重チャンネル量子化 • 畳み込み層の入力と出力でチャンネル毎の量子化,2回の量子化で精度向上 • チャンネルごと,二重チャンネルの量子化の場合 – チャンネルごとにスケールやシフトの有無も決定 – シフトやスケールが必要ないチャンネルを採用しない:計算量削減 • 制限に則って,3種類の量子化方法,シフト,スケールの有無を決定 100 二重チャンネル量子化は,畳み込み層 前後の特徴量のスケールの積で決定
  87. Mr.BiQ: Post-Training Non-Uniform Quantization based on Minimizing the Reconstruction Error

    • 学習後量子化:実数の重みを更新→重みの誤差を最小化は最善でない – 重みと入力の量子化を別々に考えている • 重みと入力を量子化する場合:両方を考慮するような量子化誤差を小さくする方法が必要 101
  88. • 再学習のパラメータ更新 – 従来:実数の重みを更新 – 提案:学習済み重みから初期値でバイナリとスケールを獲得 学習可能なパラメータとし て更新 – スケールの更新:実数で更新

    – バイナリの更新:実数で更新できないので丸めの閾値を更新 • 四捨五入の場合は0.5,この0.5の値を更新 • バイナリは0か1なので,丸め方向を変更するとそれが更新になる • この閾値は重みの値1つに1つの閾値が設定 102 Mr.BiQ: Post-Training Non-Uniform Quantization based on Minimizing the Reconstruction Error
  89. KDLSQ-BERT: A Quantized Bert Combining Knowledge Distillation with Learned Step

    Size Quantization • 学習初期は重みがフラット→学習段階的にガウス分布に近似 – ガウス分布ではs0のスケールが理想(全ての値が綺麗に範囲内) – 学習初期はs2が理想(だけどダメ) 将来のガウス分布を考慮してs0を初期値と設定 – 効果的な初期化は損失収束を早め,高精度化 • 蒸留の対象:各ブロックの出力とAttention weightの2条誤差 クラス確率ソフトラベル – 教師モデルの精度に依存するのでハードラベルも追加 103
  90. Post-training Quantization for Neural Networks with Provable Guarantees • よりスパースな量子化:0に多く割り当てるような量子化(計算の高速とメモリ制限)

    • 画像なし量子化の更新:ただのガウス分布を入力(画像なし再学習) • 量子化範囲を更新:量子化範囲に合わせて一様,log2(事前に決定)でビン幅が決定 • 重みの段階的な量子化:1層目から,2,3層目と順番に量子化 – 学習の安定 – 各重み行列の列を独立して量子化 • 層内の他のニューロンに影響を与えることなく個々のニューロンを最適に量子化 – 別に1層目から順に量子化する必要ない • 影響が大きい層から – モデル全体の安定性を保ちながら量子化を進めることができる • 影響の小さい層から – 最も重要な部分の量子化誤差を早期に確認し、対策を講じることができる 104
  91. A White Paper on Neural Network Quantization[サーベイ] • 畳み込みの入力のチャンネル毎の量子化が困難 –

    チャンネル毎にスケールを設定:3x3畳み込みで空間とチャンネルを圧縮して1つの値 – 各チャンネルでスケール→積和計算(スケールから逆スケールで戻せない) – 各チャンネルのスケールを近似させる必要→量子化誤差の軽減 • 重みの再更新,特に深いニューラルネットワークにおいて効果的 • MobileNetV2(深層分離可能層を採用)の各出力チャネルの重み範囲 – 深層分離可能層を持つモデルでチャンネル毎の分布バラツキが出やすい→重みの更新 • 層ごとのスケールもなるべく近似させた方が良い – 逆スケールを1層後に実行→層間のスケール差を近似 105
  92. • 最も近い丸め方法(四捨五入)赤 – 丸め方向をランダムに設定:四捨五入より高い精度の可能性 – 四捨五入は必ずしも最適ではない – テイラー展開や層全体を考慮した丸め方向の決定 • 学習量子化でフル精度の重みと近似する目的関数の有無

    – min-max(目的関数なし),MSE (目的関数あり) – 学習初期には差があるが最終的には差がない – 目的関数を使用すると計算量とメモリが必要 – 目的関数なし手法が有効かも 106 A White Paper on Neural Network Quantization[サーベイ]
  93. Root quantization: a self-adaptive supplement STE • STEは良くない(特に2,1bitの低いbitの場合) – 微分不可能な関数(step関数)を微分可能な関数→シグモイドなどに置き換え

    – けどシグモイドは負の値を考慮しない(全て0になる) – ルート関数を使用(step関数の代わりに近似した微分可能な関数) • ルート関数を各層に学習可能な温度パラメータαを付与 – αが大きいと量子化誤差の勾配優先 – αが小さいとクラス誤差の勾配優先 • 低高ビットの両方で優れた性能を発揮(安定で勾配が滑らか) 107
  94. BinaryBERT: Pushing the Limit of BERT Quantization • 自然言語BERTのバイナリ化 •

    いきなり2値化:精度低下,lossランドスケープが悪い,勾配が激しい – 3値化は耐えてる – 最初に3値化→収束→2値に切り替え→微調整 108 2値化(1bit)すると急激に精度低下 3値(2bit)の場合に精度は耐える 2値化した際のlossは凸凹 3値化は比較的滑らか 重みの値を少し動かすと 2値化の場合に出力精度の影響が大きい
  95. Understanding and Overcoming the Challenges of Efficient Transformer Quantization •

    自然言語Transformerの量子化:入力の8bit化に問題 – 特に11,12層目のFNNの量子化による精度低下(チャンネル間で分布のバラツキが原因) – 深い層になるとチャンネルの重要度が洗礼→自然な流れ • チャンネル間のバラツキ→チャンネル毎の量子化(計算量が大きい,再スケールが必要) • 分布範囲が似たチャンネルでグループ化:各グループで量子化 • グループ数,各グループのチャンネル数は動的に決定 – ハードと精度のバランスを取って最適化,それぞれのグループでbit幅を変更可能 • 分布が広い場合に高bitを割り当てると良い 110 計算量: チャンネル毎の量子化>グループ量子化>層毎の量子化
  96. Mr.BiQ: Post-Training Non-Uniform Quantization based on Minimizing the Reconstruction Error

    • 学習後量子化:実数の重みを更新→重みの誤差を最小化は最善でない – 重みと入力の量子化を別々に考えている • 重みと入力を量子化する場合:両方を考慮するような量子化誤差を小さくする方法が必要 112
  97. • 再学習のパラメータ更新 – 従来:実数の重みを更新 – 提案:学習済み重みから初期値でバイナリとスケールを獲得 • 学習可能なパラメータとして更新 – スケールの更新:実数で更新

    – バイナリの更新:実数で更新できないので丸めの閾値を更新 • 四捨五入の場合は0.5,この0.5の値を更新 • バイナリは0か1なので,丸め方向を変更するとそれが更新になる • この閾値は重みの値1つに1つの閾値が設定 113 Mr.BiQ: Post-Training Non-Uniform Quantization based on Minimizing the Reconstruction Error
  98. KDLSQ-BERT: A Quantized Bert Combining Knowledge Distillation with Learned Step

    Size Quantization • 学習初期は重みがフラット→学習段階的にガウス分布に近似 – ガウス分布ではs0のスケールが理想(全ての値が綺麗に範囲内) – 学習初期はs2が理想(だけどダメ) 将来のガウス分布を考慮してs0を初期値と設定 – 効果的な初期化は損失収束を早め,高精度化 • 蒸留の対象:各ブロックの出力とAttention weightの2条誤差 クラス確率ソフトラベル – 教師モデルの精度に依存するのでハードラベルも追加 114
  99. Post-training Quantization for Neural Networks with Provable Guarantees • よりスパースな量子化:0に多く割り当てるような量子化(計算の高速とメモリ制限)

    • 画像なし量子化の更新:ただのガウス分布を入力(画像なし再学習) • 量子化範囲を更新:量子化範囲に合わせて一様,log2(事前に決定)でビン幅が決定 • 重みの段階的な量子化:1層目から,2,3層目と順番に量子化 – 学習の安定 – 各重み行列の列を独立して量子化 • 層内の他のニューロンに影響を与えることなく個々のニューロンを最適に量子化 – 別に1層目から順に量子化する必要ない • 影響が大きい層から – モデル全体の安定性を保ちながら量子化を進めることができる • 影響の小さい層から – 最も重要な部分の量子化誤差を早期に確認し、対策を講じることができる 115
  100. A White Paper on Neural Network Quantization[サーベイ] • 畳み込みの入力のチャンネル毎の量子化が困難 –

    チャンネル毎にスケールを設定:3x3畳み込みで空間とチャンネルを圧縮して1つの値 – 各チャンネルでスケール→積和計算(スケールから逆スケールで戻せない) – 各チャンネルのスケールを近似させる必要→量子化誤差の軽減 • 重みの再更新,特に深いニューラルネットワークにおいて効果的 • MobileNetV2(深層分離可能層を採用)の各出力チャネルの重み範囲 – 深層分離可能層を持つモデルでチャンネル毎の分布バラツキが出やすい→重みの更新 • 層ごとのスケールもなるべく近似させた方が良い – 逆スケールを1層後に実行→層間のスケール差を近似 116
  101. • 最も近い丸め方法(四捨五入)赤 – 丸め方向をランダムに設定:四捨五入より高い精度の可能性 – 四捨五入は必ずしも最適ではない – テイラー展開や層全体を考慮した丸め方向の決定 • 学習量子化でフル精度の重みと近似する目的関数の有無

    – min-max(目的関数なし),MSE (目的関数あり) – 学習初期には差があるが最終的には差がない – 目的関数を使用すると計算量とメモリが必要 – 目的関数なし手法が有効かも 117 A White Paper on Neural Network Quantization[サーベイ]
  102. Root quantization: a self-adaptive supplement STE • STEは良くない(特に2,1bitの低いbitの場合) – 微分不可能な関数(step関数)を微分可能な関数→シグモイドなどに置き換え

    – けどシグモイドは負の値を考慮しない(全て0になる) – ルート関数を使用(step関数の代わりに近似した微分可能な関数) • ルート関数を各層に学習可能な温度パラメータαを付与 – αが大きいと量子化誤差の勾配優先 – αが小さいとクラス誤差の勾配優先 • 低高ビットの両方で優れた性能を発揮(安定で勾配が滑らか) 118
  103. Bi-ViT: Pushing the Limit of Vision Transformer Quantization • ViTの量子化によりSAの相対的な重要度の順位が入れ替わる可能性

    – フル精度モデル教師から蒸留:重要度ランクングが入れ替わったらペナルティ • Attention Weightは2値化された値化から計算するとフル精度と比較して歪む – この要因はSAのSTEとスケールなし量子化にある • STE – -1~1の範囲内は常に1,範囲外は0 • SAの計算で-1~1外に値が飛ぶことがある • 勾配消失→SAが正常に動作しない • 値の大きさがとばないように学習可能なスケール – 各QKVそれぞれに付与:分布のスケールを管理 – 量子化誤差の減少 • ランキングのペナルティ 119 (a)従来法,(b)従来法,(c)提案手法,(d)実数値
  104. BinaryBERT: Pushing the Limit of BERT Quantization • 自然言語BERTのバイナリ化 •

    いきなり2値化:精度低下,lossランドスケープが悪い,勾配が激しい – 3値化は耐えてる – 最初に3値化→収束→2値に切り替え→微調整 120 2値化(1bit)すると急激に精度低下 3値(2bit)の場合に精度は耐える 2値化した際のlossは凸凹 3値化は比較的滑らか 重みの値を少し動かすと 2値化の場合に出力精度の影響が大きい
  105. Understanding and Overcoming the Challenges of Efficient Transformer Quantization •

    自然言語Transformerの量子化:入力の8bit化に問題 – 特に11,12層目のFNNの量子化による精度低下(チャンネル間で分布のバラツキが原因) – 深い層になるとチャンネルの重要度が洗礼→自然な流れ • チャンネル間のバラツキ→チャンネル毎の量子化(計算量が大きい,再スケールが必要) • 分布範囲が似たチャンネルでグループ化:各グループで量子化 • グループ数,各グループのチャンネル数は動的に決定 – ハードと精度のバランスを取って最適化,それぞれのグループでbit幅を変更可能 • 分布が広い場合に高bitを割り当てると良い 122 計算量: チャンネル毎の量子化>グループ量子化>層毎の量子化
  106. PTQ4SAM: Post-Training Quantization for Segment Anything • ViTのセグメンテーションの量子化の問題点 – キーの分布が2つの山になる現象→量子化誤差に影響

    • キーの各チャンネルで平均値→平均値=負の値の場合→符号反転r(負の値分布を反転) • キーで算出した各チャンネルの符号反転rをクエリにも適応 • もし1つの山なのに平均したら負の値(反転したら悪影響) – 2つの山ピークの距離を計算→遠いと2つの山,近いと1つの山(この場合は反転なし) – softmaxの量子化の影響が大きい • 基準値 τで,ビンの距離を小さい細かい重視,ビンの距離を大きい粗い重視かを決定 • フル精度と類似度計算→τを学習で調整 124 QKのLinear→Kで符号反転計算→QとK反転→ 量子化→内積(符号反転の影響が相殺)→softmax チャンネル毎にレンジが正負で偏る →負の値は正の値に反転→量子化 各チャンネルで似た分布に整形 量子化誤差の軽減
  107. Reg-PTQ: Regression-specialized Post-training Quantization for Fully Quantized Object Detector •

    物体検出タスクのための量子化 • 分類と回帰の違い – 回帰:ガウス分布(モデルが連続的な数値の予測に最適化→重みが中央に集中) • ノルムの影響でもガウス分布に近似 • ノイズに敏感でローカル量子化のみは有効でない • ガウス分布のような非一様分布は量子化しにくい→一様分布に近似させる – 分類:一様分布(全てのクラスに対してバランスよく学習が進む) • 分類タスクの予測出力は独立したクラスの確率であり距離ではなく数値の大きさに依存 • 独立したクラスの確率:重みが全体的に均一に分布していることが理想 – 各クラスに対して公平に学習,均一な分布はそのような学習がしやすい – 一様分布は量子化しやすい 125
  108. • FGIC(グローバル+ローカルの量子化誤差計算):有効の情報のみを使用して更新 – グローバル:フル精度の出力誤差を最小化,ローカル:各重みの量子化誤差の最小化 • フル精度のBBoxのうち分類信頼度が低いものを除外 • フル精度と量子化モデルのIoUの誤差が大きいBBox – それらのBBoxは異なる物体を捉えている可能性が高い

    • LLAQ(回帰タスクを一様分布に近似) – 量子化する前にスケールとオフセットを計算 • 分布を整形した後に量子化することで量子化誤差を軽減→一様分布に近似 • 通常は量子化後に計算 126 Reg-PTQ: Regression-specialized Post-training Quantization for Fully Quantized Object Detector
  109. Data-Free Quantization via Pseudo-label Filtering • 画像データがない状況でも学習可能(データフリー学習) • 最初にランダムなノイズ画像が生成 –

    フル精度モデルのBN層の特徴量に近似するようにノイズ画像を更新 • 何かしらの特徴を持つ画像に変化→更新された画像をモデルに入力して予測確率を取得 • 取得した予測確率(70%で猫)から%の閾値を決定 – 予測に確信がある:ハードラベル(蒸留のメインとして機能) – 予測に確信がない:確率の高い2つのクラス(蒸留の補助的な役割) – 学習段階の進行としきい値の調整 • 学習終盤でより洗練された特徴を持つノイズ画像に更新→閾値を引き上げ • より厳選された高信頼性の画像にハードラベルを付与して蒸留(初期は活発に更新) 127 画像のノイズの更新と量子化の蒸留は 基本的には同時に進行
  110. • 初期のランダム画像で偶然にも猫の確率が高かった場合 – ラベルが猫で更新→より猫の特徴を獲得するようにノイズ画像が更新 – データの偏りが出ないような調整が必要 • 多様な初期ノイズ画像の使用 • 信頼性が低いデータに対して複数の補助ラベルを付与

    • 視覚的に猫の画像と中間層で獲得した猫の特徴を持つノイズ画像は全くの別物 – AI的にはノイズ画像に猫と認識できる特徴を十分に保持 – 同じ猫の画像として使用可能→データフリー学習が可能 • 勾配方法 – ローカルな特徴量の誤差(MSE(平均2乗誤差)) – グローバルなフル精度の出力との誤差(KL) – 擬似ラベルとの誤差(CE) 128 擬似ラベルの予測の確信度の2つ ローカル誤差 グローバル誤差 Data-Free Quantization via Pseudo-label Filtering
  111. JointSQ: Joint Sparsification-Quantization for Distributed Learning • スパース学習と量子化学習を同時に学習(相互の強みを十分に引き出す:同時最適化) • 各重みの値に最適なbit幅が割り当て

    – 初期値(学習前)では「貪欲割り当てアルゴリズム」から利益密度を計算してbit幅が決定 • 2ビットの値で量子化ノイズを計算,次に3ビットや4ビットに増やす – もしビット幅を1ビット増やすことでノイズが大幅に減少 – そのビット幅の増加は効果的と判断→その要素に対してビット幅を増やす決定 – Bit幅は0,2,4,8bitから選択可能 129 従来は段階的でスパース→量子化 0bitとは? • 0bit:その値が完全に削除(通信や保存の際に全くビットを割り当てない) – 通信や保存コストが削減,通信速度速度が高速 • 値を0にする:その値が0であることが保存.後に重要と分かれば値が復活 – 通信や保存でコストがかかる • モデル全体が目指す合計が通信コストを超えないように調整
  112. Retraining-free Model Quantization via One-Shot Weight-Coupling Learning • 1回の学習で各層で異なるbit幅を割り当てる •

    初期値の各層のビット幅は設定:経験則 • 学習中の定期的な重み共有:重みの変化に合わせて各層のbit幅を再調整 – 各層で元々持っている重みとは別の重み(共有重み) – 全ての層で同じ共有重みを使用:各層で同じ重み,異なるbit幅で評価 • 重みの値による評価ではなく,単純にbit幅を与えた場合の評価 • 全層の重要度を定量的に評価可能 – bit幅の振り分け後,各層で持っている元の重みを使用して学習再開 • グリーディ探索:bit幅の振り分け方法 – 各層に対してbit幅を1つずつ増減,精度とコストのバランスが最適になるように選択 131
  113. Enhancing Post-training Quantization Calibration through Contrastive Learning • 学習後の量子化方法でスケールとシフトを再学習 –

    従来:量子化前後の分布の類似度を最大化させるだけ • 情報が保持されていたかについては不明確 – 提案:分布の形状を近似させるのではなく,分布の情報を保持することを目的 • 自己教師あり学習のコントラスト学習のように学習 – 元は学習済みで同じ重みのモデルを量子化ありとなしにで2つ用意 – 量子化ありモデルの各層のスケールとシフトをラベルなしで再学習(重みは全て固定) • 特徴量の可視化:概念的な理解と情報,量子化しても汎用性が保持 133 正例ペア:特徴を近似(データ拡張ありでも可) 負例ペア:特徴を遠ざける
  114. • 画像生成モデルの量子化(デコーダの量子化に問題) – 初期ステップはノイズ画像,終盤に綺麗な画像が生成 – 従来手法:ノイズ画像と綺麗な画像を同じ量子化方法を採用 • ステップ数で生成画像が大きく変化→各ステップの分布に適した量子化方法が必要 – 提案手法:各ステップの量子化方法異なるグループに分ける

    • ノイズ画像に適した量子化方法をするグループ,綺麗な画像に適した量子化グループなど • 各ステップの分布→全てのグループの量子化方法を計算 – より分布に適した量子化方法(グループ)を探索(学習) – 各ステップに各グループの重要度(学習可能な重み)を付与 – 各グループの重要度の積和計算で出力:より適したグループの重みが強調 134 デコーダは複数ステップにより段階的に有効な画像生成 Towards Accurate Post-training Quantization for Diffusion Models
  115. Towards Accurate Post-training Quantization for Diffusion Models • 各グループには学習可能なスケールとクリップ範囲を保持 •

    推論時:各グループの重みが1番大きいグループの量子化方法を採用 • キャリブレーション(パラメータ調整)のタイミング – 画像生成と正解画像を比較:誤差が小さくなるようにパラメータ調整 – 従来手法:ランダムなタイミングのステップでキャリブレーション – 提案手法:各ステップに学習可能な重要度(学習可能な重み)を付与 • 重みが大きいステップでキャリブレーション(ステップ数の10%の回数) • 分析の結果:情報量の多いステップでキャリブレーションに適している傾向 135 • 再学習するパラメータ(モデルの重みは学習済みで固定) – 各グループのスケールとクリップ範囲 – 各グループの重要度(重み) • 各ステップでどのグループの量子化方法が適しているかを決定するための重み – 各ステップのキャリブレーションの重要度 • キャリブレーション時にどのステップが優先されるべきかを示す重要度
  116. Accurate Block Quantization in LLMs with Outliers • 自然言語の学習後量子化 •

    パッチ毎に値の分布が異なる→全て同じスケールだと量子化誤差が増加 – 各パッチでNorm→Normの値でsort→値が近い同士でグループ化(ブロック化) – そのグループ内で同じスケールを使用 – Sortの際にチャンネルを並び替える • それに連動するように位置埋め込みを変更(並び替えの問題ない) 136
  117. Q-Sparse: All Large Language Models can be Fully Sparsely-Activated •

    BiTNetをスパース化(量子化と枝刈りの両方) • Linearの前の入力の中から絶対値が大きい上位k個は値を保持(トップKスパース化関数) – それ以外は全て0 – k個は大体,全体30%から60%の値を残す(0の割合が40~60%になるようにする) • これは各サンプル単位(LN的)のスパースではなく,バッチ全体のブロック単位(BN 的)なスパース化を採用:BNの範囲で絶対値上位のK個を選ぶ – GPUのバッチ処理に最適化 • 活性化関数はReLUの代わりに平方ReLUを使用 – さらにスパース性を向上 137
  118. The Garden of Forking Paths:∗Observing Dynamic Parameters Distribution in Large

    Language Models • Transformerのパラメータ(重みの分布)分析 • 重みが学習が進むことでどのように変化するか? – 拡散プロセス(学習初期:重みが安定せずにランダムに動いてる) – 決定論的進化(学習後期:変動が収束して重みの細かい調整) • 学習終了の合図(精度のピーク) • 拡散プロセスと決定論的進化になる過程を調査 – バイフォケーション現象 • 2つのバランスを取るように0を中心とした対称的な値へ収束 • 脳内の興奮性および抑制性ニューロンの活動と類似した傾向 • 重みの値が2極化のタイミング:lossの急激な低下,重みのランダム性の低下 • モデルが大きい場合:2極化のタイミングが遅い→より長い学習時間が必要 138 途中からLossの急激な低下 大きいモデルは低下のタイミングが遅い 途中から重みのランダム性が低下 ブラウン運動の測定方法を採用(動いた距離) 途中から値が2極化 大きいモデルは2極化のタイミングが遅い
  119. • 3値の有効性(重みは最終的に,正負で同じくらいのスケールで2極化したい) – 3値の重み量子化は学習初期から,正負で同じスケールで2極化 – 最終的なゴールを見据える学習:BiTNetの性能は維持 – 特に識別層のlinearの3値の影響は少ない • 値のコントラストを上げて出力を明確にすることで最終的な決定を簡素化

    • 共分散行列のランク(各トークンの特徴の個性) – 最初は各トークンの個性が強い→SAで似ているトークン同士の特徴を近似 • 学習によりトークンの特徴がグループ化 • グループ化でトークンの個性は弱くなる →共分散行列のランクが下がる • 共分散行列のランクが下がる →トークンのグループ化ができてる 139 The Garden of Forking Paths:∗Observing Dynamic Parameters Distribution in Large Language Models 共分散行列のランク 学習時間
  120. FBI-LLM: Scaling Up Fully Binarized LLMs from Scratch via Autoregressive

    Distillation • BiTNetは3値で有効であるが2値までは達成できない • 蒸留を使用して2値を達成(教師:フル精度,生徒:2値化)モデルサイズは教師(学習済)生徒(未学習)で同じ – 重みの2値化はsign関数(正は1,負は-1) • 学習可能なスケールα,シフトβを付与 – 蒸留は教師の出力のソフトラベルを使用して誤差計算(出力層の蒸留のみ) • 自然言語タスクで次の単語の予測確率がソフトラベル • スクラッチ学習で高性能 140
  121. Exploring Extreme Quantization in Spiking Language Models • 量子化とスパイキングニューロンは似ている •

    機械学習:全てのニューロンを伝達 • スパイキングニューロン – 動物の脳の動作で一定の閾値を超えたニューロンだけを伝達(伝達:スパイクの発生) – 情報を全て伝達しないので,エネルギー効率が良い • 量子化(2値(とある閾値で(0,1)に変換) ) – 0の時に伝達せず,1の時にだけニューロンを伝達 • 0の時は全くエネルギーを消費しない • 一定の閾値を超えて1になった時にニューロンを伝達 →スパイキングニューロンと類似 • 量子化はスパイキングニューロンの効率性を模倣 • 学習方法:蒸留 – フル精度の教師から中間層の特徴量を蒸留 – 量子化生徒を0から学習 141 Spike Generatorの場所で2値or3値化 Quantized Intermediate Layer:FFN(ReLUなどを持つブロック) Quantized Linear:1層のLinear
  122. Turbo Sparse: Achieving LLM SOTA Performance with Minimal Activated Parameters

    • TransformerのFFN内の活性化関数を改良してよりスパースな学習 – GateMLP→dReLUに改良 • GateとUp両方にReLUを採用→よりスパースな学習 142 Up Gate Gate-MLP FactはReLU関数 gateMLP dReLU:UpにもReLUを追加 Gate ReLU 要素積 x Up Down 2層のFFNの代わりに使用 𝑊 𝑢𝑝 𝑊𝑔𝑎𝑡𝑒 𝑊𝑑𝑜𝑤𝑛
  123. BiSup: Bidirectional Quantization Error Suppression for Large Language Models •

    Transformerの学習後の量子化→再学習(クリップc,スムージングs,低ランク行列A,B) • 細粒度のクリッピング手法 • 動的にパラメータの値からスケールを計算→その値をクリップ値で移動 • パッチ毎などに設定可能 • スムージング(外れ値の抑制,平滑化) • 入力X(64×128)対応するs1(1×128) • 重みW(128×128)に対応するs2(1×128) • 低ランク近似 • クリップとスムージングで算出した〈X〉〈W〉とフル精度XWと近似したい – AとBの低ランク行列を使用しフル精度との誤差を近似 – 低ランクr=16の場合 • 重みW(128×128)で,A(128×16),B(16×128) 143
  124. ReLU2 Wins: Discovering Efficient Activation Functions for Sparse LLMs •

    Transformerの活性化関数のReLUをReLU2に変更してよりスパースな学習 • ReLU2は1以下の小さな値の場合に2乗で0に近似→スパース – 脳科学の観点から,小さい値は発火しない傾向→0にしても大きな影響ない – GELUは小さな負の値を保持:本質的には必要ないのかも – 正規化された出力分布はロングテールになる傾向 • 0に近似した分布の値(全体の70%)を0にしても問題ない→小さい値は0にしてもいい • 小さい値はより0に近似するように学習 – ReLU2はスパース学習に有効 144
  125. Primer: Searching for Efficient Transformers for Language Modeling • 大規模Transformerのモデル改善:学習コストの抑制と高速化

    • モデル探索で有効性を示す2つの改善 • ReLU→2乗ReLU(1以下は0に近似,1以上はより大きな値に変換) – 値の大きさの向上→大規模モデルで勾配が小さくなる深層の学習が改善(過学習の抑制) – 大規模モデルの膨大なニューロンから,重要な特徴だけを強調 – シンプルで追加パラメータなし • QKVに次元方向の畳み込みを導入 – 畳み込みで短い文脈やフレーズ内の関係をより効果的に学習 – Transformerのグローバル認識と畳み込みのローカル認識で効率化 – Linearで生成されたQKVそれぞれに畳み込みを導入 – 64(トークン)x128(次元)の場合:1x3フィルタを使用,次元方向のローカル情報を計算 • トークン間の情報は考慮しない • 1x3フィルタの計算コストは軽い 145
  126. LRP-QViT: Mixed-Precision Vision Transformer Quantization via Layer-wise Relevance Propagation •

    ViTに2つの手法を追加して量子化 • 層別関連伝播(LRP)(重要度の低い層で低bit幅,高い層で高bit幅を割り当て) – 逆伝播の勾配の大きさから出力に大きく貢献する層を特定 • 50,000枚の画像から貢献率の平均を算出 • 実験結果:浅い層>中間層>深層の順で重要な傾向 • クライップドチャネル別量子化(外れ値をクリッピングで削除) – ViTのパッチ間はバラツキが大きい→パッチ毎の量子化が必要:けど問題点がある • 各パッチで全く異なるスケールが設定→モデル全体の一貫性と安定感の低下 • 隣接するパッチや似た意味を持つパッチが異なるスケールで量子化:不自然な出力 – 各パッチの分布をある程度均一化:各パッチ内の外れ値をクリッピングして解決 • 各パッチの外れ値でスケールが引っ張られる→パッチ間でスケールがばらつく 146 クリッピング範囲の計算方法 入力の平均μと標準偏差σからクリッピング範囲を決定
  127. PackQViT: Faster Sub-8-bit Vision Transformers via Full and Packed Quantization

    on the Mobile • ViTの次元方向には少数の外れ値で量子化が困難 – モデルの重みにより固定のIndexで外れ値が発生→外れ値を抑制で学習可能なPTRを導入 – 入力サイズ64×128の外れ値の抑制方法 • 1×128の範囲で平均と標準偏差で3σルールを使用し外れ値のIndexを特定 • 1×128サイズのPTRは学習可能なnを使用し外れ値のIndexに対応したPTRのnを使用し 1 2𝑛 で積 – 外れ値の抑制し,それに応じて重みを変化→外れ値のないモデルを学習 – 学習方法:重みとPTRを同時に学習→PTRを固定し重みを再学習 • 外れ値のない量子化しやすいモデルを獲得 147 Swinの各次元の最大値と最小値 • 1024枚の画像でテスト:21,89,146,189の次元Indexで常に外れ値が発生 • 外れ値の0にすると精度が30%→外れ値を切り捨てるのはダメ • ViTで使用するGeLUやsoftmaxの量子化はlog2量子化を使用 • GELUの外れ値を抑制するためにGELU後に[-1,10]でクリップ
  128. NoisyQuant: Noisy Bias-Enhanced Post-Training Activation Quantization for Vision Transformers •

    ViTの入力分布は複雑で量子化が困難(ピークやロングテール) – 入力分布を改善:ノイズバイアスNを追加→複雑な分布をより一様な分布に近似 – Nの決定方法(Nのサイズは入力サイズと同等) • 一様分布U(-n,n)の範囲内からNの値をランダムで決定 • nは学習後のViTで小規模データを使用し線形探索で量子化誤差が最小になるように探索 • 決定したnの範囲のUからランダムで値を抽出しノイズバイアスNが決定 – 推論時には値を固定 148 • ViTのfc2でGELUの後の入力分布 Nを追加すると全体的に平坦化 • Nの追加した分布は量子化(赤化)しても忠実に再現が可能 量子化誤差の計算 ビンの中心に値をシフトするようにnの調整 0.5~1.5の範囲が1.0つのビンに変換させる際に,元の値が0.6の場合 差の0.4が量子化誤差になる. Nのによって0.6の値から0.4シフトして1.0になれば量子化誤差はほ ぼない.Nのシフトは後で元に戻すから問題ない. 特定の画像のみにシフトが適応されないようランダム選択と小規模 データで探索.分布の平坦化が一番の目的.
  129. • 計算方法の流れ – 入力にノイズバイアスNを足す→量子化→重みと内積 – →足したNの影響を相殺するために重みとNの内積の結果を引く • 結果 – ViTで特に分布が変則的なfc2(GELUの後の線形層)

    • fc2にノイズバイアスを導入した際に最も精度向上 • より量子化しやすい分布に変換する効果 149 バイアスに重みとNの内積結果を引く NoisyQuant: Noisy Bias-Enhanced Post-Training Activation Quantization for Vision Transformers
  130. I&S-ViT: An Inclusive & Stable Method for Pushing the Limit

    of Post-Training ViTs Quantization • softmaxの量子化の問題点:ロングテール – 従来は大きい値を切り捨てて量子化→悪影響 – log2変換をすることで解決 • 尾の部分が短くなり平坦に • 頭の部分が相対的に広がりより詳細に表現 • log2変換の問題点 – 0に近い値に対して量子化が困難 – 非常に小さい値(たとえば0.0001など)をlog2変換すると-13.29で大きな負の値が返る – シフトnを追加 • 入力にn(固定値)を加算 • 0付近のlog2変換の悪影響を緩和 150 log2変換
  131. • LNの後の入力はチャンネル毎に分布がバラバラ – そのまま量子化するとランドスケープがギザギザ – 段階的な量子化をすることでランドスケープを安定させる • 方法 1. 入力をチャンネル単位の量子化:各チャンネルでスケールとゼロ点を獲得

    • 各チャンネルで獲得したスケールとゼロ点を平均して,層単位の値とする 2. その値を初期値として層単位の量子化 3. 重みを量子化 • 入力の量子化が安定していることにより重みのランドスケープが安定 151 (a)チャンネル単位の重み量子化とレイヤー単位の活性化量子化 (b)全精度重みとレイヤーごとの活性化量子化 (c)全精度重みとチャネル単位の活性化量子化 cのランドスケープが滑らかで段階的にb→aの要素を含めて量子化 I&S-ViT: An Inclusive & Stable Method for Pushing the Limit of Post-Training ViTs Quantization
  132. Outlier Suppression+: Accurate quantization of large language models by equivalent

    and effective shifting and scaling • Transformerの学習後量子化 – チャンネル間の分布がバラバラで量子化しにくい(すべて同じ範囲で量子化する必要) 1. チャンネルごとに分布を0付近にシフトz 2. 量子化範囲を統一するためのスケールs – 機械学習の値は相対的な値の関係が重要 • 相対的な関係が残るようなシフト変換は大きな問題でない 152 各チャンネルの最大値と最小値の平均値 シフト後の最大値を量子化範囲tで割る 量子化範囲外はクリップ 量子化範囲:(-t,t)で今回は(-5,5)
  133. Visualizing and Understanding Patch Interactions in Vision Transformer • QKの内積の結果をsigmoidで0~1にしてAttention

    weightの重要度を計算 – 人手で設定した閾値を元にWをバイナリ化 – SAの計算のQKにWをかけてマスク処理 • Attention weightの有効性の検証するためAttention weightのバラツキを検証 – ヘッドごと,層ごとにAttention weightのバラツキを計算 • バラツキが大きい場合に適応型注意ウィンドウを設定しない • 誤った相互作用が防がれモデルの安定性の向上 153 ヘッドのバラツキ:Eは全てのヘッドの平均値 層のバラツキ:Eは全ての層の平均値 By chat GPT Softmaxの前にマスクをいれるとマクスの0がsoftmaxの計算で 他の値に悪影響を与える可能性がある. その場合に0でなく大きな負の値(例: -10^9)を適用すると解 決する.結果的にsoftmaxで0に変換される
  134. CSQ: Growing Mixed-Precision Quantization Scheme with Bi-level Continuous Sparsification •

    CNNの重みのバイナリ量子化 – 層単位で異なるbit幅を採用した方が良い • 学習中にbit幅がコロコロ変化,微分不可能な関数も使用→学習が安定しない – 解決策を提案 • 学習初期段階は,微分可能なゆるい量子化→段階的に量子化の強度を上げる • 学習初期:重みにステップ関数でなくシグモイド関数を使用しゆるい量子化 • 学習中期:シグモイド関数の温度を上げ,ステップ関数に近似 • 学習終期:ステップ関数を使用し2値化 – 学習と精度が安定 154
  135. CSQ: Growing Mixed-Precision Quantization Scheme with Bi-level Continuous Sparsification •

    実数で重み(𝑚𝑝 , 𝑚𝑛 )を保存(他のbit数で使用する可能性があるから) 𝑚𝑝 , 𝑚𝑛 それぞれf()で活性化関数を通す(sig→step) • 学習可能な𝑚𝐵 (バイナリマスク)を付与 – その値が大きき場合:層の計算可能で重要である – その値が小さい場合:層の計算がマスクされ不可能で重要でない • 各層の𝑚𝐵 を考慮して各層にbit幅を割り当てる 𝑚𝐵 が大きいと大きいbit幅が割り当て,予算に合うように調整 155 𝑚𝑝 :正の値の重み(1,0) 𝑚𝑛 :負の値の重み(1,0) 𝑚𝑝 − 𝑚𝑛 の計算:(-1,0,1)の3値
  136. Boosting Binary Neural Networks via Dynamic Thresholds Learning • 入力のバイナリ化でチャンネル単位の量子化

    – SENet:チャンネル毎の重要度を動的に計算 – DySign:チャンネル単位の量子化をするためSENetの構造を使用→チャネル毎の閾値を計算 • conv層やLinear層前にDySignを導入 – チャネル単位の量子化→Linear計算後に量子化解除 – 動的にスケールを決定可能 • 畳み込みモデルはReActNetに適応 – DyPReLU, PReLUは自由度の高い活性化関数 • 量子化と相性がいい • 量子化は情報を失いがち – 情報を削るReLUは最善でない 156
  137. • DySign – GAPで情報を圧縮(1x1xC) • 各チャンネルの閾値(仮)を獲得 – 2層のLinearで各チャンネルの閾値αを決定 • 静的な閾値を使用した場合(c)

    – 全てのサンプルに同じ閾値 • 背景ノイズが発生 • オブジェクト情報の損失 – DySignの動的な閾値(d) • 背景ノイズの緩和 157 Boosting Binary Neural Networks via Dynamic Thresholds Learning
  138. ReActNet: Towards Precise Binary Neural Network with Generalized Activation Functions

    • CNNの入力をバイナリ化(スキップ接続と2つの表現力が高い活性化関数で精度回復) • 1層毎にスキップ接続を設置 – バイナリ化の情報損失を元の入力情報を保存して出力に加えて情報損失を最小限 – 深層モデルで学習の安定 • ReAct-Sign:学習可能なバイナリ活性化関数 – チャンネルごとに異なる閾値を学習可能 • ReAct-PReLU:ReLUより表現力の高い活性化関数 – 活性化分布の変形でバイナリ化後の精度向上を補助 • 損失計算 – フル精度教師の蒸留付き損失を採用 158