Sign In

Emotion optimizer 登場 (追記あり) v3.1.1

0

Feb 1, 2026

(Updated: 4 days ago)

tool guide
Emotion optimizer 登場 (追記あり) v3.1.1

EmoSens世代、完成

EmoSens世代 v3.7 は v3.8 へ、そして emo-project は 完結 です
※ 260204 版 (v3.8.1) で、コードをブラッシュアップしました
※ 260208 版 追加、EmoVoid 公開、最軽量記録を更新
※ 260220 盤 更新、FFT(フルファインチューン)統合版

※ PyTorchの仕様 .to() によるデバイス指定が必要なため FFT統合版を公開しました
※ この統合版は cuDNN がVRAM以外のメモリと直接計算できないことへの対応です

※ EmoTion Optimizer として DOI を取得しました (2026-02-07 現在)
https://huggingface.co/muooon/EmoTion-Optimizer
※ ここまでお付き合いくださった皆さまへ心から感謝を申し上げます
※ DOI 更新 (2026-02-25) v1.2.0 (記事は 260220) FFT-mode 版

emo系 双璧 爆誕 です! 4人目の EmoTion について紹介します
そして 5人目 EmoVoid も誕生、1次2次モーメントをゼロに!

EmoTion 型、という オリジナル型 optimizer の完成により emo-project は完了しました!
※ v3.7 での dNR-hist を改良し、v3.8 はより強い更新を実現しています(v3.7 比 10倍)

EmoTion型 EmoTion、EmoVoid、の特徴:
EmoTion は、1次moment のみです、完全オリジナル更新式を考えました。 「幾何学的直交更新」と2次moment の完全排除と符号化になります (これは知る限り"世界初"です)
EmoVoid は、1次2次moment どちらもありません、これも完全オリジナル更新式です。「幾何学的直交更新」の純粋型と符号化の組み合わせです (これも知る限り"世界初"です)
※ v3.8.6 以降は EmoTion/Void ともに直交更新部分を近似方式とし軽量化しました

重み(w)に勾配(g)を当てて角度がどうか? 直交に近いか平行に近いかを測定します、直交に近いときは現在の勾配を強く取り込み、平行に近い場合は現状維持します、
※ 最新版はこれを近似式で実現しています(ノルムの変化で直交測定を近似)
つまり更新内容を自動的に選択します、これは過学習などを抑制します。 勾配の「大きさ」ではなく「方向の新鮮さ」を基準に更新を行うため、2次moment が担う役割の多くが不要になります

これにより、VRAM負荷を軽減し、正確性を維持し、軽快な動作を実現しています

EmoSens世代、v3.8 は、v3.7 の特徴、VAEの整合性を維持したまま再学習できる、等を完全に引き継ぎ、EmoTion型 という優れた新型を実現しました

第2世代 v3.7 以降 (完全自動学習率) はこちら
https://huggingface.co/muooon/EmoNAVI/tree/main/2Gv38_AutoLR
https://github.com/muooon/EmoSens
v3.7 and later Paper(論文)
https://huggingface.co/muooon/EmoNAVI/raw/main/emo-v38-paper(ENG).txt
https://huggingface.co/muooon/EmoNAVI/raw/main/emo-v38-paper(JPN).txt

ご興味ある方はぜひお試しください。


これはどういうものなの? と思う方にもう少し説明します

Lion より軽く、Lion 並みに速く、Adam 並みに賢い── と言えばわかりやすいかな
仕組みを軽く説明すると以下のとおりです

emoPulse(自動LR)で自動化、
直交性近似 でノイズ抑制し、grad の取り込み量も調整(step毎に)
sign(update) で計算が軽い、
exp_avg で慣性保持、

これは ノイズを避けて、ノイズをつくらず、ノイズを自然に打ち消す、仕組みです

Lion の軽さと速度、Adam の安定性と適応性、この両方を「幾何学的直交性と自動LR」で実現しています、Lion、Adam、という先駆者あってこそ EmoTion を創造できました

「EmoTion の幾何学的直交更新は、TM-Merge と“逆方向から同じ現象”に到達する」

TM-Merge は スパース化による “削ぎ落とし” (重要な特徴だけを残すために弱い更新を消す)
EmoTion は 直交性による “保護と選択” (弱い更新を消さずに重要な方向だけを自然に強調する)

結果として両者は 「重要な特徴だけを残す」(特徴抽出のスパース化) という同じ効果を生みます、つまり特徴を覚えるのは早いです、詳細は徐々にという感じになります──

少し誇張になるかもしれないけど (CAME と比べて有利になるケースが多い)

CAME より正確で早いです (CAME の VRAM 半分以下で、CAME より計算負荷は低い)

正確性(ノイズ抑制の精度)
CAME: → 勾配の信頼度を統計的に推定 → ノイズが多いと誤判定も起きる
EmoTion: → W と G の角度(直交性)で判定 (近似) → ノイズ方向は直交しないので自然に消える

速度 (計算負荷)
CAME: → 信頼度推定のための追加計算が多い → モーメントも複数保持する
EmoTion: → freshness はスカラー1つ → sign(update) で高速 → emoPulse もスカラー計算のみ

VRAM 使用量
CAME: → 複数の統計量を保持 → VRAM 使用量は AdamW より重い
EmoTion: → exp_avg(1つ) → emoPulse 系もスカラーのみ

CAME は 「統計的に信頼度を推定する」
EmoTion は「幾何学的に冗長方向を消す」

概ねこんな説明で充分かなぁ、と思います


EmoVoid は、EmoTion型の純粋型です、こちらは weight decay もナシ!
これは直交測定により平行方向は抑止されるので WD すら不要になります

emoPulse(自動LR)で自動化、
直交性近似 でノイズ抑制し更新方向も調整、
1次2次モーメントを持たず、
sign(update) で計算が軽い、

これだけ。1次2次モーメントを持たないので モデル 重みと勾配のみ、
つまり Adafactor の軽量性を確実に超えます… それなりに早い更新をします
特徴は上の EmoTion と概ね同じですが、更新性能は少し劣ります、
単純な劣化ではなく、必要な分だけ更新する、という仕組みなので、
見た目は更新が遅く見えるのですが、実は最も安全で堅実です

これから生成AIモデルも巨大化していく中で貴重な軽量optimizerかも
emoPulse と 感情機構の柔軟さと正確さを持つので信頼できます
EmoVoid は、リソースを割けない場合の最後の希望として設計しました
EmoTion も、中間テンソルを効率化したので規模次第でAdafactor超えますが、
それよりも EmoVoid は身軽になれます、常に Adafactor を超えます

| 項目 | Adafactor(2次momentのみ) | EmoVoid(shadow=False/momentゼロ) |

|------|-----------|------------------------|

| 保持ステート | 行+列の 2nd moment(O(m+n)) | スカラー数個(O(1)) |

| 更新時負荷| 2nd moment 復元(つまりフルmoment)、grad → 加算 | grad.sign → 加算 |

| メモリ使用量 | 中(moment の分) | 最小級(SGD と同等) |

| 計算の重さ(定数倍) | 2nd moment 復元が重い | L1 ノルム計算(W-Ref 近似)は復元より軽い |

※ grad計算はどのoptimizerも共通なのでEmoVoidのみの負荷とはならない


最後にグラフをご覧ください ― 概ねこのくらいの性能です
EmoAiry でも CAME同等、emo系は概ね CAME同等以上ということになります
概ねの感触ですが、70epoch前後がいい感じの仕上がりになると思います
なお FFT する場合は fftmode を指定してください 「--optimizer_args "fftmode=True"」 等です
基準LRなどを FFT適正値 に自動変更します、その他いろいろ試してみてください

test-1Kstepfp16-010.pngtest-1Kstepfp16-020.png

0