Emo 系 optim 完成後、いろいろ見えたものから、新optimが生まれました
※ もちろん cos などの Scheduler も利用可能です (constant 推奨です)
QPOLA (キュポラ) optimizer
QPOLARIS (Quantization n Polar-Aligned Resetting Instant SGD)
量子化に強い、履歴ゼロ、空間協調(極座標・QJL)による自己適応型SGD
[ 現在 v1.0.4 です ] https://github.com/muooon/QPOLA
|基準LR| LoRA:1e-3 くらい、FT:1e-4 くらい、かなという感触です
(AdamWと同じLR指定値でちゃんとつかえます、ぜひお試しください)
※ 量子化モデルで(int8など)学習する場合は LR を低くすると安定的と思います
QPOLA v1.0.4 の正常動作をご確認頂けます
この記事の添付ファイルで Anima LoRA の生成結果をご覧ください
● VRAM負荷 ━━► 0 (ゼロ) (モーメントバッファ不要)
● 計算負荷 ━━► 同等以下
● スケジューラ ━━► 不要
完全なモーメントフリー、を成し遂げ、かつ個別 p の正確な更新も行います
仕組みは、全体の方向を見る、少数の方向を見る、個別の方向を決定する、だけ
このとき、個別のLRを整合率から算出します、なので自動ブレーキになります
(これは整合率の滑らかな値「1.0~0.01以下 × ユーザー指定LR」として実行します)
ただこれ 実験的 optim です、もし動かなくなっても笑って済ませてください
一応、Anima で FT(微調整) 8時間学習完了、2048px学習を確認済みです
もちろん LoRA も大丈夫、RTX3060-12GB で、これができる、っていいでしょう?
特殊optimだけど、簡単に使えるように工夫してあるので、ぜひお試しください
1次モーメント(方向・慣性)の代替
■ 伝統的な1次モーメント
従来の最適化では1次モーメントは次のように定義されます。
mₜ:過去の勾配の指数平滑移動平均(時間軸)
時間方向に沿って勾配履歴を蓄積し「いま進むべき方向」(トレンド)を推定するための慣性です。
■ QPOLA の代替アプローチ
QPOLA は方向推定を時間ではなく 空間軸 によって行います。
micro_direction_mean
macro_direction_mean
これらは「ワープ内・ブロック内」で同時に発生した「勾配方向の平均」を取ることで、
周囲の p が "いまどちらへ向かおうとしているか" という集団的コンセンサス(うねり)を抽出します。
従来の 時間的慣性 → 空間的同時性 という発想転換により 1次モーメントの代替 として利用します。
2次モーメント(不確実性・学習率スケール)の代替
■ 伝統的な2次モーメント
従来の2次モーメントは次のように定義されます。
vₜ:勾配の平方(または絶対値)の時間蓄積
これにより過去の変動の激しさ(ノイズの大きさ)
不確実性に応じた学習率の抑制(1 ÷ √vₜ)が実現されます。
■ QPOLA の代替アプローチ
QPOLA では、以下の空間的指標を用います。
warp_p_scale
conflictwarp_p_scale
これらは「パラメータ絶対値の空間平均」によって、
レイヤー/ブロックが現在持つ「基礎的なスケール」(次元)を捉えます。
さらに conflict(アライメントの不一致度) によって、
「いまこの瞬間のノイズ・不確実性の大きさ」を測定し adaptation_factor として学習率にブレーキをかけます。
これは従来の2次モーメントが担っていたノイズに応じた学習率調整を空間的指標で置き換えたものです。

