VAEEncodeTiled

(comfyanonymous/ComfyUI)
_for_testing/VAE Encode (Tiled)
pixel 画像を latent 画像に変換する (省メモリ版)

pixel 画像を latent 画像に変換します。img2img 等で使用します。

VAEEncode の省メモリ版にあたります。 互いにオーバーラップする小さなタイル単位で処理していくので、 メモリ (GPU の VRAM) 使用量が画像のサイズによらずほぼ一定です。 代わりに、画質劣化する他、処理時間が長くなる欠点があります。

画質劣化を抑える工夫として、1024x256 (ピクセル)、256x1024、512x512 の 3種類のタイルサイズでエンコード (オーバーラップ量はいずれも縦横 128 で共通) した結果を平均しています。 通常は大きな劣化はありませんが、2つの広い領域間で極端に色が違ったりすると劣化が目立つことがあります。

関連

使用例

まだ

メモリ消費量と実行時間の実測値

12GB の GeForce 3060 で、バッチサイズ 1 でてきとーに計測してみました (特に、小さい画像でのメモリ消費量はかなり不正確)。

(VAEEncode => VAEEncodeTiled の自動フォールバックが無い時代の結果です)
px * px \ VAEDecode VAEEncode VAEDecodeTiled VAEEncodeTiled
512 * 512 1.9GB, 0.5secs 1.0GB, 0.3secs 2.1GB, 2.1secs 1.0GB, 0.8secs
1024 * 512 3.5GB, 0.8secs 2.2GB, 0.5secs 2.1GB, 3.9secs 1.0GB, 1.4secs
1024 * 1024 7.2GB, 1.5secs 2.9GB, 0.9secs 2.1GB, 8.0secs 1.0GB, 2.7secs
1536 * 1024 10.6GB, 2.3secs 8.7GB, 1.4secs 2.1GB, 11.8secs 1.0GB, 3.9secs
1536 * 1536 11.2GB, 3.6secs 6.1GB, 2.3secs 2.1GB, 17.2secs 1.0GB, 5.6secs
2048 * 1536 11.0GB, 5.1secs 8.0GB, 3.4secs 2.1GB, 23.9secs 1.0GB, 7.5secs
2048 * 2048 11.1GB, 8.8secs 10.6GB, 5.6secs 2.1GB, 33.0secs 1.0GB, 10.2secs
3072 * 2048 OOM, 62.8secs 9.6GB, 11.1secs 2.1GB, 48.8secs 1.0GB, 15.0secs
2560 * 2560 OOM, 63.1secs ???, 12.1secs ???, ??? ???, ???
3072 * 3072 OOM, 107.2secs OOM, aborted 2.1GB, 72.4secs 1.0GB, 22.5secs
6144 * 4096 ???, ??? ???, ??? ???, 195.6secs ???, 62.1secs