ComfyUI の ModelSamplingAuraFlow とは何か
ModelSamplingAuraFlow は高解像度画像を生成する際に、ノイズが不足しないようにするノード。
中身は ModelSamplingSD3 ノードと同じ。詳細は SD3 論文の p. 10 Resolution-dependent shifting of timestep schedules を参照。
ノイズを増量することで画像にディティールを追加する使い方もできる。
論文の \(\sqrt{\frac{m}{n}}\) が shift で、3.0 と 6.0 が人間の評価が高かった。
shift 量の計算
shift 量はベース解像度との比で計算する。SD3 は 1,024px だが Qwen Image は 1,328。
Qwen で 2,048 の画像を生成する場合、n = ベースピクセル数、m = 生成ピクセル数なので sqrt(2048^2/1328^2) ≒ 1.54。ベース shift 量が3の場合、3 * 1.54 = 4.62 が shift 量になる。
ソース
class ModelSamplingAuraFlow(ModelSamplingSD3) はベースの ModelSamplingSD3 の patch を呼び出しているだけ。
ModelSamplingSD3 の patch の中身は comfy.model_sampling.ModelSamplingDiscreteFlow。
class ModelSamplingDiscreteFlow(torch.nn.Module) で shift が関係しているのは def sigma と def percent_to_sigma で、どちらも shift を time_snr_shift の alpha に入力している。
time_snr_shift の中身は以下のようになっている。
def time_snr_shift(alpha, t): if alpha == 1.0: return t return alpha * t / (1 + (alpha - 1) * t)