Sign In

[v1.0.6] 更新 optim 「QPOLA」 公開 / Latest optim “QPOLA” Released

0

Jul 17, 2026

(Updated: a day ago)

tool guide

英訳版は誤解等を避けるため削除 (英文で読みたい方は自動翻訳等でご覧ください)


日本語(原文) original


Emo 系 optim 完成後、いろいろな考察から、新optimが生まれました


※ もちろん cos などの Scheduler も利用可能です (どうぞご自由に)


QPOLA (キュポラ) optimizer

QPOLARIS (Quantization n Polar-Aligned Resetting Instant Zero-Master Weight SGD)
量子化に強い、履歴ゼロ、空間協調(極座標・QJL)、Zero-Master Weight による自己適応型SGD
[ 現在 v1.0.6 です ] https://github.com/muooon/QPOLA

|基準LR| LoRA:1e-4 くらい、FT:1e-6 くらい、かなという感触です
(概ね AdamW と同じLR指定値 で使えます、ぜひお試しください)
※ 量子化モデルで(int8など)学習する場合は LR を低くすると安定的と思います
※ 事前学習では「Block単位のKaiming・Xavier分散」による初期化を検討してください
※ この初期化は従来手法に対しても偏在を解消し安定的な更新を与えると思います


QPOLA v1.0.4 の正常動作をご確認頂けます (最新版:v1.0.6 の試験は未公開/不要のため)
この記事の 添付ファイル で Anima LoRA の生成結果(数値)をご覧ください

● VRAM負荷 ━━► 0 (ゼロ) (モーメントバッファ不要)
● 計算負荷 ━━► 同等以下
● スケジューラ ━━► 不要

技術解説:
[日本語] https://huggingface.co/muooon/QPOLA/raw/main/qpola-paper(JPN)260803.txt

完全なモーメントフリー、を成し遂げ、かつ個別 p の正確な更新も行います

仕組みは、多数の方向を見る、少数の方向を見る、個別の方向を決定する、だけ
このとき、個別のLRを整合率から算出します、なので自動ブレーキになります
(これは整合率の滑らかな値「1.0~0.01以下 × ユーザー指定LR」として実行します)
(履歴はゼロだけど、lossが全履歴的に作用します、だから学習崩壊しない)
自律的長期記憶と自律的自然忘却をする、汎化誘導する、という感じです

ただこれ 実験的 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次モーメントが担っていたノイズに応じた学習率調整を空間的指標で置き換えたものです。


QPOLA について、もう少し詳しく説明すると、

1. Loss(大域的判定場)という「全履歴的なアーカイブ」

機械学習の学習プロセスにおいて、現在のステップにおける Loss(損失) は、単なるスカラー値ではなく「初期状態から現在に至る」までの「すべてのパラメータ軌跡と勾配の歴史」(全履歴)を圧縮・反映した「結果の到達点」です。

QPOLA は、明示的なオプティマイザーステート(バッファ・メモリ)を持たず、最上位にある Loss という大域的判定場の持つ過去の全軌跡の「重みと歪み」を常に信頼します。

つまり QPOLA は「過去を捨てる」のではなく「過去の結果である Loss から降りてくる"勾配"を通じ、毎ステップ全履歴的な結果を瞬時に再投影(自己組織化)している」と言えます。

2. 局所判定場と空間的コヒーレンス(位相整合)による動的適応が生む「自発的慣性」

QPOLA のコードにある「ミクロ(warp/block)局所アライメント」と「マクロ(loss)大域」の相互作用、空間軸のコンセンサス(合意形成)により「自発的慣性」(慣性そのものではない)を生み出します。注意:loss は相互作用であり loss そのものは従来のままです。

局所判定場(コンフリクトやアライメント):個々のパラメータや局所的なベクトルが、周囲の勾配の向きとどう整合しているかをリアルタイムに評価し、ゆらぎ(ジッター)や適応係数(adaptation_factor)を動的に変化させます。

大域的判定場(Loss / 全体トレンド):その局所的な挙動の総結果として Loss は変動し、次に降りてくる勾配そのものを書き換えます

※ これは warp/block で「ベクトルを抽出し差分を反映」します、別ハードウェアではダイレクトにベクトルをつかう等で、この仕組みを移植可能(数学的に等価的)です

この「下位の局所的なゆらぎ・自己組織化」と「上位の大域的なLossの勾配配分」により統御される自己完結したフィードバックループは、時間的な履歴(モメンタム)の代わりに空間的な位相の揃い具合(コヒーレンス)を利用し安定させる新しい数理構造を持ちます

w/b は nVIDIA における実装であり、数理的にはベクトルをみています、つまり他のハードウエアにおいては、ベクトルそのものをみたり、w/bに似た構造を活用するだけで等価的に移植可能です

3. 「メモリに頼らない慣性」というパラダイムシフト

AdamWの慣性:過去の勾配を「ただの数値の足し算の履歴」(EMA)としてメモリに保存する、いわば機械的な外部記憶(人工的な慣性)です

QPOLAの自発的慣性:メモリ(履歴)に頼らず、系全体のエネルギー勾配(Loss)と局所的なアライメントの衝突(Conflict)のダイナミクスを通じ、システムが動的に生み出し続ける自発的慣性です

4. 「勾配を信じすぎない」という loss 中心主義

loss を大域的判定場と呼ぶのは、loss を学習の中心(司令塔) へ戻し、勾配の量や履歴の勢いという後付けからの脱却です。

勾配の量や勢いの大きさは周囲との相対差として参考にします。周囲との協調を loss と 勾配 を通じ間接的な相関性をつくり、重みを孤立的にせず集団的に扱います。局所解に留まりづらい特徴を得られます

5. 自己組織化と自由度

従来手法 moment (時間的履歴) による自己組織化
過去から現在へ至る履歴で似ている重み同士に相関性を生じます (履歴的同期性による組織化)

QPOLA ベクトル整合度 (空間的位相) による自己組織化
現時点でベクトルの似ている重み同士に相関性を付与します (空間的自発性による組織化)

6. カオスからの定着

すべての重みにとって自由度が大きすぎる状態(カオス) から、定着(収束)へ向かうとき、重みはその自由度を小さくしていきます。履歴という粘性か、空間的な粘性か、従来手法とQPOLAの違いはここにあります。Weight Decay などのハイパラも不要になる QPOLA はすべてをベクトルから導きます。moment を捨てて失うもの、得られるもの、天秤にのせてください。そこに QPOLA の価値があります

0