メインコンテンツへスキップ
見出し画像

【ComfyUI】Anima-2.9Bで、既存Anima用LoRAを適用したり、既存Animaモデルとマージするノード(26.08.24更新)

    (26.08.24追記)Anima 3.8Bに対応しました

    Anima-2.9BでLoRA・モデルマージの互換性を補うカスタムノードを作りました

    Anima-2.9Bは、アニメ・イラスト特化の画像生成モデルであるAnimaを拡張し、より新しい知識(2026年7月時点)を取り込んだモデル、だそうです。
    従来のAnimaを土台に、パラメータ数を28億から29億へと増やし、内部の層(レイヤー)を28層から40層へと拡張して作られたモデルです。単に層を積み増したのではなく、既存の層と層の間に新しい層を挟み込む形で拡張されているようです。

    Anima-2.9Bで起きたこと

    LoRAを適用すると、意図しない、いやある意味意図した結果に

    従来Anima用に作られたLoRAをそのままAnima-2.9Bに適用すると、なんか変だったりします。適用しているLoRAに依ると思いますが、私の場合はなんとも味のある絵になりました。
    Anima-2.9Bでは間に新しい層が挿入されたことで、結果として本来意図していた層とは異なる層に適用されてしまうためと思います。

    モデルをマージすると、ノイズだけになる

    同様の理由で、従来Anima系のモデルとAnima-2.9Bを単純にマージすると、正しく重み付けされずノイズの出力になります。層の数も対応関係も異なるモデル同士を、番号だけを頼りに混ぜ合わせてしまうためと思います。

    作成したカスタムノード

    土台のAnimaの28層は凍結されているようなので層の対応関係のズレさえ補正すれば解決するのでは?ということで、ComfyUI用のカスタムノードパッケージ「ComfyUI-Anima29B-Remap」を作成しました。
    既に同機能のノードはあるかも?ですが、最近は探すより自分が使いやすい形のを作る方が早い、という考えになっています。
    Anima-2.9Bの配布元が層の拡張位置の情報が公式に公開されていたため、それをもとに正確な対応表を組み立てることができました。
    (気づく前に解析ツールを作ってしまいましたが結果は一致してました。)

    パッケージには、2つのノードが含まれています。

    Anima LoRA Tag Loader (Auto Remap)

    画像
    Anima LoRA Tag Loader (Auto Remap)

    <lora:名前:重み>のタグ構文でLoRAを読み込むノードです。

    接続されたモデルがAnima-2.9B(40層)で、適用しようとしているLoRAが従来Anima用(28層)だと判定された場合に、自動的にキーの対応関係を補正してから適用します。従来Animaに接続した場合は、これまで通りそのまま適用されるため、モデルによって使い分ける必要はありません。

    save_remappedをonにすると一度変換した結果は、元のLoRAと同じフォルダ内に保存(末尾に「_29Bremap」を付加)されるため、2回目以降は変換処理なしで読み込みます。

    (26.08.19更新)
    実験的に新規の12層にもLoRAを効かせたくなりました。
    expand_manifest.jsonには、新規層それぞれが初期化時にどの旧層をコピー元にしたかという情報(inserted_to_source)が含まれています。これを使用してコピー元の旧層のLoRA差分を、新規層にも適用する機能を追加してみました。

    ・extend_to_new_layersとextend_strengthを追加
    ・変換したLoRAを保存するsave_remappedのデフォルトをoffに変更
    (変換後のLoRAファイルがあるとそちらの読込みを優先してしまうので、設定値の変更が反映されません.調整後のLoRAを独立したファイルで保存したい時だけonにするのが妥当です.LoRA自体は数百テンソル程度の小さいファイルなので、remap処理(キー走査+テンソル乗算)自体は数十〜百ms程度です。)

    Anima LoRA Tag Loader Extended (Experimental)

    (26.08.21更新)
    旧28層のコピー元(前層)と隣接する後層の情報をブレンドして新規層へ適用する設定ができる実験的ノードを追加しました。blend ratio = 0.5で旧28層の前層と後層を情報元にして50%/50%でブレンドして新規層に適用します.

    画像
    Anima LoRA Tag Loader Extended (Experimental)


    Anima Model Merge (Auto Remap)

    画像
    Anima Model Merge (Auto Remap)

    2つのモデルをマージするためのノードです。混合比率を指定するだけで、以下のように自動で処理方法が切り替わります。

    • 従来Anima派生(28層)同士、または2.9B派生(40層)同士の場合 → そのまま通常通りマージ

    • (26.08.19更新) 片方が2.9B派生(40層)、片方が従来Anima派生(28層)の場合 → 対応関係を補正した上で、既存層をmerge_ratioでブレンド。extend_ratio (強度)で新規12層の値とブレンド。extend_ratio 0.0時は既存の層のみを指定比率でブレンド。新規12層については、2.9B側の情報がそのまま保持)

    Anima Model Merge Extended (Experimental)

    (26.08.21更新)
    旧28層のコピー元(前層)と隣接する後層の情報をブレンドして新規層へ適用する設定ができる実験的ノードを追加しました。blend ratio = 0.5で旧28層の前層と後層を情報元にして50%/50%でブレンドして新規層に適用します.

    画像
    Anima Model Merge Extended (Experimental)


    画像
    Anima Base v1.0 + 従来LoRA
    画像
    Anima-2.9B + 従来LoRA
    画像
    Anima-2.9B + 従来LoRA(Remap後)
    画像
    Model Merge 0.0/extend 0.0/blend 0.0,0.2/0.2/0.0,0.4/0.4/0.0,0.5/0.5/0.0,0.6/0.6/0.0

    使い方

    (26.08.24) Anima 3.8Bまで対応させたComfyUI-Anima-Remapを公開しました。

    インストールは、ComfyUI Managerのカスタムノード検索から「Anima-2.9B Remap」を探していただくか、以下のコマンドでも行えます。
    インストールは、ComfyUI/custom_nodes/フォルダで以下のコマンドを実行してください。

    git clone https://github.com/shin131002/ComfyUI-Anima-Remap

    導入後は、ノード検索で「Anima」と入力すれば、上記4つのノードが見つかります。プロンプトの書き方やモデルの接続方法は、これまでのワークフローと同じです。

    より詳しい仕組みや使用方法については、GitHubリポジトリのREADMEにまとめてありますので、そちらもあわせてご覧ください。

    (26.08.23追記)
    ランダムでLoRAを適用する2ノードを追加してみました。

    おわりに

    Anima-2.9Bはまだプレビュー版であり、今後さらに発展していくのか?いかないのか?。現時点では従来28層Anima用のLoRA資産を活かしながら新しいモデルで遊んでみよう、という考えで作成してみました。


     
     
    趣味で画像生成をぼちぼちやってます。 自分用に作成したComfyUI用のカスタムノードやツールについてたまに記事にまとめています。

    あなたへのおすすめ