ComfyUIでSeedを固定するには、KSamplerのseedに値を入れ、その下のcontrol_after_generateをfixedにします。ただしSeedが固定するのは最初のノイズだけで、model・sampler・解像度・ノードのどれかが変われば同じSeedでも別の画像になります。
情報確認日:2026年8月22日(日本時間)
結論:Seedはノイズの出発点であり、画像の保存番号ではない
責任範囲
- Seedが何を決めて、何を決めないか
- 現行UI(2026年8月時点)の
fixed/increment/decrement/randomizeの違い - 同じSeedなのに画像が変わる条件の一覧
- 一変数比較のために固定する項目のチェックリスト
- workflow JSONとPNGメタデータで再現条件を残す方法
- それでも完全一致しない場合の考え方
KSampler自体の役割や、最小workflowでの最初の生成手順はComfyUIの使い方で説明しています。Steps・CFG・Sampler・Schedulerそれぞれの意味は別記事で扱うため、この記事ではSeedと再現性に絞ります。
Seedは何を固定する値か
Seedは、KSamplerが生成の出発点として用意するランダムノイズの「作り方」を決める整数です。同じSeedなら同じノイズから始まる、というだけの値であり、画像そのものを指すIDではありません。
画像生成は、ノイズだけの潜在画像(Latent)から、modelが予測したノイズを何段階かで引いていく処理です。出発点のノイズが同じでも、引き算をするmodel、引き方を決めるsamplerとscheduler、引く回数のsteps、promptの効かせ方のCFGが一つでも違えば、着地点は変わります。Seedは「スタート地点を揃える」ための値で、ゴールまでの道筋は他の設定が決めます。
ソース上、KSamplerのseedは0から18446744073709551615(64bit整数の上限)までの範囲で、既定値は0です。値の大小や近さに意味はありません。
「同じSeed=同じ画像」と書かれている場合:公式ドキュメントのKSampler解説にも同じSeedは同一の画像を生成すると書かれていますが、これは他の全条件が同じ場合の話です。この記事の後半で扱う「変わる条件」が一つでも違えば成り立ちません。
固定・ランダム・増加の違い
KSamplerのseed欄の下には、生成後にSeedをどう扱うかを選ぶcontrol_after_generateがあります。現行のフロントエンド(Comfy-Org/ComfyUI_frontend、2026年8月時点)では次の4つです。
| 選択肢 | 生成後のSeed | 向いている場面 |
|---|---|---|
fixed |
変わらない | 設定を1つだけ変えて比較する。同じ画像を作り直す |
increment |
1ずつ増える | 連番で複数案を出し、後からSeed番号で特定したい |
decrement |
1ずつ減る | incrementの逆方向。用途は同じ |
randomize |
ランダムな値になる | 構図の当たりを探す。比較には使わない |
比較実験で使うのはfixedだけです。randomizeのままにしていると、設定を変えた効果なのか、Seedが変わった効果なのかを切り分けられません。
「生成後」に変わることに注意する
名前のとおり、既定ではSeedは生成が終わった後に更新されます。randomizeで気に入った画像が出たとき、画面に表示されているSeedはすでに次の値に変わっています。気に入った画像のSeedは、画像に埋め込まれたメタデータか、生成履歴(Queue)で確認してください。
設定画面には、この更新を生成前に行うか後に行うかを切り替える「Widget control mode」(before / after)があります。beforeにすると表示中のSeedが「これから使う値」ではなく「直前に使った値」の意味に変わるため、チームで同じworkflowを使うときはどちらに設定しているかを揃えてください。表示名や既定値は版で変わる可能性があるため、手元の設定画面で確認してください。
同じSeedでも画像が変わる条件
同じSeedを入れたのに違う画像になるときは、Seed以外のどれかが変わっています。思い当たらない場合は次の表を上から確認してください。
| 変わったもの | なぜ画像が変わるか | 確認方法 |
|---|---|---|
| checkpoint・VAE | ノイズの引き算をするmodelが別物になる。同名でも版違いは別model | ファイル名だけでなくsha256を比べる |
| LoRA・Embedding | modelとCLIPの重みが変わる。強度の違いも同じ | Load LoRAのlora_nameと強度、promptのembedding指定を比べる |
| sampler・scheduler・steps・CFG | 同じ出発点から別の道筋をたどる | KSamplerの全欄を比べる |
| 幅・高さ・batch_size | Latentの形が変わるため、生成されるノイズの配列そのものが変わる | Empty Latent Imageの値を比べる |
| prompt・negative prompt | conditioningが変わる。空白や句読点の違いも別のトークン列になり得る | テキストをdiffで比べる |
| 入力画像(img2imgやControlNet) | 出発点がノイズだけでなく画像を含むため、画像の差がそのまま出る | 画像ファイルのハッシュを比べる |
| ノード構成・custom node | 同じ見た目でも処理が違うノードに差し替わっている。custom nodeの更新も含む | workflow JSONをdiffで比べる |
| ComfyUI本体の版・GPU・ライブラリ | 計算の実装が変わると、同じ式でも浮動小数の結果がわずかに変わる | 起動ログの版表示と環境を記録する |
この表の最後の行だけは、設定を揃えても起きます。残りの行は「揃えたつもりで揃っていない」ケースで、特にmodelの版違いとworkflow内のノード差し替えは見落としやすい項目です。
複数LoRAを重ねている場合は、順序や強度も再現条件に含まれます。比較の組み方は複数LoRAの比較記事で扱っています。
比較実験で固定するもの
「何かを変えて効果を見る」実験では、変える項目を1つに絞り、残りをすべて固定します。固定漏れを防ぐためのチェックリストです。
control_after_generateをfixedにした- Seedの値を記録した(画面の値ではなく、生成に使われた値)
- checkpoint・VAE・LoRAのファイル名とsha256を記録した
- sampler・scheduler・steps・CFG・denoiseを記録した
- 幅・高さ・batch_sizeを固定した
- prompt・negative promptをテキストファイルで保存した
- 変える項目は1つだけで、変更前後の値を記録した
- 比較の前に、同条件で2回生成して同じ画像が出ることを確認した
最後の項目が、この記事で再現してほしい確認です。比較を始める前に、まず「同じ条件で2回出すと同じになる」環境かどうかを確かめます。
再現してほしい確認:同条件2回+CFGだけ変更
- 最小workflow(Load Checkpoint → CLIP Text Encode ×2 → Empty Latent Image → KSampler → VAE Decode → Save Image)で、Seedを任意の値に決め
fixedにする - 何も変えずに2回生成し、2枚の画像を比べる(目視に加え、ファイルのハッシュか差分画像で確認する)
- CFGだけを変えて(例:既定値の8.0から4.0へ)、もう1枚生成する
- 3枚を並べ、次の表に結果を記録する
| No. | 条件 | Seed | CFG | 1枚目との一致 | 気づいたこと |
|---|---|---|---|---|---|
| 1 | 基準 | (固定値) | 8.0 | — | |
| 2 | 1と完全同条件 | 同じ | 8.0 | 一致 / 微差 / 不一致 | |
| 3 | CFGだけ変更 | 同じ | 4.0 | — |
見るポイントは2つです。1と2が一致すれば、その環境では再現性が確保できています。微差が出るなら次の「完全再現できない場合」に該当し、比較は「ほぼ同じ」を前提に読みます。1と3では、構図や配置が大きく保たれたまま、promptへの忠実さやコントラストが変わる、というのがCFGだけを動かしたときに機構から予想される見え方です。構図まで別物になっているなら、CFG以外が変わっていないかをworkflow JSONのdiffで確認してください。
Workflowとメタデータを残す
再現に必要なのは、Seedの数字だけではありません。公式ドキュメントのとおり、workflowはJSONファイルとして保存でき、Save Imageなど組み込みの保存ノードを使うと出力画像の中にもworkflowが埋め込まれます。画像をキャンバスにドラッグすれば、その画像を作ったworkflowが復元されます。
ただし埋め込まれるのはノードと設定値で、modelファイルの中身までは入りません。同じ名前の別版をロードしていれば、workflowは同じでも画像は変わります。次の3点を1組で残してください。
- workflow JSON:メニューから保存したもの。diffで比較できるようにテキストのまま置く
- 出力PNG:Save Imageで保存した、メタデータ付きのもの。後から配布するときは、promptが埋め込まれている点に注意する
- 環境メモ:model名とsha256、ComfyUI本体とcustom nodeの版、GPUとOS
run_id: 2026-08-22-cfg-test
seed:
control_after_generate: fixed
checkpoint:
name:
sha256:
vae:
loras: []
sampler:
scheduler:
steps:
cfg:
denoise: 1.0
size:
prompt_file: prompts/cfg-test.txt
workflow_file: workflows/cfg-test.json
comfyui_version:
custom_nodes:
gpu:
notes:
PNGに埋め込まれたメタデータは、ComfyUI上でなくても読めます。Pythonならこの程度で確認できます。
from PIL import Image
import json
img = Image.open("ComfyUI_00001_.png")
meta = img.info # PNGのテキストチャンクが辞書で入る
for key, value in meta.items():
print(key)
try:
print(json.dumps(json.loads(value), ensure_ascii=False, indent=2)[:800])
except (TypeError, ValueError):
print(value)
どのキー名で何が入るかは版によって変わる可能性があるため、キーを決め打ちせず、上のように全キーを列挙して中身を確認してください。リサイズや再保存を挟むと、このメタデータは失われることがあります。
完全再現できない場合
全条件を揃えても、ピクセル単位で一致しないことがあります。これは設定ミスではなく、計算環境の差によるものです。
- GPUの種類やドライバ、PyTorchやCUDAの版が違うと、同じ演算でも丸め誤差の出方が変わる
- 同じ環境でも、高速化のために非決定的なアルゴリズムが選ばれる処理がある
- samplerによっては途中でノイズを追加するもの(名前に
ancestralやsdeを含むもの)があり、実装の違いが結果に出やすい
ComfyUIには起動オプション--deterministicがあります。ソース上のヘルプ文には、PyTorchに可能な範囲で低速な決定的アルゴリズムを使わせるが、すべてのケースで画像が決定的になるわけではない、と書かれています。つまり公式にも「完全一致は保証しない」という前提です。
実務上の割り切りは次のとおりです。同一マシン・同一環境では「同条件2回で一致する」ことを確認し、その環境内で比較します。別マシンで再現するときは、ピクセル一致ではなく「構図・配置・主要な特徴が同じ」ことを再現の基準にします。この基準を記録に書いておけば、後から見た人が「微差がある=失敗」と誤解しません。
微差と別物を区別する:構図が保たれたまま細部のノイズが違うなら環境差です。構図や人物の向きが変わっているなら、Seed以外の設定が変わっています。後者を環境差として片付けず、workflow JSONのdiffを取ってください。
よくある質問
気に入った画像のSeedを後から知るにはどうしますか?
保存したPNGをキャンバスにドラッグすると、生成時のworkflowとSeedが復元されます。randomizeで生成していた場合、画面に表示されているSeedはすでに次の値なので、画面の値を信用しないでください。
Seedを固定すれば、別のpromptでも同じ構図になりますか?
なりません。Seedが揃えるのは出発点のノイズだけで、promptが変わればconditioningが変わり、着地点も変わります。似た構図が出ることはありますが、保証される性質ではありません。
batch_sizeを2以上にしたとき、各画像のSeedはどうなりますか?
1回の生成で複数のLatentが作られ、表示されるSeedは先頭の1枚に対応します。個別の画像を後から1枚だけ再現したい場合は、batch_size 1で同じSeedから出し直したものと一致するか、手元の版で確認してください。挙動は実装の版に依存するため断定しません。
まとめ
Seedは出発点のノイズを揃える整数で、画像の保存番号ではありません。比較するときはcontrol_after_generateをfixedにし、model・sampler・解像度・prompt・ノード構成を揃え、変える項目を1つに絞ります。同じSeedで画像が変わったら、まずworkflow JSONのdiffとmodelのsha256を確認してください。
それでもピクセル単位で一致しないことはあり、公式の--deterministicも完全一致を保証していません。同条件2回の確認を先に済ませ、workflow JSON・メタデータ付きPNG・環境メモを1組で残すこと。これが再現性のために実際にできる範囲です。