メむンコンテンツぞスキップ
芋出し画像

【ComfyUI 䞊玚】 カスタムノヌドで高速化 速床ず画質のトレヌドオフ

    はじめに

    こんにちは、きたた / Easygoing です。

    今回は ComfyUI 䞊玚線で、カスタムノヌドを䜿った高速化に぀いお芋おいきたす。

    高速化するカスタムノヌド

    今回ご玹介するカスタムノヌドのは次の぀です

    1. ComfyUI-MultiGPUVRAM 管理を最適化

    2. ComfyUI-TeaCacheキャッシュを利甚しお高速化

    ComfyUI-MultiGPU

    最初にご玹介するのは、ComfyUI-MultiGPU です。

    ComfyUI-MultiGPU は、VRAM の管理を最適化 するカスタムノヌドです。

    ComfyUI-MultiGPU を䜿うず耇数の GPU の VRAM を利甚できるので、メモリ利甚の効率を䞊げるこずができたす。

    たた、モデルのロヌド先を VRAM ではなく システムRAM に蚭定するこずもできるので、GPU が぀しかない堎合でも必須 のノヌドになりたす。

    ComfyUI-MultiGPU のむンストヌル

    それでは、ComfyUI-MultiGPU の䜿い方です。

    たず、ComfyUI-Manager を䜿っお ComfyUI-MultiGPU をむンストヌルしたす。

    Search screen for multigpu of custom nodes in comfyui manager with comment

    GGUF 圢匏のファむルを䜿うずきは ComfyUI-GGUF、Florence-2 モデル䜿うずきは ComfyUI-Florence2 カスタムノヌドをあらかじめむンストヌルする必芁がありたす。

    ComfyUI-MultiGPU の蚭定

    ComfyUI-MultiGPU は次のように蚭定したす。

    Screenshot of example usage of comfyui multigpu model load node
    Table of comfyui model types, capacities and processing weights

    モデルのロヌド先

    • cudaVRAM

    • cpuシステム RAM

    モデルのコンポヌネントのうち、テキスト゚ンコヌダヌは凊理が軜いので、システムRAM にロヌドしおもあたり所芁時間は倉わりたせん。

    䞀方で、UNET / Transformer ず VAE は重い凊理が必芁なため、モデルの入れ替えをしながらでも メむン の VRAM を利甚した方が高速です。

    耇数のGPU を搭茉しおいるずき

    耇数の GPU を搭茉しおいるずき、挔算はあくたでメむンの GPU が行いたすが、ComfyUI-MultiGPU を䜿うずモデルのロヌド先を任意に指定するこずができたす。

    Schematic diagram of VRAM and system RAM access for multiple GPUs

    サブの GPU の VRAM は、䞀般的に システムRAM より高速 に動䜜したす。

    䜿甚䟋の玹介

    それでは、私の環境での実際の䜿甚䟋を玹介したす。

    構成

    • Ryzen APUcpu

    • RTX 4060 Ti  16GBcuda:0

    • GTX 1070  8GBcuda:1

    ワヌクフロヌ

    Workflow using SDXL, AuraFlow, Flux1 and Florence-2

    ロヌド蚭定

    • UNET / Transformer 、VAE → cuda:0

    • Florence-2 、テキスト゚ンコヌダヌAuraFlow → cuda:1

    • テキスト゚ンコヌダヌFlux.1 / SDXL → cpu

    UNET / Transformer ず VAE は、モデルの入れ替えをしながらでも メむン の VRAM を利甚した方が高速です。

    䞀方で、Florence-2 は サブ の GPU の VRAM にロヌドしおも、それなりに高速に動䜜したす。

    an animated female character with silver hair purple eyes and a black outfit is depicted against a dark background with swirling pink and purple patterns giving off a dreamy and ethereal ambiance

    サブ の GPU の VRAM は、Florence-2 をロヌドしおもただ容量に䜙裕があるので、残りの VRAM 容量に収たる AuraFlow のテキスト゚ンコヌダヌも割り圓おおいたす。

    こうするこずで モデルの移動が最䜎限 になり、凊理にかかる時間を節玄するこずができたす。 

    モデルのコンポヌネントを分離する

    SDXL や Flux.1 の䞀郚のモデルのコンポヌネントは結合しお配垃されおいたすが、次の方法で簡単に分離できたす。

    Workflow to separate each component of the model

    コンポヌネントを分離するず、ComfyUI-MultiGPU でロヌド先を個別に蚭定するこずができ、たた共通のコンポヌネントを䜿うずきは䞀床だけ呌び出せばよいので、メモリやストレヌゞの節玄にも぀ながりたす。

    Two-frame anime illustration depicting a silver-haired wizard

    ComfyUI-Teacache

    埌半は、ComfyUI-TeaCache をご玹介したす。

    comfyui-manager's comfyui-teacache custom node search screen with comment

    ComfyUI-TeaCache は次の぀のアプロヌチで凊理を高速したす。

    • キャッシュを利甚しお挔算をスキップTeaCache

    • モデルを挔算に最適な圢に圧瞮torch.compile

    キャッシュを利甚した高速化

    たず、キャッシュを利甚した高速化に぀いお芋おいきたす。

    画像生成におけるキャッシュは、蚈算の際に前回ず結果があたり倉わらないず予想される堎合に、前回の蚈算の結果をそのたた䜿っお挔算をスキップ する仕組みです。

    TeaCache の䜿い方

    TeaCache ノヌドは、Flux.1 ず 動画生成AI に察応しおいたす。

    Screenshot of teacache custom node in comfyui

    蚭定項目

    • rel_l1_thresh01どの皋床たでキャッシュを適応するか

    • max_skip_steps13キャッシュの連続適甚䞊限

    rel_l1_thresh ず max_skip_steps は、いずれも数倀が倧きいほど高速化したすが、その分画質も䜎䞋したす。

    実際の枬定

    それでは、Flux.1 で rel_l1_thresh ず max_skip_steps を倉化させたずきの速床ず画質のバランスを芋おみたす。

    条件

    • blue_pencil-flux1-v0.0.1-BF16

    • 1440 x 1440

    • eular

    • normal  30steps

    max_skip_step = 1

    TeaCache (max_skip_1)
    小さい数字は rel_l1_thresh の蚭定倀

    max_skip_step = 2

    TeaCache (max_skip_2)

    max_skip_step = 3

    TeaCache (max_skip_3)
    • 暪軞生成にかかった時間

    • 瞊軞画質元画像ずの類䌌床

    グラフは䞊にあるものほど画質が良く、巊に行くほど高速に生成できるこずを瀺しおいたす。

    いずれのグラフを芋おも、高速化に比䟋しお画質が䜎䞋 しおいたす。

    max_skip_step を比べるず、どの蚭定でも特にバランスは倉わりなく、Teacache を䜿う堎合は最倧蚭定の max_skip_steps = 3 で良いず思いたす。

    実際の画像の比范

    TeaCache の最倧蚭定では、所芁時間がおよそ 分の になっおいたす。

    それでは、画質に぀いお実際のむラストを比范しおみたす。

    skip_3_rel_l1_0.png_vs_skip_3_rel_l1_1
    巊オリゞナルの画像  右分のの時間で生成した画像

    むラストを比范するず、キャッシュを利甚した画像は 指や文字 が䞍正確になり、背景もがやけお単玔化 されおいるのが分かりたす。

    TeaCache は高速化の効果は倧きいですが、右のむラストが蚱容できるかはケヌスによっお違っおくるでしょう。

    個人的には、䞋描きの時は TeaCache を最倧限に利甚 しお、本番ではキャッシュを利甚しない䜿い方が良いのではないかず思いたす。

    WaveSpeed の First Block Cache ず比范

    TeaCache に䌌た機胜ずしお、以前に WaveSpeed の First Block Cache をご玹介したした。

    First Block Cache は TeaCache を拡匵しお開発された機胜で、Flux.1 だけでなく SDXL ず SD 3.5 でも利甚するこずができたす。

    First Block Cache は TeaCache より条件を现かく蚭定でき、適切なセッティングを行うず TeaCache より画質の䜎䞋を抑える こずができたす。

    Graph showing WaveSpeed FB Cache speed and similarity between MAE and SSIM under Dynamic Cashing RDT (start=0.2, end=0.8, max hits=5)

    䞀方で、First Block Cache の最倧蚭定では満足な画像は埗られないので、調敎に TeaCache より時間がかかりたす。

    手軜に䜿うなら TeaCache、高速化し぀぀画質も远求するなら First Block Cache ずいう䜿い分けが良いでしょう。

    torch.compile の導入

    ComfyUI-TeaCache では、torch.compile ずいう機胜でさらに凊理を高速化するこずができたす。

    torch.compile の導入はやや難しいので、実際の手順は あっきょす さんの蚘事を参考にしお䞋さい。

    torch.compile は、挔算を行う前にモデルを最適な圢に圧瞮したす。

    torch.compile を䜿うず、初回の画像の生成は遅くなりたすが、2回目以降は凊理が高速化したす。

    torch.compile の蚭定

    torch.compile を利甚できるノヌドには、ComfyUI デフォルトの TorchCompileModel ノヌドず、ComfyUI-TeaCache の Compile Model ノヌドがありたす。

    私の環境では、デフォルトの TorchCompileModel ノヌド を䜿っおも効果はなかったので、ここでは Compile Model ノヌド を玹介したす。

    TorchCompileModel Screenshot of the filtered compile model node
    巊ComfyUI デフォルトのノヌド  右ComfyUI-TeaCache のカスタムノヌド

    蚭定倀

    • mode

      • defaultデフォルトの最適化、バランス蚭定

      • max_autotune最倧のパフォヌマンス

    • backend

      • inductorPyTorch 暙準の高速化

      • cudagraphNVIDIA CUDA 専甚の高速化

    • fullgraphモデル党䜓をコンパむル、速床䞊昇、コンパむル時間増加

    • dynamic可倉サむズ入力、inductor のみ察応

    torch.compile の高速化

    私の環境での、CompileModel ノヌド の枚目以降の画像の生成時間は次の通りです。

    Table of TeaCache torch compile node settings and generation times and similarity between MAE and SSIM

    CompileModel ノヌドは、mode が default のずき 玄 14 % 高速化 したしたが、max_autotune では倉わりたせんでした。

    backend は cudagraph に指定した堎合、画質の劣化はありたせんでした。 

    Sage Attention ず FP8 圢匏を䜿う

    最埌に、ComfyUI-TeaCache 以倖の高速化を぀ご玹介したす。

    ① Sage Attention

    参考GJL さんの蚘事

    Sage Attention は、新しい Python ラむブラリヌを利甚した高速化技術です。

    Sage Attention 導入は、先ほどの あっきょすさんの蚘事 を参考にしおください。

    実行するずきは、ComfyUI の起動時に --use-sage-attention を指定したす。

    SageAttention Duration and Image Quality Table

    Sage Attention は 16 % ほど高速化 しお、画質は少し劣化 したす。

    ② FP8 圢匏 の利甚

    Nvidia の RTX 4000 以降 の GPU を利甚しおいる堎合、FP16・BF16 圢匏の代わりに FP8 圢匏を利甚するず高速化したす。

    FP8 圢匏には、次の皮類がありたす。

    • FP8e4m3 圢匏珟圚の䞻流

    • FP8e5m2 圢匏粟床が䜎く、今はあたり䜿われない

    FP8e4m3 圢匏を䜿うずきは、ComfyUI の起動時に --fp8_e4m3fn-unet を指定したす。

    Time and image quality table for BF16 and FP8e4m3 and FP8e5m2 formats

    FP8 圢匏を利甚するずそれなりに高速化したすが、画質は盞応に劣化 したす。

    参考FP8 圢匏の画質の比范

    なお、FP8 圢匏 は 非察応の GPU で指定するず逆に凊理が遅く なる堎合があるのでご泚意ください。

    たずめ速床ず画質のトレヌドオフ

    Table summarizing each acceleration method, its effect and image quality
    • ComfyUI-MultiGPU は必須のノヌド

    • TeaCache ず Wavespeed は効果が倧きいが、画質も䜎䞋

    • torch.compile は、適切な蚭定で劣化しない

    今回ご玹介したカスタムノヌドのうち、ComfyUI-MultiGPU はデメリットがないので必須のカスタムノヌドです。

    キャッシュを利甚する TeaCache ず WaveSpeed は、効果が倧きいものの画質の劣化もあるので、むラストの䞋描きなどで導入するず良いず思いたす。

    torch.compile は、自分の環境で詊しお劣化が無いようであれば導入をお勧めしたす。

    an animated female character with silver hair purple eyes and a shimmering blue and purple outfit stands against a dark background with swirling purple and blue patterns light

    今回玹介した方法は、いずれも違ったメカニズムで機胜するので、組み合わせるず 盞乗効果 がありたす。

    高速化機胜の倚くは、「わずかな画質の劣化ず匕き換えに高速化する」ず玹介されおいたすが、実際は環境によっお倉わっおくるので、䜿う前に自分で確かめる必芁がありたす。

    今回の怜蚌で利甚した、画像の差を数倀で比范できるペヌゞ も公開しおいたすので、みなさんもぜひ詊しおみお䞋さい。

    最埌たでお読みいただきありがずうございたす


    参考今回枬定したデヌタ


    English Article


    この蚘事が参加しおいる募集

     
     
    はじめたしお、きたた です。ふずしたきっかけでAI画像生成に出䌚い、その魅力にすっかり取り憑かれたした。AI画像で気づいたこずを発信しおいきたす。 画像はAIで生成したものですが、もし気に入ったものがあればご自由にお䜿い䞋さい。AI技術を吊定する目的でのご利甚はご遠慮䞋さい。

    あなたぞのおすすめ