AI活用

ComfyUIのPartial Executionとは|必要な分岐だけ実行して検証を速くする

ComfyUIのPartial Executionは、選んだ出力ノードに必要な依存ノードだけを実行する機能です。選択ツールボックスの青い三角形からの使い方、途中Previewを置く検証設計、2分岐で片方だけ実行する例、キャッシュと再計算の観察、LoRA強度やDenoiseの一変数比較への応用、GPU高速化ではない点を解説します。

この記事の目次
  1. 結論:「出力ノードを1つ選んで、その枝だけ回す」が Partial Execution
  2. Partial Executionでできること
  3. 実行対象をどう決めるか
  4. 分岐Workflowで一部だけ実行する
  5. 全実行と部分実行を比べる記録表
  6. キャッシュと再計算の関係
  7. パラメータを変えたときに再計算される範囲
  8. 比較検証に使う
  9. 誤解しやすい注意点
  10. よくある質問
  11. Selection Toolboxに青い三角形のアイコンが出ません
  12. 部分実行した枝の画像は保存されますか
  13. 部分実行と全実行で同じ枝の結果は一致しますか
  14. まとめ

Partial Executionは、選択した出力ノード(Save ImageやPreview Imageなど)に必要な上流ノードだけを実行し、Workflowの残りの分岐を動かさない機能です。実行するノードの数を減らして検証の待ち時間を短くするもので、GPUの計算そのものが速くなるわけではありません。

情報確認日:2026年8月22日(日本時間)

結論:「出力ノードを1つ選んで、その枝だけ回す」が Partial Execution

責任範囲

  • Partial Executionが何を実行し、何を実行しないかを依存関係から説明する
  • 途中にPreviewを置くなど、一部だけ実行しやすいWorkflowの設計を示す
  • 2出力のWorkflowで片方だけを実行する手順と、全実行との比較記録表を示す
  • キャッシュによる再計算の省略と、Partial Executionの違いを整理する
  • VRAMの最適化やGPU処理の高速化そのものは扱わない

この記事のUI名称は、docs.comfy.orgのPartial Execution解説(2026年8月時点)に基づきます。同ページではfrontendのversionが1.23.4より後、場合によっては1.24.x系が必要と案内されているため、手元の画面にボタンが出ないときは先にfrontendのversionを確認してください。

スポンサーリンク

Partial Executionでできること

ComfyUIは、Workflow全体を順番に実行しているのではなく、「出力ノード」から上流にさかのぼって必要なノードを集め、それだけを実行しています。ソース(execution.py)では、OUTPUT_NODE属性を持つノードが実行の起点で、通常の実行ではWorkflow内の出力ノードすべてが起点になります。Partial Executionは、この起点を「選択した出力ノードだけ」に絞る機能です。

Load Checkpoint ─┬─→ CLIP Text Encode ─┐
                 │                      ├─→ KSampler (A: LoRAなし) ─→ VAE Decode ─→ Save Image (A)
                 │                      │
                 └─→ Load LoRA ─→ ...   └─→ KSampler (B: LoRAあり) ─→ VAE Decode ─→ Save Image (B)

通常の実行        : Save Image (A) と (B) の両方が起点 → 両方の枝を実行
Partial Execution : Save Image (B) だけを選んで実行 → Bの枝と共通部分だけを実行、Aの枝は実行しない

公式解説の表現では「開始ノードから出力ノードまでのWorkflowの枝だけを実行する」機能です。server側のAPIでは、/promptに送るJSONのpartial_execution_targetsに出力ノードのIDを入れると、validate_promptがその一覧にある出力ノードだけを起点にします。frontendのボタンは、この指定をUIから行う入口です。

項目 通常の実行(Queue) Partial Execution
実行の起点 Workflow内のすべての出力ノード 選択した出力ノードだけ
実行されるノード 全出力ノードの上流すべて 選択した出力ノードの上流だけ
出力ノードでないノードを選んだとき 対象にならない(ボタンが出ない)
キャッシュ 有効 有効(変わっていないノードは省略される)
1ノードあたりの処理速度 同じ 同じ

実行対象をどう決めるか

Partial Executionの対象にできるのは出力ノードだけです。公式解説でも「選択中のノードはPreviewやSaveのような出力ノードである必要がある」と明記されています。KSamplerやVAE Decodeを選んでも、その途中までを実行する操作はできません。

そのため、一部だけ検証したいWorkflowは「検証したい地点に出力ノードを置く」設計にしておきます。最も使いやすいのがPreview Imageで、fileを保存せずに結果を見られます。

  • 分岐ごとに、末端のSave Imageとは別にPreview Imageを1つ置く
  • 前処理(ControlNetのpreprocessor、upscale前の画像など)の直後にもPreview Imageを置く
  • 最終出力のSave Imageは、採用が決まってから実行する
  • Preview Imageを選んだときにだけ実行される枝が、意図した範囲と一致しているかを線で追う

Previewノードを多く置いても、選ばなければ実行されないため負担にはなりません。「Workflow全体を回して最後の1枚を見る」から「見たい地点のPreviewだけを回す」に、実行の単位を変えるのがこの機能の使い方です。

分岐Workflowで一部だけ実行する

手順は、出力ノードを選ぶ → Selection Toolboxに現れるアイコンを押す、の2つです。公式解説では、出力ノードを選択するとtoolboxに青い三角形のアイコンが表示され、それを押すと部分実行が始まる、と説明されています。

  1. 冒頭の図のように、共通部分(Load Checkpoint・CLIP Text Encode)から2つのKSamplerに分岐し、それぞれSave Image (A) / (B) で終わるWorkflowを作る
  2. まず通常のQueue(Ctrl + Enter)で全実行し、コンソールの「Prompt executed in X seconds」を記録する
  3. B側のSave Image (B) をクリックして選択し、Selection Toolboxの青い三角形のアイコンを押す
  4. コンソールで、どのノードが実行され、どのノードがスキップされたかと、所要時間を記録する
  5. Save Image (A) だけを選んで同じことを行う

所要時間の文字列はmain.pyで「Prompt executed in {:.2f} seconds」(600秒を超えるときはHH:MM:SS形式)と定義されています。実行されたノードは、実行中に各ノードの枠が順に光ることと、コンソールの出力から確認できます。

全実行と部分実行を比べる記録表

この記事で再現してほしい比較です。結果は環境とWorkflowで変わるため、数値は書きません。

実行方法 選んだ出力ノード 実行されたノード数 所要時間(秒) A側の画像 B側の画像
全実行(1回目) 生成された 生成された
部分実行 Save Image (B)
部分実行 Save Image (A)
全実行(2回目・無変更)

見るべき点は「実行されたノード数」です。部分実行でBを選んだときにA側のKSamplerが動いていなければ、機能は期待どおりに働いています。所要時間は、実行されなかったKSamplerのサンプリング時間の分だけ短くなるはずで、それ以上には縮みません。最後の行(無変更で2回目の全実行)は、次節のキャッシュの働きを見るためのものです。

選択したノードが出力ノードでない場合、アイコンは表示されません。Selection Toolboxが見当たらない、アイコンの形が違う、という場合はfrontendのversionが古い可能性があります。表示名やアイコンは更新で変わるため、公式ドキュメントで最新の名称を確認してください。

キャッシュと再計算の関係

Partial Executionと混同しやすいのが、ComfyUIが元々持っている出力キャッシュです。READMEには「前回の実行から変わった部分だけが実行され、同じグラフを2回送ると1回目だけが実行される」とあります。これは各ノードの出力を保持し、入力が変わっていないノードの再計算を飛ばす仕組みで、Partial Executionとは独立に働きます。

仕組み 省略するもの 効く条件
出力キャッシュ 入力が前回と同じノードの再計算 直前の実行結果が残っている。設定値や上流を変えたノードから下流は再計算される
Partial Execution 選択した出力ノードに関係ない枝の実行 出力ノードを選んで実行したとき。関係ない枝は初回でも実行されない

キャッシュの方式は起動オプションで選べます。comfy/cli_args.pyには、RAMの空きに応じて保持量を決める--cache-ram(既定)、従来の積極的なキャッシュ--cache-classic、件数上限付きの--cache-lru N、毎回すべてのノードを実行する--cache-noneが定義されています。--cache-noneで起動すると、上の記録表の「無変更で2回目」も全ノードが再実行されるはずで、キャッシュの効果を切り分けて観察できます。

パラメータを変えたときに再計算される範囲

KSamplerのCFGだけを変えて再実行すると、再計算されるのはKSamplerとその下流(VAE Decode・Save Image)だけで、Load CheckpointやCLIP Text Encodeはキャッシュから再利用されます。実行中にどのノードの枠が光るかを見れば、再計算の範囲が分かります。promptを変えるとCLIP Text Encodeから下流が、checkpointを変えるとほぼ全体が再計算されます。

この「変えた地点から下流だけ」という性質と、Partial Executionの「選んだ枝だけ」を組み合わせると、検証1回あたりの実行範囲を最小にできます。

比較検証に使う

一変数比較では、同じ上流を共有し、比較したい設定だけが違う枝を並べたWorkflowが便利です。たとえばLoad LoRAのstrengthを4段階比べるなら、Load Checkpointの後に4本のLoad LoRA → KSampler → VAE Decode → Preview Imageを並べ、seedとpromptは共通にします。

  • 1本ずつPreview Imageを選んでPartial Executionすれば、気になる枝だけを先に見られる
  • 4本すべてを見たいときは通常のQueueで全実行する。共通部分はキャッシュで1回しか計算されない
  • 1本の設定を直して再実行すると、その枝のKSampler以降だけが再計算される

比較の前提になるseedの固定と「同じseedでも変わる条件」はComfyUIでSeedを固定する方法、Steps・CFG・Denoiseを1つずつ動かす考え方はComfyUIのKSamplerを理解するで扱っています。Partial Executionは、それらの比較を「待ち時間を短くして回す」ための道具であり、比較の設計そのものは変わりません。

枝を並べた比較Workflowでは、各枝のKSamplerのseedが本当に同じ値でfixedになっているかを実行前に確認してください。枝をコピーして作ると、control_after_generaterandomizeのまま残り、部分実行のたびに別のseedで生成されることがあります。

誤解しやすい注意点

Partial Executionは「実行しないノードを増やす」機能で、「実行するノードを速くする」機能ではありません。次の点は、この機能では解決しません。

期待 実際
1枚の生成が速くなる ならない。選んだ枝のKSamplerは通常と同じ時間がかかる
VRAM使用量が減る 実行しない枝のmodelは読み込まれないことがあるが、VRAM最適化の機能ではない。不足の対処は別記事で扱う
途中のノードまで実行できる できない。出力ノードを選ぶ必要があるため、途中で止めたい地点にPreview Imageを置く
選んだ枝以外はキャッシュも消える 消えない。実行されなかった枝のキャッシュは残り、次に全実行したときに再利用される
APIからも同じことができる できる。/promptpartial_execution_targetsに出力ノードのIDを渡す

生成速度そのものの計測や、GPU・設定による速度差の比較は別記事で扱います。Partial Executionで短くなるのは「実行されなかったノードの分」だけ、と覚えておけば、効果を過大にも過小にも見積もらずに済みます。

よくある質問

Selection Toolboxに青い三角形のアイコンが出ません

選択しているノードが出力ノード(Save Image・Preview Imageなど)でないか、frontendのversionが古い可能性があります。Settings > Aboutでfrontendのversionを確認し、公式解説にある1.23.4より後(場合によっては1.24.x)を満たしているか見てください。

部分実行した枝の画像は保存されますか

選んだ出力ノードがSave Imageなら保存され、Preview Imageなら保存されません。検証段階ではPreview Image、採用が決まったらSave Imageを選ぶ、と使い分けます。

部分実行と全実行で同じ枝の結果は一致しますか

seedを含む設定が同じなら同じ計算が行われます。一致しない場合は、seedがrandomizeになっていないか、キャッシュの差ではなく設定の差がないかを先に確認してください。

まとめ

Partial Executionは、選択した出力ノードに必要な上流だけを実行する機能です。Workflowの検証したい地点にPreview Imageを置き、そのノードを選んでSelection Toolboxのアイコンを押せば、関係ない枝を動かさずに結果を見られます。

出力キャッシュ(変わっていないノードの再計算を省く)と組み合わせると、1回の検証で実行される範囲を最小にできます。ただし1ノードあたりの速度は変わらないため、短くなるのは実行されなかったノードの分だけです。2分岐Workflowで全実行と部分実行のノード数・所要時間を一度記録しておくと、自分の環境での効き方が具体的に分かります。

スポンサーリンク