Z-image / Lumina 2 / Newbie fp16 ComfyUI plugin for old Nvidia GPUs
詳細
ファイルをダウンロード
モデル説明
旧式NVIDIA GPU(RTX 20xx 以前)でLumina 2ベースのモデルをfp16で「安全に」使用できるようにパッチを適用するComfyUIプラグインです。クランプは一切使用せず、結果は完全に同一です。
Lumina 2ベースのモデルとは:Z-Image、Lumina 2、NewBieを指します。
これらのモデルはfp16をサポートしておらず、内部層でオーバーフローが発生し、出力がNaN(黒色または純粋なノイズ画像)になります。
ComfyUI v0.4以降ではオーバーフローをクランプするようになり、NaNは発生しなくなりますが、出力が大きく変化し、最終的な画像も大きく変わります。
このパッチはfp16モードでのオーバーフローを「安全に」処理できます。オーバーフローが検出された場合、自動的にその層をfp32で再計算します。クランプは行わず、したがって結果は完全に同一です。
明確に述べますが、このプラグインは通常のプラグインとしてGitHubにアップロードされていません。なぜなら非常に「汚い」実装だからです。「汚い」とは、ComfyUIのコアコードをランタイムでホット/モンキーパッチするという意味です。このアプローチはプログラミングの観点から見れば最悪です。しかし、私が思いつく最もシンプルな方法です。私は「焼き鳥」になりたくありません。
ComfyUI v0.7でテスト済み。
使用方法:
このファイルをComfyUIの
custom_nodesディレクトリに配置します。テキストエディタで開き、設定を変更します。
ComfyUIを再起動します。
ワークフローに「ModelComputeDtype」ノードを追加し、dtypeを「fp16」に設定します。
「重みの縮小」についての注意:
線形代数のトリックで、ほとんどのオーバーフロー(90%)を回避できます。最終的な結果には影響しません。(基本的には:A × Bの累積でオーバーフローが発生した場合、A / 32 × B × 32とします)
モデルの重みは読み込み時に変更されます。したがって、LoRAを動的に読み込むことはサポートされていません。ベースモデルの重みが変更されたため、LoRAのパッチは無効になります。
ただし、事前にLoRAをマージしてチェックポイントを保存することは可能です。チェックポイント作成時にはこの機能を無効化する必要があります。
fp16/bf16/scaled fp8モデルをサポートします。純粋なfp8/GGUFモデルはサポートしません。
Z-Imageについての注意:
すべてのオーバーフローは「安全に」処理できます。クランプは不要。結果は完全に同一です。
「重みの縮小」を有効にすると、オーバーフローは一切発生しません。
Lumina 2についての注意:
すべてのオーバーフローは「安全に」処理できます。クランプは不要。結果は完全に同一です。
「重みの縮小」を有効にすると、2層のみ再計算が必要です(合計30層)。
NewBieについての注意:
NewBieはfp16をサポートしていません。Lumina 2と同じです。作者がdiffusersでfp16をサポートしていると主張しているのは、コピー&ペーストの誤りかもしれません。
テキスト埋め込みはクランプが必要です。DiTに到達する前からオーバーフローしていますが、これは外れ値(0.01%)の可能性があります。テスト中は差異が見られなかったため、結果は依然として同一です。
「重みの縮小」を有効にすると、2層のみ再計算が必要です(合計40層)。

